2009-08-05 5 views
2

反射/巡回がリフレクトまたはサイクリックマージの処理には、どのバージョン管理ツールが最適ですか? SVN、Git?

をマージこれは、例を挙げて説明するのが最も簡単です。トランクからコピーされたフィーチャブランチを使用しているとします。開発プロセスでは、定期的にトランクからブランチへの新しい変更をすべてマージして、ブランチがトランク上で発生する作業と「同期」するようにします。最終的にブランチをトランクにマージすると、それは反射(またはサイクリック)マージと呼ばれます。

詳細については、サブバージョンマージ再統合の記事(http://blogs.open.collab.net/svn/2008/07/subversion-merg.html)を参照してください。 http://jugalps.wordpress.com/2009/07/31/svn-branching-and-merging-in-scrum/を参照して、典型的な反射マージ処理の概要を知ることもできます。 このような種類のシナリオを処理する場合、私のSVNの経験は十分ではありません。

リフレクトマージのためにSVN以外のバージョン管理ツールを使用している人はいますか?

+0

SVNの再統合マージで満足できない理由を詳しく説明できますか? (私は疑問に思っていませんが、その欠点について学びたいです。) – sbi

+1

reintegrate mergeを扱うとき、私はsvn merge-infoプロパティを扱いにくいです。 –

答えて

3

Gitは常にこの能力を念頭に置いて設計されています。それは私の最初のVCSでした。私にとっては、このタイプのワークフローはまったくルーチンです。原点から定期的にマージすることにより、あなたのHEAD(支点)の原点が過去にあることが保証されているので、原点(「トランク」)へのマージ(プッシュまたはリクエストプル)は簡単です。実際にマージを実行するのではなく、履歴を前進させるだけです(gitはこれを「早送り」と呼んでいます)。

Gitのリベース機能を使用して、履歴をさらにきれいにすることもできます。このワークフローを採​​用すれば、元のものをマージするのではなく、いつでも元のものから取り除くことができます。 (これは書き直しの履歴なので、すでに公開されているものは実行しないようにしなければなりません)。このように、元のマージはすべて早送りであり、作業は元のHEADの上にコミットのシーケンスが1つだけです。これは、一連のマージの代わりに、歴史をより直接的に - うまくいけば直線にします。

1

悪夢ではなく、最新バージョンのsvn 1.6.xシリーズを使用していたSVNの反射マージングは​​、これまで多くのサポートがありました(マージに関連するメタデータを履歴にマージします。変更をマージするときに役立ちます)。

私は現在VCシステムとしてBazaarを使用しています(これはGitのような分散型VCSです)、私はブランチングと再育成/マージバックをメインラインにサポートしていると言えます。 Gitもそれをサポートしています(どちらもrebase)。どちらも分岐/マージバックを念頭に置いて設計されています。

1

IBM RationalのClearCase製品は、この操作モードを大いにサポートしています。これは開発ブランチで作業する標準的な方法であり、マージは双方向ではほとんど自動です(矛盾する変更がない限り)。ただし、ClearCaseに必要なインフラストラクチャの残りの部分は、おそらく貴社が大きな投資決定を下す場合にのみ使用することを意味します。

0

Subversionは、CVSのための多かれ少なかれ大きなバグ修正であり、CVSとのマージで同様の問題を抱えています。両方とも、現在使用しているもの(同じコードベースで作業している人が数百人で、バージョンが少しずつ異なります)ではなく、単純なマージケース用に設計されています。

これを解決するために、Gitと他の最新のDVCSが設計されました。 Gitにはさまざまなマージアルゴリズムが用意されており、簡単に新しいアルゴリズムを作成できます。しかし、私の推測では、Linuxカーネル開発者が今まで見たことのないシナリオを思いつくのは難しいでしょう);

私の個人的な経験から、Gitはあなたが知っていることをほとんど忘れてしまえば素敵なツールですSVN。それ以外の場合は、あなたのSVN/CVSの知識を適用しようとすると、それはまったく動作しません。座って、チュートリアルを通して実際にVCSを見たことがないかのように作業を開始してください。たとえば、複数のプロジェクトを単一のリポジトリに配置しようとしました。

+0

SubversionはCVS用の「パッチ」ではありません。 –

+0

さて、それはサービスパックです。私はGitのドキュメントのどこかでそれを読んで、私はそれが好きだった;) –

2

私は最近、すべての新しいプロジェクトをSVNからgitに切り替えました。私が言うことができるのは、分岐とマージということだけです。

ブランチはとても簡単に作成でき、毎日の開発で新しいブランチが作成されます。そこでは自分のローカルブランチにコミットし、完了したら再びマージします。私は小さなグループと一緒に仕事をしており、このような仕事をしていません。

関連する問題