« svn 入門 | メイン | MT をもう少しちゃんと使ってみる。 »

svn 入門(その2)

前エントリから続き。

前の構成では、衝突の解消がうまく扱えてなかったので、
「極力フロントエンドで調整する」という方針にしたがって、
フロントエンドを変えてみた。

現在の構成は以下の通り、
  • Subversion 1.3.2 (cygwin 版)
  • meadow 3.00 (based on GNU Emacs 22.0.90.1)
  • vc-svn.el (FSF 版)

.emacs の変更などはほとんど必要なかったはずだが、結局いろいろいじった。
使っていないのに JDE やら、ECB までも最新にした(汗)。
#
# meadow の変更点について、蛇足。
#
# MULE-UCS は使わない前提になったようなので、該当部分をコメントにした。
#
# ;;; (load "un-define");; unicode
# ;;; (load "un-tools");; unicode
#
#
# ファイルを dired バッファにドロップすると、そのディレクトリにコピーされる!
# (meadow 2 系までは、ドロップしたファイルが開いていた)
# で、undo すると、dired 上でだけ消えるが、実際は消えない。
# 逆に dired からはドラッグできない(一方通行)。
# ちょっとキモイので、前の挙動に戻す設定がきっとあるはず。
#
#
# w32-symlinks( Windows のショートカットを良きに計らってくれるやつ)
# が無効っぽくなってたけど、w32-symlinks.el のコメント読んだりして、
# 結局 (load ) の前に (setq ) したら上手くいった。
#
# (setq w32-symlinks-handle-shortcuts t)
# (load "w32-symlinks")
#

これで、vc 経由の svn が、満足できるレベルで使えるようになった。

◆ vc の基本操作

M-x vc-update
=> svn update
作業コピーに、最新のリビジョンでの変更を反映する。
※ 現状の vc-svn.el では、 vc-update で
※ レポジトリでのファイルの出没(追加 / 削除)までは追従できないようだ。
※ つまりディレクトリの内容の変更は反映できないようだ。
※ したがって svn update は必要。
M-x vc-next-action (あるいは C-x v v)
=> svn add, svn ci
状況に応じて、次のアクションを行う。
未追加ファイルなら、追加フラグ( vc-register )。
編集前なら、ロック。
編集後なら、チェックイン。
※ svn では「ロックしない」ので、
※ 編集前に v v しても、実質何も起こらない。
※ 編集前に自動で vc-update されるとうれしいかもしれないが、されない。
M-x vc-merge (あるいは C-x v m)
=> svn merge
リビジョンの異なる作業コピーをマージする。
衝突(バックエンドが解消しきれない差分)があれば、
該当部分を衝突マークで囲む。
つまり閲覧中のファイルが書き換えられるわけだが、
emacs は通常、バッファを自動で再読み込みしないので注意。
(当然、*.mine, *.rA, *.rB というバックアップファイルもできる。)
M-x resolve-conflicts
=> svn resolved
  …しているわけではないようだ。
  *.mine, *.rA, *.rB みたいなファイルは自動削除されないので。  

衝突の解消を ediff でステキに支援する(以下で図説)。
M-x vc-delete-file
=> svn delete
作業コピーに削除フラグをたてる。
※ その後 svn ci でレポジトリに反映する必要がある。
M-x vc-rename-file
=> svn rename
作業コピーに削除フラグをたてて、別名で複製したものに追加フラグをたてる。
※ その後 svn ci でレポジトリに反映する必要がある。

以下、work, work2 という 2 つの作業コピーで、衝突の解消を図説。

▼オレンジ色でマークされている行を変更します。


▼work で変更し、v v (チェックイン)。


▼work2 でも同じところを変更し、v v (チェックイン)。


▼work2 のチェックインは失敗(work のチェックインによって、レポジトリのリビジョンが更新されているため)。
マージが必要。


▼work2 で、v m (マージ)。衝突した。


▼M-x vc-resolve-conflicts (衝突の解消)。


▼衝突を解消して、*.mine, *.rA, *.rB とかのファイルを削除して、改めてチェックイン。
(ここでは、敢えて「衝突しない変更」を加えてみたが、無事チェックインできた。)


▼work のほうに戻って、M-x vc-update (アップデート)。
上で加えた「衝突しない変更」も、更新された。


こんな感じで良いんだろうか?

◆ vc のここが便利(emacsen ユーザにとって)

その1. v v, v m

 日常的には、v v 、たまに v m だけで済みそう。

その2. ediff の支援

 ediff は 3 年ほど使ってるので、ありがたい。

その3. vc dired

 emacs で複数のファイルを一覧したり一括操作したい場合、
emacs 上のファイラーである dired(ディレクトリエディタ)を使うんだけど、
vc では dired に vc の機能を追加した、vc dired モードを使える。
基本的に、dired と同様の操作方法で、マーク(m)したファイルを対象に一括操作する。

vc の機能のキー操作の比較
機能 通常のファイルバッファ vc dired バッファ
詳細/簡易表示のトグル なし v t
'next-action' C-x v v v v
マージ C-x v m v m
ログ閲覧 C-x v l v l
以下、同様。


とりあえず、そんな感じ。

トラックバック

このエントリーのトラックバックURL:
https://tonextone.com/type/app/mt-tb.cgi/8

コメント (2)

ちなみに、ほぼ同様に cvs も扱えるというか、むしろ、csv の場合は、もっと気が利いてる。

例えば、
vc-delete-file / vc-rename-file だけで
cvs ci も処理される(削除 / 改名が完了する)。

同様に、
vc dired バッファで vc-update すれば、
cvs update が処理される。

Meadow + vc-mode + tramp で、遠隔版管理、試用中。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

最近のコメント

» master on svn 入門(その2) :
└ Meadow + v...
» master on svn 入門(その2) :
└ ちなみに、ほぼ同様に...

アーカイブ

フィード

このブログ

RSS 2.0 / ATOM

AdSense

del.icio.us

flickr