2009-09-02 3 views
13

状況:特定のブランチでは、からトランクのに変更がマージされ、ブランチへの変更もトランクにマージされました。Subversionでマージを元に戻すのは問題ですか?

私が持っている問題はこれです:私は枝からに戻すから自分自身にちょうどマージたリビジョンをトランクにマージしようとした場合どちらかといえば、Subversionの中にマージ管理を行いますか何、ブランチへのトランク?

これは問題を引き起こしますか?もしそうなら、どんな種類ですか?それとも、これは完全に素晴らしいことですか?

また、新しいマージでは他の変更と同じように扱うだけで、単に適用しようとしますか?

答えて

4

これは、新しいSVNバージョンのマージトラッキングでも自動的に処理できないシナリオです。したがって、手動でトランクにマージするリビジョンを指定し、マージするリビジョンをトランクからブランチに除外しなければなりません。

トランクに既に存在する変更を再作成すると、通常の変更として扱われます。これは必然的に紛争につながるでしょう。

4

これは、使用しているsvnのバージョンによって部分的に異なります。あなたはあなたが戻って欲しかったリビジョンをマージする必要がありますので、事前1.5

は、まったくマージ追跡ありませんでした。ほとんどの人はそのためのスクリプト名「svnmerge」を使用しました。必要に応じてこれを使用して、すでにマージしたリビジョンをマークすることができます。その後、svnmergeは適切なリビジョンを選び、すでにマージされたリビジョンをスキップします。

1.5(以降)はマージトラッキングを提供しますが、まだフル機能ではありません。あなたの特定の場合(両方の方法をマージ)、私はsvnのトラッキングはそれを処理できるとは思わない。おそらく、それぞれのリビジョンを手動で前後にマージする必要があります。

個人的には、私がsvnを使っているプロジェクトでは、ブランチを多少短命にし、ブランチからトランクへの最後のマージまで片方向(ブランチにトランク)にマージする方が好きです。私がそれをしたら、私はトランクにすべてをマージしてブランチを閉じるか、私が望むものをマージしてブランチを閉じます。マージ問題の可能性があるため、ブランチを生かしておくことはほとんどありません(間違いを起こしやすい)。

2

1.5以降のバージョンのSubversionを使用すると、以前のマージのコピーのみであるマージを「逆の方法で」マージするために、--reintegrateオプションをsvnマージに指定する必要があります。

注: 1)このオプションを使用する必要があるのはいつですか? 2)そのブランチからの最後のマージです。このマージ後、svnはブランチが死んだとみなし、さらに処理するにはブランチを破棄して再作成する必要があります。ドキュメントは、サブセクションに細かい内訳を使用することができますが、

これは、ストレートsvn docsからです。

関連する問題