git-gutterと git-gutter+の違い

hunkを stageする機能の実装で悩んでいるときに, git-gutter+だと
実装されているのかなと思って確認したところ実装されていて, その他の
部分も見てみるとおぉと思ったことがあったので, ここらで git-gutter
との違いを示しておこうかと思います.

forkの経緯

git-gutter+は git-gutterから forkしたプロジェクトです.


forkの経緯は git-gutter+の作者の方が高速化(厳密には低速化の防止)の
ための Pull Requestを私が rejectしたことです. そのパッチはかなり
巨大で既存の挙動をいろいろ変えるものでした. rejectした理由は,
私が外せないと思った機能が除去されていたことと, そもそもパッチが
マージできないことでした(前者が理由として大きかったですが, 後者も
それなりに大きかったです. せめてマージできていれば多少考えが変わった
かもしれません)

違い

git-gutterほど低速でない

高速とは書きづらいので低速にならないと書きますが, git-gutter+の
方がもっさりしません. 工夫もあるのですが, gutterの更新頻度が異なると
いうのが差になっていると思います. git-gutterが重いのは更新頻度が
多すぎるからです(多くは何の変更もなく結局更新しない).


なんで更新しまくっているかというと, 私が望むものを作ったらそう
なってしまったためです. 自分がこんな感じで gutterが更新されると
いいなと思って作ったらこうなりました. 重さはその代償です.


git-gutterは更新しまくっているので, あまり明示的に更新を行うことは
ないと思いますが, git-gutter+は少ない分いくらか自分で更新を行う
頻度は増えるかと思います. ただ git-gutter+の各種コマンドは, 最後に
更新を行なっているので, git-gutter+のコマンドを使うようにすれば,
あんまり困ることもないかと思います.


あと git-gutterは性質上, frameをたくさんの windowに分割していると
どんどん低速になりますが, git-gutter+はその問題もないと思います.
なんで e2wmみたいなものを使っている人にもいいんじゃないかと思います.

git-gutter+の方が高機能

名前の通りというか git-gutter+の方が高機能です. hunkの stageは
つい最近 git-gutterでも実装しましたが, git-gutter+はリージョンに
対しても機能しますし, commitに関する機能も存在します. git add
git commitだけなら git-gutter+だけで済むほどで,
それぐらいしか git commandを使わないという方であれば magitいらずです.

おわりに

作者としてこんなことを言うのもどうかと思いますが, 多くの人には
git-gutter+の方がいいと思います. 特に git-gutterの低速な問題に
悩んでいる人, magitは使わないけど Emacsだけで git操作をある程度
完結させたいという人は git-gutter+を使った方がよいと思います.


私はドッグフードを食べる責任があるので, ユーザがいる間は git-gutterを
使い続けますが, いろいろ不満がある方は一度 git-gutter+を使ってみると
よいのではないでしょうか. MELPAから落とせるので導入は簡単です.
一部 API名が異なりますが, だいたいは +をつけるだけです. 詳しいことは
git-gutter+のドキュメントを参照してください