nDiki

2011年5月7日 (土)

Subversion における trunk から branch へのマージ

Git に慣れてしまうと面倒な Subversionブランチ。 trunk (あるいは他の統合ブランチ)から、トピックブランチへの定期的な反映の手順をメモ

トピックブランチを作成する

 svn mkdir svn+ssh://svn.example.com/repos/branches/naney \
           -m '[branches/naney] mkdir'
           
 svn copy svn+ssh://svn.example.com/repos/trunk \
          svn+ssh://svn.example.com/repos/branches/naney/feature-x \
          -m '[branches/naney/feature-x] Copy from /trunk.'

 svn checkout svn+ssh://svn.example.com/repos/branches/naney/feature-x
 cd feature-x

feature-x 以下で編集を行い、適宜コミットする。

ブランチ後 trunk からの初回のマージ

  cd 自分の作業コピーディレクトリ
  svn update
  # 最後に表示されるのがブランチしたリビジョンのログ。このリビジョン番号を A とする。
  svn log --stop-on-copy
  # 表示されたのが trunk の最新リビジョンのログ。このリビジョン番号を B とする。
  svn log --limit 1 svn+ssh://svn.example.com/repos/trunk
  # 必要に応じて trunk での変更点を確認する。
  svn diff -r A:B svn+ssh://svn.example.com/repos/trunk
  # マージする際の変更点を確認する。
  svn merge --dry-run -r A:B svn+ssh://svn.example.com/repos/trunk
  # trunk での変更点をブランチの作業コピーに反映させる。
  svn merge -r A:B svn+ssh://example.com/repos/trunk
  # マージしたらコミット。
  svn commit -m '[branches/naney/feature-x] svn merge -r A:B svn+ssh://example.com/repos/trunk'

どのリビジョン範囲をマージしたかをコミットメッセージに記録しておく。

あとは引き続きまた作業する。

trunk からの2 回目以降のマージ

  cd 自分の作業コピーディレクトリ
  svn update
  # 前回マージ範囲をログから確認。
  svn log --stop-on-copy | grep -B 2 'svn merge'
  # 表示されたのが trunk の最新リビジョンのログ。このリビジョン番号を D とする。
  svn log --limit 1 svn+ssh://svn.example.com/repos/trunk
  # 必要に応じて trunk での変更点を確認する。
  svn diff -r C:D svn+ssh://svn.example.com/repos/trunk
  # マージする際の変更点を確認する。
  svn merge --dry-run -r C:D svn+ssh://svn.example.com/repos/trunk
  # trunk での変更点をブランチの作業コピーに反映させる。
  svn merge -r C:D svn+ssh://example.com/repos/trunk
  # マージしたらコミット。
  svn commit -m '[branches/naney/feature-x] svn merge -r C:D svn+ssh://example.com/repos/trunk'
スポンサード リンク
[ 5月7日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.126061s / load averages: 0.52, 0.39, 0.31
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker