一人でバージョン管理 5(Emacs 編)

vc-mode

Emacs には バージョン管理用に vc-mode というのがあるので、それを使ってみることに。Mercurial の管理下にあるファイルを Emacs で開くと勝手に vc-mode になり、モードラインに

   Hg-10

みたいな表示が出る。ここで、Hg は管理システムの略称、`-' は管理状態(`-' は変更なし、`:' は変更あり)、最後の番号は RevisionNumber を表す。vc-mode では C-x v を prefix とするキーバインドが使えるようになる。

入力 vc-mode Mercurial での動作
C-x v = vc-diff hg diff
C-x v a vc-update-change-log
C-x v b vc-switch-backend
C-x v c vc-cancel-version
C-x v d vc-directory hg status
C-x v g vc-annotate hg annotate
C-x v h vc-insert-headers
C-x v i vc-register
C-x v l vc-print-log hg log
C-x v m vc-merge hg merge
C-x v r vc-retrieve-snapshot
C-x v s vc-create-snapshot
C-x v u vc-revert-buffer hg revert
C-x v v vc-next-action hg add, hg commit (C-c C-c)
C-x v ~ vc-version-other-window hg cat -r N -o hoge.~N~ hoge

mercurial.el(hg-mode)

ローカルで使う分には vc-mode で十分だけど、push や pull も出来るように Mercurial 同梱の mercurial.el を導入する。mercurial.el を load-path に置いて .emacs

(require 'mercurial)

と書くだけ。hg-mode では C-c h を prefix としたキーバインドも使えるようになる(help は C-c h h)。r オプションとかを使いたい場合は C-u 付きで呼び出せばいい。

C-x v hg-mode C-c h hg-mode
C-x v = hg-diff C-c h , hg-incoming
C-x v a vc-update-change-log C-c h . hg-outgoing
C-x v b vc-switch-backend C-c h hg-pull
C-x v c hg-undo C-c h = hg-diff-repo
C-x v d vc-directory C-c h > hg-push
C-x v g hg-annotate C-c h ? hg-help-overview
C-x v h vc-insert-headers C-c h A hg-addremove
C-x v i hg-add C-c h U hg-revert
C-x v l hg-log C-c h a hg-add
C-x v m vc-merge C-c h c hg-commit-start
C-x v n hg-commit-start C-c h f hg-forget
C-x v r vc-retrieve-snapshot C-c h h hg-help-overview
C-x v s vc-create-snapshot C-c h i hg-init
C-x v u hg-revert-buffer C-c h l hg-log-repo
C-x v v vc-next-action C-c h r hg-root
C-x v ~ hg-version-other-window C-c h s hg-status
- - C-c h u hg-update