- ここでは不要な「最後の手段のツール」として「2-URLマージ」を使用します
svn help merge
コマンドオプションについて注意深くお読みください
tag2にマージする場合は、次のようになります。
- tag_2を新しいWorkingCopyにチェックアウトするか、存在する場合はクリーンWCにします。ローカルでの変更や混合リビジョンはありません。
- このWC
svn merge http://host/svn/tags/tag_1 --accept 'mine-conflict'
でトリックを実行します(競合のない部分はマージされます。競合するチャンクの場合、「mine」(つまり、tag_2バージョン)が自動的に選択されます)
- マージ結果をコミットする
編集:コメントへの返信でテスト実行
初期状態(トランクとブランチを使用)
svn log -q -v file:///Z:/Repo/
------------------------------------------------------------------------
r3 | Badger | 2013-01-17 10:07:55 +0600 (Чт, 17 янв 2013)
Changed paths:
A /branches/MyFixes (from /trunk:2)
------------------------------------------------------------------------
r2 | Badger | 2013-01-17 10:03:32 +0600 (Чт, 17 янв 2013)
Changed paths:
A /trunk/Data
A /trunk/Data/b.txt
A /trunk/Data/c.txt
A /trunk/a.txt
------------------------------------------------------------------------
r1 | Badger | 2013-01-17 09:57:52 +0600 (Чт, 17 янв 2013)
Changed paths:
A /branches
A /tags
A /trunk
------------------------------------------------------------------------
svn ls -R file:///Z:/Repo/trunk
Data/
Data/b.txt
Data/c.txt
a.txt
svn ls -R file:///Z:/Repo/branches/MyFixes
Data/
Data/b.txt
Data/c.txt
a.txt
ブランチの変更(ファイルの編集、新しいオブジェクトの追加)
svn log -q -v file:///Z:/Repo/ -l 1
------------------------------------------------------------------------
r4 | Badger | 2013-01-17 10:26:40 +0600 (Чт, 17 янв 2013)
Changed paths:
M /branches/MyFixes/Data/b.txt
M /branches/MyFixes/Data/c.txt
A /branches/MyFixes/Data/d.txt
A /branches/MyFixes/NewData
A /branches/MyFixes/NewData/e.txt
A /branches/MyFixes/NewData/f.txt
M /branches/MyFixes/a.txt
------------------------------------------------------------------------
「M」ファイルの差分を制御する
svn diff file:///Z:/Repo/trunk/a.txt file:///Z:/Repo/branches/MyFixes/a.txt
Index: a.txt
===================================================================
--- a.txt (.../trunk/a.txt) (revision 4)
+++ a.txt (.../branches/MyFixes/a.txt) (revision 4)
@@ -1,2 +1,2 @@
-String 1
-String 2
+A String 1
+A String 2
svn diff file:///Z:/Repo/trunk/Data/b.txt file:///Z:/Repo/branches/MyFixes/Data/b.txt
Index: b.txt
===================================================================
--- b.txt (.../trunk/Data/b.txt) (revision 4)
+++ b.txt (.../branches/MyFixes/Data/b.txt) (revision 4)
@@ -1,2 +1,3 @@
-Data String 1
-Data String 2
+The Data String One
+The Data String Two
+The Data String Three
svn diff file:///Z:/Repo/trunk/Data/c.txt file:///Z:/Repo/branches/MyFixes/Data/c.txt
Index: c.txt
===================================================================
--- c.txt (.../trunk/Data/c.txt) (revision 4)
+++ c.txt (.../branches/MyFixes/Data/c.txt) (revision 4)
@@ -1,2 +1,3 @@
-String 1 data
-String 2 data
+1 Los datos de cadena
+Cadena 2 Datos
+Cadena 3 Datos
マージしてみてください
z:\Trunk>svn merge file:///Z:/Repo/branches/MyFixes --accept "mine-conflict" --dry-run
--- Merging r3 through r4 into '.':
A NewData
A NewData\e.txt
A NewData\f.txt
U Data\b.txt
U Data\c.txt
A Data\d.txt
U a.txt
印象-競合なし(予想どおり)、ツリー競合なし(予想どおり)、分岐ファイルのマージ、ブランチからの新規-追加
実際のマージ
z:\Trunk>svn merge file:///Z:/Repo/branches/MyFixes --accept "mine-conflict"
--- Merging r3 through r4 into '.':
U Data\b.txt
U Data\c.txt
A Data\d.txt
U a.txt
A NewData
A NewData\e.txt
A NewData\f.txt
--- Recording mergeinfo for merge of r3 through r4 into '.':
U .
マージをコミットする
svn log -q -v file:///Z:/Repo/ -l 1
------------------------------------------------------------------------
r5 | Badger | 2013-01-17 10:50:35 +0600 (Чт, 17 янв 2013)
Changed paths:
M /trunk
M /trunk/Data/b.txt
M /trunk/Data/c.txt
A /trunk/Data/d.txt (from /branches/MyFixes/Data/d.txt:4)
A /trunk/NewData (from /branches/MyFixes/NewData:4)
M /trunk/a.txt
------------------------------------------------------------------------
注意-問題!
ブランチ(a / b / c)でファイルを誤って編集した可能性がありますが、奇妙な理由--accept "mine-conflict"
で無視され、マージ後のファイルはブランチの親と同じになります。
追加: OK、マージする前にトランクのa / b/cも編集するのを忘れました。Mea culpa、このポイントを追加した後、完全に期待どおりに機能する必要があります