2009-08-19 16 views
3

と同期して枝を維持、私は次のセットアップがありますSVNとGitの

/tags/ 
/trunk/ 
/branches/ 
/branches/my_feature 
/branches/my_other_feature 

を私はメインライントランクと同期して、すべての枝を維持したいので、私は定期的に、SVNはトランクのブランチのマージを実行。

しかし、ブランチの存続期間が数カ月以上になる可能性があるので、競合を避けるために、すべてのブランチを互いに同期させておくことも念頭に置いてください。私が十数の支店を持っていれば、私はSVNと厄介なメッシュを持つでしょう、そして、それは実用的ではありません。

私の質問は、SVNのヘルプの代わりにGitを使って、お互いに、そしてトランクとの同期を維持することですか?

+0

これが違いを生むのかどうかはわかりませんが、問題のプロジェクトは - 他にもたくさんのプロジェクトで作業していますか、それとも単なるプロジェクトですか(当面)? –

+0

約半ダースの開発者。 –

答えて

2

はい、ほとんどの場合、最新のDVCS(Git、Mercurial、Bazaar)の3つは、最後にマージされた時点を示し、マージされたチェンジセットを再作成しようとはしません。

あなたには、いくつかの本当にトリッキーなものをやっている場合は、いくつかの奇妙なエッジケースに遭遇するかもしれませんが、あなたが行う場合でも、それはSVNを使用するよりもマイル良くなります。

6

リベースを行うことで、両方のブランチをトランクと同期させるのに役立ちます。

実行し、分岐my_featureを使用している間:

git rebase master 

そして、それはmy_featureにマスター(トランク)ブランチの変更をもたらすでしょう。

my_featureとmy_other_featureを同期させておくことについては、一方が他方の子孫であれば同じ原理です。 my_featureがmy_other_featureまたはviceversaの子孫でない場合、私はその答えを知らない。

0

目的の機能を得るには、Git を完全ににする必要があります。 gitをとしてフロントエンドからSVN(vai git svn)にするだけでは、SVNユーザーに正しく表示されない可能性があります。