svn merge(マージ)

ブランチを作る

 $ svn copy file:///var/svn/trunk file:///var/svn/branch/1
 Committed revision 4.

ブランチをチェックアウトする

 $ svn checkout file:///var/svn/branch/1 $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.

ブランチをトランクにマージする

トランクをチェックアウトする

 $ svn checkout file:///var/svn/trunc $HOME/trunk

マージ内容の差分を確認する

 $ svn diff file:///var/svn/branch/1@4 file:///var/svn/branch/1@6
 Index: 2.txt
 ===================================================================
 Index: 1.txt
 ===================================================================
 --- 1.txt       (リビジョン 4)
 +++ 1.txt       (リビジョン 6)
 @@ -0,0 +1 @@
 +1

マージを実行する

 $ svn merge file:///var/svn/branch/1@4 file:///var/svn/branch/1@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
  • --dry-runオプションを付けると実行を確認できる。

マージをコミットする

 $ svn commit -m ''
 送信しています              .
 送信しています              1.txt
 追加しています              2.txt
 ファイルのデータを送信しています .
 Committed revision 7.

ブランチのログを参照する

 $ svn log --stop-on-copy file:///$HOME/tmp/svn/branch/1
 ------------------------------------------------------------------------
 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
 ------------------------------------------------------------------------
 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
 ------------------------------------------------------------------------

トランクで行われたコミットをブランチに反映させるには?

 cd $HOME/branch2
 svn merge file:///var/svn/trunk

トランクを指定してマージする。

参考

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.merge.html


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS