https://github.com/sunnyone/metal-git
リリースにUbuntu 14.04でビルドしたバイナリが置いてありますが、おまけレベルです。
言語はRust。以前にチュートリアルっぽいものを書いたgtk-rsと、libgit2のラッパーであるgit2-rsを使って書いています。最初はコマンドのラッパーで行こうかなと思ったけど、今にして思うとgit2-rsの手助けがあって本当によかった。
Rustはまだまだ慣れてないので、ここはこうするとすっきり行くみたいなのは、細かいところでも教えてもらえるとうれしいです(ただマクロは控えられるところは控えようかなと思っていますが)。
もうちょっとそこそこ使えるようになってから公開しようかなとも思いましたが、まぁコミットの部分はとりあえず使えるようになったので書き始めたということで出そうかなと。無駄なコードが多いので結構恥ずかしいのだけど。
一応gtk-rsもgit2-rsのどちらもmingwでビルドできるみたいなことは見たので、Windowsでもビルドできるかもしれませんが、とりあえず当面は考えない方向でいきます。
ひとまずMetal Gitという名前にしました。良い名前があれば変えるかもしれません。
---
今のソースの規模はこんな感じ。モデルの分離もうまくできていないし、もう少し分割したい。
metal-git/src$ wc -l *.rs 621 commit_window.rs 81 gobject_utils.rs 70 gtk_utils.rs 166 history_window.rs 40 main.rs 337 railway.rs 29 repository_manager.rs 16 static_resource.rs 241 station_cell_renderer.rs 98 station_renderer.rs 107 station_wrapper.rs 62 window_manager.rs
作り始めたのはこれがきっかけなので、なんやかんやもう3ヶ月。長かったなぁ。
WindowsならGit Extensionsで十分なんだけど、Linuxで使ってたgitgの新しいUIがまじで使いにくくなっててどうするか迷っている
— sunnyone (@_sunnyone) 2016年3月12日
選択肢としては、1) Git Extensionsがもうちょっと安定して使えるようにMonoのWinforms実装を改善する 2) 古いgitgをforkして暮らす 3) 自分でGitフロントエンドを作る
— sunnyone (@_sunnyone) 2016年3月12日