web-dev-qa-db-ja.com

ブランチを使用し、トランクからブランチに変更をマージするSVN戦略

SVNの長年のユーザーですが、分岐/タグ付けの経験がかなり浅く、私が持っているときは、SVNを実際に正しく使用していないか、最大限に活用していないと思われます。

新しい機能の追加などに取り組んでいるトランクがあります。このコードベースは複数のWebサイトで使用されており、プロジェクトごとにトランクからブランチを作成します。

通常、各ブランチにはそのプロジェクトに固有の変更があり、再利用可能と思われるものはすべてトランクに追加され、さまざまなプロジェクトで機能のオンとオフを切り替えることができるようになっています。

現在、トランクに変更を加え、それらの変更を以前のブランチで必要とする場合、特定のリビジョンを確認して手動でブランチにマージし、それらを再コミットする必要があります。理想的ではなく、見逃しやすいものです。

それで、私の質問...トランクからのすべての変更でブランチを更新し、競合のある標準のトランク更新であるかのようにそれらを処理する方法はありますか?

ブランチをトランクに再統合することについて見てきましたが、この場合のブランチの使用方法のため、それは実際にはやりたいことではありません。

19
Horse

はい、可能です。基本的に、ブランチのクリーンな作業コピー(ローカルの変更がないもの)からsvn mergeを実行する必要があります。

$ pwd
/home/user/mybranch
$ svn status # Does not display anything
$ svn update # Make sure your local copy is up to date.
Updating '.':
At revision X.
$ svn merge url/to/repository/trunk
Updates, additions, deletions and conflicts.
$ #handle conflicts.
$ svn commit -m "Merging changes from the trunk".

SVNブックの Keeping a Branch in Sync を参照してください。

最初のマージは、特にブランチがかなり前に分岐した場合に多くの競合を引き起こす可能性がありますが、特に頻繁にマージする場合、後者のマージはスムーズに進みます。

22
Etienne Miret