2013-03-21 11 views
19

SVNの長年のユーザーですが、ブランチング/タギングにはかなり慣れていません。ブランチを使ったSVN戦略とトランクからブランチへの変更をマージする

私は新しい機能などを追加するために私のトランクを使用しています。このコードベースは複数のWebサイトで使用され、プロジェクトごとにトランクから分岐を作成します。

各ブランチは通常そのプロジェクトに固有の変更を持ち、再利用可能と思われるものはトランクに追加され、さまざまなプロジェクトでその機能をオン/オフすることができます。

現在、私たちがトランクを変更し、それらの変更を日付の古いブランチにしたい場合は、特定のリビジョンを手作業でブランチにマージして再設定する必要があります。理想的ではなく、物事を見逃しやすい。

私の質問はトランクからのすべての変更で自分のブランチを更新する方法はありますか?競合のある標準的なトランクアップデートのように扱いますか?

私はトランクへのブランチの再統合について見ましたが、このインスタンスでブランチを使用しているため、実際にやりたいことではありません。

+0

コマンドラインからsvnを使用するか、TortoiseSVNのようなGUIを使用しますか? –

+5

だから、私は周りにいた限り、かなりSVNユーザーでした。そしてあなたはSVNと戦って、それがあなたが望むことのいくつかをすることができますが、私は正直に言う必要があります:gitはこれでもっとはるかに優れています。これはあなたが話していることを正確に踏まえて設計されています(しかし、 "もっと多くの枝"と思う)。あなたがブランチマージと物事の追跡をたくさんしたいのであれば、私はあなたのSVNリポジトリをgitリポジトリに変換してそこから行くでしょう。あなたはもっと幸せになるでしょう(私は、私のパッチが10年以上のSVNプロジェクトをgitに変換した後、どこにでも適用されていることを知っていることがはるかに自信があることを知っています) –

+0

smartsvn(おそらくこれ以上)、コマンドライン – Horse

答えて

22

はい、可能です。基本的に、あなたはあなたのブランチのクリーンな作業コピー(ローカル変更で1)から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を参照してください。

最初のマージでは、特に分岐が長い前に分岐した場合に、多くの競合が発生する可能性がありますが、後者のマージはスムーズに進みます。

+0

は完璧に動作します!ありがとう – gnuyoga

+0

私はそれをした後、私はbrachからトランクを更新しようとしたときに、トラックから更新されたすべての新しいクラスは競合していた。私は間違ったことをしましたか?それともこのようにしなければなりませんか? – Sertage

関連する問題