AIにgitのグラフを表示できるプログラムを作ってもらった(前回)。そのまま要りそうな機能を追加していっている。思い付きで機能を追加しているのでUIがいまいち分かりにくい。
とりあえずは忘れないうちに取説代わりに機能を書いておく。
windows対応
linux用に作ってはいるが、pythonなのでwindowsでも動いた。ついでにpyinstallerでwindowsバイナリも作っておいた。別途graphvizをダウンロードして入れる必要がある。レジストリに設定しておけばフォルダ右クリックコンテキストメニューから起動できる。
windowsで動かすと、gitはlinuxで使う方が圧倒的に早い事が分かる。
グラフとログ
クリックしたノードのログが出る。デフォルトではマージはグラフにならない。あくまでもブランチ間の関係を示すグラフ。
マージがどこから来ているのかは一応右ペインには表示される。でかいプロジェクトだと線だらけになってわけがわからないし幅をとる。なので遠いマージは省略して、クリックしたときだけ出るようにした。(苦肉の策)
デフォルトではマージは線になってないので、右のコミットをクリックしても左の図には対応するものがない場合がある。その場合は、図ではマージ元のブランチを示す。(ときもある。現状適当)
上図のようにマージもグラフに出るように切り替えできるが、ある程度でかいプロジェクトだと図が異常にでかくなってgraphvizが死ぬ。仕方ないのでgraphvizが死なない程度の大きさになるように年とか日とかの単位でまとめるようにしている。(クリックしたら中身は展開される。代わりにどこかが閉じられる)
グラフに表示したければブランチを作る。
undo / redo
ブランチ削除とかリベースとかをした後、undoできる。やってみるとまあまあ出来るが、過信は禁物。リモートブランチの操作はundoできない。ローカル変更だけundoできる。
AB操作
ブランチを2つ選んでいろいろできるようにした。が、何がどうだったかわからなくなる機能がいくつかある。UIと名前の付け方が悪いんだと思う。
ドラッグアンドドロップか、2つ目をctrlクリックで選べる。右クリックでも選べる。マージコミットが混ざっていると操作がうまく行かない場合が有るらしい。
AB操作/ABログ比較
ログを二つ並べてどこまで一緒か見る。遅くなるのでコミットのコメントで比較してから内容を比較するようにしていたはず。なので、中身が同じでもコメントが違ったら違うもの扱いのはず。AB操作/A..HEADをBにリベース
単にBにリベースすると分岐からAまでの変更が衝突するとき用のリベース。1つくらいなら別に対話的リベースしてもいいけど、いくつもあったときに、面倒だったので入れた。filter-branchとかで書き換えて移動したいブランチが大量にできたときに使う。
AB操作/A..末端をBにリベース
上記のようなリベースしないといけないものがたくさんあったときに面倒になって入れた。囲ってあるが青で示したリモートブランチは移動しない。filter-branchとかで書き換えて移動したいブランチが大量にできたときに使う。
AB操作/AをB側へ寄せる
filter-branchとかでAとBでほとんど同じログなのに別系統のログになってしまった時、Bの中から共通の親を探して、そこにAを付け替える。
AB操作/AとBで同じ親を探す
上記AをB側へ寄せる一歩前の、付け替える共通の親を探すまでの処理
Bの中からAに近いものを探す
「AをB側へ寄せる」の処理をするときに、どれに寄せるか探すために入れた。探したい分岐の根本をBに指定すると、その子を探して、一番長くAと一致するものを探すはず。そこで見つけたBへ寄せる。
まとめ
結局なんだったのかというと、filter-branchを迂闊に使うとぐちゃぐちゃになってしまうので、変なものを作る羽目になるという話であった。
claudeやらgithub copilotやらcodexやらgrokやらgeminiやらperplexityやら、あらゆるAIの無料枠を2週間つぎ込んでしまった。プログラムも大きくなってきてしまい、割とすぐにトークンが尽きてしまう状態になった。これ以上大きいプログラムだと、無料では工夫しないとしんどいかもしれない。(待てばいいだけだが)
無料枠で使える度で比較すると、個人的には以下の順。使い方の問題もあると思う。
claude >= github copilot > grok > codex > gemini > perplexity
- claude: コーディング性能は一番いいような気がする。ほぼほぼ致命的なバグは入らないので何も確認せずいきなりpushしている。ただし割とすぐトークンが尽きる。無料だとCLIも使えないしgithubにpushもできない?が、5時間くらいで回復するので良。指示を投げておいて、トークンが尽きたら5時間後に「続ける」を押すだけの作業で割とやれる。待っている間どうしようか考えられるのも逆に良かったかもしれない。このアプリは旅行先の空き時間にclaudeをポチポチして大枠は完成している。
- github copilot: かなり無料で使わせてくれる。コーディングもまあまあ。無料でもCLIが使えたりvscodeで使えたりするので、往復のやり取りが必要そうな作業(微調整とか)はこっちでやると効率が良い。
- grok(cursor?): そこそこの量を使えて1週間で回復する。コードはあとでclaudeに直してもらわないといけなそうなレベルのようだ。githubへのpushを頼むと延々考えた挙げ句ファイルを壊す。追記: cursorで使うと一瞬で無くなるが、grokでパッチで出してもらうようにすれば、結構使える。
- codex: なかなか回復しない。1ヶ月待つ必要がある。他で使ってたのか割とすぐに切れてあまり使えてない。
- gemini: 確認せずに出してくるのでエラーが出まくる。それもあってすぐにトークンが尽きる。claudeも別枠で使えるが、一瞬で無くなり何もできない。
- perplexity: コーディングはまあまあ。githubにpushしてくれた。1週間で回復するはずだと思ったが、なんかgithub使えなくなってまともなパッチも出してくれなくなった。最初はよかったと思う。
金を払ってない人の感想なので、この感想に意味が有るかと言われると、無いような気はする。ただ、もしgeminiとかgrokに金を払ってたら、腹立つだろうなとは思った。
追記: grokはpushさえ頼まなければ結構使えるので評価が上がった。難しいコードは(無料だと)無理だが、数をこなせる。















