Mercurial/Git/Subversion/Bazaar に対応した psvn.el 的なメニューベースのバージョン管理フロントエンドです。
presentation_mvc_20131101_0.mp4 demo movie
そこそこ高速に動作し頻度の高いコマンドは非同期で実行する上、複数バッファとタブに対応しているため、適切なディレクトリ構成ならばストレスの少ない小気味良い環境を構築できます。
status から "!" キーで起動する mvc-cheet-sheet-mode という、あらかじめ登録しておいたコマンド群を指定したファイルに対して適用できる、 history よりも強力で柔軟なコマンドラインインターフェースを備えています。なんだかんだとコマンド直打ちが必要になる git で非常に便利です(git 用に shell を上げておく必要がなくなります)。
mvc-cheet-sheet-mode に登録できるのはバージョン管理コマンドに限らないため、プロジェクトで必要な make, mysql, rsync や deploy コマンドを登録しておくと便利です。
具体的には以下のようなテキストをプロジェクトに対して保存しておくイメージです。
# "\C-c\C-c" to run current line command %program branch wac %program branch %program branch -r %program stash list %program status %program checkout wac %program log --stat -n 8 %program show %files %program checkout %files %program commit --file=%commitlog %program commit -m 'merge' %program reset --soft %program reset --hard make package mysql -u user -p
Git
旧版
何かありましたら twitter @wachikun 、 wac@umiushi.org へのメイルなど、お気軽にどうぞ。
| バージョン管理ツール | 状況 |
|---|---|
| Git | LAN 経由の sshfs 上で Git をほぼ毎日使用しています。 |
| Mercurial | インターネット経由の sshfs 上で Mercurial をほぼ毎日使用しています。わりと普通にストレスなく扱えています。 |
| Subversion | 27000 ファイル以上のプロジェクトで毎日使用していました。もちろん毎回大量のファイルを扱うわけではなく、担当ディレクトリ以下の数 100 ファイル程度を主に相手にしていましたが。 |
| - | Mercurial | git | bazaar | Subversion |
|---|---|---|---|---|
| status(async) | ○ | ○ | ○ | ○ |
| update(async) | ○ | ○ | ○ | ○ |
| push/pull(async) | ○ | ○ | ○ | - |
| commit(async) | ○ | ○ | ○ | ○ |
| add(async) | ○ | ○ | ○ | ○ |
| remove | ○ | ○ | ○ | ○ |
| rename | ○ | ○ | ○ | ○ |
| annotate(async) | ○ | ○ | ○ | ○ |
| revert(async) | ○ | ○(mvcautorevert / reset / checkout) | ○ | ○ |
| diff(async) / ediff | ○ | ○ | ○ | ○ |
| log(async) | ○ | ○ | ○ | ○ |
| git stage | - | ○ | - | - |
| svn propset | - | - | - | ○ |
| cat (テスト中。ログのバージョンから cat 可能) | ○ | ○ | ○ | ○ |
| 任意のコマンド起動 | ○ | ○ | ○ | ○ |
mvcautorevert は hg/svn revert 風の動作をするラッパー的コマンドです。
画像をクリックすると大きな画像を表示します。
mvc.el を load-path の通った場所に置き、 .emacs へ次のような 1 行を付け足すだけです。
0.1 以降は同梱の mvc コマンドをパスの通った場所へ置く必要があります。 Perl が必要になります。
(require 'mvc)
M-x mvc-status で起動します。
好みによって
$ emacs --batch --funcall batch-byte-compile mvc.el
などとしてバイトコンパイルしても良いかもしれません。(作者は速度的に困ってないのでしていません。(Athlon X2 4850e から C3-1GHz あたりの機械でも十分?))