- 追加された行はこの色です。
- 削除された行はこの色です。
* svn merge(マージ) [#j24b1180]
** イメージ図 [#v52d4999]
4 5 6
o--o--o <--- branches/1.0
/ \
o--o--o--------o <--- trunk
1 2 3 7
** ブランチを作る [#l651db47]
$ svn copy file:///var/svn/trunk file:///var/svn/branch/1
$ svn copy file:///var/svn/trunk file:///var/svn/branches/1.0
Committed revision 4.
** ブランチをチェックアウトする [#n97ceeb1]
$ svn checkout file:///var/svn/branch/1 $HOME/branch
** ブランチでファイルを編集・コミットする [#lbdca408]
** ブランチをチェックアウトして、ファイルを編集・コミットする [#lbdca408]
$ svn checkout file:///var/svn/branches/1.0 $HOME/branch
$ cd $HOME/branch
$ echo 1 > 1.txt
$ svn commit -m ''
送信しています 1.txt
ファイルのデータを送信しています .
Committed revision 5.
$ touch 2.txt
$ svn add 2.txt
$ svn commit -m ''
追加しています 2.txt
ファイルのデータを送信しています .
Committed revision 6.
** ブランチをトランクにマージする [#l88890b5]
*** トランクをチェックアウトする [#n08aa815]
$ svn checkout file:///var/svn/trunc $HOME/trunk
*** マージ内容の差分を確認する [#e2de5ec0]
$ svn diff file:///var/svn/branch/1@4 file:///var/svn/branch/1@6
$ svn diff file:///var/svn/branches/1.0@4 file:///var/svn/branches/1.0@6
Index: 2.txt
===================================================================
Index: 1.txt
===================================================================
--- 1.txt (リビジョン 4)
+++ 1.txt (リビジョン 6)
@@ -0,0 +1 @@
+1
*** マージを実行する [#w7b7264b]
$ svn merge file:///var/svn/branch/1@4 file:///var/svn/branch/1@6
$ svn merge file:///var/svn/branches/1.0@4 file:///var/svn/branches/1.0@6
--- r5 から r6 までを '.' にマージしています:
A 2.txt
U 1.txt
--- Recording mergeinfo for merge of r5 through r6 into '.':
U .
- マージ対象の指定の仕方は、他にも→ svn merge -r 4:HEAD file:///var/svn/branch/1
- マージ対象の指定の仕方は、他にも→ svn merge -r 4:HEAD file:///var/svn/branches/1.0
- --dry-runオプションを付けると実行を確認できる。
*** マージをコミットする [#geb44ebc]
$ svn commit -m ''
送信しています .
送信しています 1.txt
追加しています 2.txt
ファイルのデータを送信しています .
Committed revision 7.
** ブランチのログを参照する [#l7a50734]
$ svn log --stop-on-copy file:///$HOME/tmp/svn/branch/1
$ svn log --stop-on-copy file:///$HOME/tmp/svn/branches/1.0
------------------------------------------------------------------------
r6 | taro | 2012-04-09 23:36:46 +0900 (月, 09 4月 2012) | 1 line
------------------------------------------------------------------------
r5 | taro | 2012-04-09 23:36:34 +0900 (月, 09 4月 2012) | 1 line
------------------------------------------------------------------------
r4 | taro | 2012-04-09 23:35:59 +0900 (月, 09 4月 2012) | 3 lines
------------------------------------------------------------------------
↑--stop-on-copyオプションでブランチを作って以降のログを参照できる。オプションを付けないと↓。
$ svn log file:///$HOME/tmp/svn/branch/1
$ svn log file:///$HOME/tmp/svn/branches/1.0
------------------------------------------------------------------------
r6 | taro | 2012-04-09 23:36:46 +0900 (月, 09 4月 2012) | 1 line
------------------------------------------------------------------------
r5 | taro | 2012-04-09 23:36:34 +0900 (月, 09 4月 2012) | 1 line
------------------------------------------------------------------------
r4 | taro | 2012-04-09 23:35:59 +0900 (月, 09 4月 2012) | 3 lines
------------------------------------------------------------------------
r2 | taro | 2012-04-09 23:34:41 +0900 (月, 09 4月 2012) | 1 line
------------------------------------------------------------------------
r1 | taro | 2012-04-09 23:34:15 +0900 (月, 09 4月 2012) | 1 line
------------------------------------------------------------------------
** トランクで行われたコミットをブランチに反映させるには? [#s1a3e327]
cd $HOME/branch2
svn merge file:///var/svn/trunk
トランクを指定してマージする。
** 参考 [#ta76bfe9]
http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.merge.html