DVC - Distributed Version Control for Emacs

DVC とは?

DVC.el は分散バージョンコントロールシステムのための Emacs インタフェースである。 サポートしているのは

など。 以下の URL から入手できる。

ここでは Mercurial の Emacs インタフェースとして DVC を利用する。

カスタマイズ

DVC をしかるべくインストールして $HOME/.emacs.el に以下を追加する。

(setq dvc-prefix-key [(control c) ?v])
(load "dvc-load" t)

1行目はプリフィクスキーを C-c v に変更するため。 デフォルトのまま (C-x V) でよければ不要。 Merurial の基本的コマンドについてはこちらを参照。

global keymap

以下は Mercurial 関係のものだけ (tla や bzr 用のコマンドは除いてある)。 プリフィクスキーを C-c v に変更してあるので注意。

C-c v =         dvc-diff
C-c v L         dvc-log
C-c v M         dvc-merge
C-c v a         dvc-add-log-entry
C-c v b         dvc-bookmarks
C-c v c         dvc-log-edit
C-c v d         dvc-file-diff
C-c v e         dvc-file-ediff
C-c v i         dvc-inventory
C-c v l         dvc-changelog
C-c v m         dvc-missing
C-c v p         dvc-submit-patch
C-c v s         dvc-status
C-c v u         dvc-update

C-c v f D       dvc-remove-files
C-c v f M       dvc-rename
C-c v f R       dvc-revert-files
C-c v f X       dvc-purge-files
C-c v f a       dvc-add-files

基本的な使い方

各種モード

dvc-diff mode

dvc-status (C-c v s) を実行すると hg status の結果が表示される。

hg status for /Users/takagi/muse/

 M public/dvc.muse
 M public/mercurial.muse

ここで使えるコマンドは以下のようになっている。

RET             dvc-diff-jump-to-change
=               dvc-diff-diff
L               dvc-log                   # Is xhg-log better?
U               dvc-revert-files
^               dvc-diff-master-buffer
a               dvc-add-files
c               dvc-log-edit              # commit after log edit
d               dvc-remove-files
e               dvc-diff-ediff            # exec ediff
g               dvc-generic-refresh
h               dvc-buffer-pop-to-partner-buffer
i               dvc-pop-to-inventory
j               dvc-diff-diff-or-list
k               diff-hunk-kill
l               dvc-diff-log
m               dvc-diff-mark-file
n               dvc-diff-next
o               diff-goto-source
p               dvc-diff-prev
q               dvc-buffer-quit
r               dvc-remove-files
t               dvc-add-log-entry
u               dvc-diff-unmark-file
v               dvc-diff-view-source
<M-return>      dvc-diff-scroll-down-or-diff
<backspace>     dvc-diff-unmark-file-up
<return>        dvc-diff-jump-to-change

M M             dvc-merge
M f             dvc-pull
M m             dvc-missing
M u             dvc-update

W s             dvc-save-diff

# I             dvc-ignore-file-extensions
# e             dvc-edit-ignore-files
# i             dvc-ignore-files

B L             dvc-open-internal-log-buffer
B b             tla-bookmarks
B p             dvc-show-process-buffer

w d             dvc-diff-save-current-defun-as-kill

M-RET           dvc-diff-scroll-down-or-diff
M-=             dvc-diff-scroll-up-or-diff

C-x C-j         dvc-dired-jump
C-x 4 T         dvc-add-log-entry

xhg-log mode

M-x xhg-log を実行すると xhg-log モードに入る。 なかなか便利。

xhg.el で定義されている関数

xhg-add-all-files
xhg-add-files
xhg-add-log-entry
xhg-addremove
xhg-annotate
xhg-clone
xhg-command-version
xhg-delta
xhg-diff
xhg-diff-1
xhg-dvc-command-version
xhg-dvc-delta
xhg-dvc-diff
xhg-dvc-edit-ignore-files
xhg-dvc-ignore-files
xhg-dvc-log
xhg-dvc-merge
xhg-dvc-missing
xhg-dvc-pull
xhg-dvc-rename
xhg-dvc-save-diff
xhg-dvc-update
xhg-export
xhg-export-via-mail
xhg-forget
xhg-heads
xhg-hgrc-edit-repository-hgrc
xhg-identify
xhg-ignore-file-extensions
xhg-ignore-file-extensions-in-dir
xhg-import
xhg-incoming
xhg-init
xhg-insinuate-gnus
xhg-log
xhg-log-edit
xhg-log-mode
xhg-log-mode-menu
xhg-log-next
xhg-log-previous
xhg-log-review-next-diff
xhg-log-review-previous-diff
xhg-log-toggle-diff-for-changeset
xhg-manifest
xhg-merge
xhg-missing
xhg-mode-menu
xhg-mq-export-via-mail
xhg-mq-show-stack
xhg-parents
xhg-paths
xhg-pull
xhg-qapplied
xhg-qdelete
xhg-qdiff
xhg-qheader
xhg-qinit
xhg-qnew
xhg-qnext
xhg-qpop
xhg-qprev
xhg-qpush
xhg-qrefresh
xhg-qrename
xhg-qseries
xhg-qtop
xhg-qunapplied
xhg-qversion
xhg-remove-files
xhg-rename
xhg-revert-files
xhg-save-diff
xhg-select-committer-for-next-commit
xhg-showconfig
xhg-status
xhg-tags
xhg-tip
xhg-undo
xhg-update
xhg-verify
xhg-view