Subversion1.6.0新機能!
Subversionの1.6.0が発表されました。
ということで、早速使ってみました。
1.6.0からの変更点としては、ツリー衝突に関する機能が新しくなったみたいです。
実際どういう感じかというと、こんな感じ。
コミットした際に衝突が発生すると、メッセージが表示されます。
$ svn ci -m 'commit' 送信しています test1 svn: コミットに失敗しました (詳しい理由は以下のとおりです): svn: ファイル '/test1' はリポジトリ側と比べて古くなっています $ svn up 'test1' で競合が見つかりました。 選択: 延期 (p), 全差分 (df), 編集 (e), 衝突自分 (mc), 衝突他人 (tc), , すべてのオプションを表示 (s):
延期、全差分、編集などなどの処理の選択ができます。
ちなみに、すべてのオプションを表示(s)を実行するとこんな感じ。
編集 (e) - マージされたファイルにエディタで変更を加えます 全差分 (df) - マージによってファイルに加えられた変更をすべて表示します 解決版 (r) - マージされたバージョンのファイルを採用します 衝突表示 (dc) - (マージされたバージョンを無視して) 衝突をすべて表示します 衝突自分 (mc) - (同上) すべての衝突に関して自分のバージョンを採用します 衝突他人 (tc) - (同上) すべての衝突に関して他人のバージョンを採用します 完全自分 (mf) - (衝突がなくても) ファイル全体で自分のバージョンを採用します 完全他人 (tf) - (同上) ファイル全体で他人のバージョンを採用します 延期 (p) - 競合に、後で解決する予定であるという印をつけます 起動 (l) - 競合を解決するために外部ツールを起動します 全表示 (s) - この選択肢一覧を表示します
今までのバージョンだと、「延期(p)」の処理が自動的に実行されていました。
1.6.0だとこんなことができます。
例1
-
-
- 競合発生!
- 全差分を表示(df)
- そのままの状態で解決(r)
- コミット実行
-
例2
-
-
- 競合発生!
- 全差分を表示(df)
- 衝突した部分は自分が書いた部分を採用(mc)
- コミット実行
-
例3
-
-
- 競合発生!
- 全差分を表示(df)
- 衝突ファイルを編集(e)
- 編集を完了して保存
- コミット実行
-
それ以外にも、衝突部分について相手の記述を採用して競合解消など、
競合状態の解消が行いやすくなっています。
ちなみに、なんの設定もなしにオプションeを利用すると、こんなエラーが。
環境変数 SVN_EDITOR、VISUAL、EDITOR のどれも設定されていなく、実行時の設定オプション 'editor-cmd' も見つかりません
なので、環境変数を設定して、エディタを使えるようにする。
$ export SVN_EDITOR=vi
これでオプションeを実行した場合、viでマージされたファイルの編集ができるようになります。