SVN 2 つのブランチにファイルが追加されたときに新しいツリーの競合を解決する方法
-
12-09-2019 - |
質問
ファイルが両方のブランチに追加されている (その後、それらの別々のブランチで作業した) いくつかのブランチを (SVN 1.6.1 を使用して) マージすると、新しいツリーの競合の 1 つが発生します。
C foo.txt
> local obstruction, incoming add upon merge
両方のブランチからの変更が必要ですが、ツリーの競合により、通常の .working ファイル、.merge-left ファイル、.merge-right ファイルが提供されません。これは競合の性質上当然のことです。このような競合はかなりの数あり、各ブランチで同じファイルの削除が発生するものもありますが、解決するのは簡単です。
この問題はどうすれば解決できますか?SVN redbean ブック (1.6 用) では、この状況はカバーされていません。
解決
の古いバージョン (2009) で言及されているように、 「ツリーコンフリクト」デザイン 書類:
バージョン管理されたファイルの追加のマージによる XFAIL 競合
このテストはマージを行います。 既存のバージョンのファイルに履歴なしでファイルの追加をもたらす.
これは ' のファイルでツリーの競合が発生しているはずです。local obstruction, incoming add upon merge
' バラエティ。r35341 の期待値を修正しました。
(ちなみに、これは ClearCase では「邪悪な双子」とも呼ばれます):
ファイルは 2 つの異なるブランチに 2 回作成され (ここでは 2 回「追加」)、2 つの異なる要素に対して 2 つの異なる履歴が作成されますが、名前は同じです。
理論的な解決策は、これらのファイルを (外部の差分ツールを使用して) 宛先ブランチに手動でマージすることです。B2
'.
まだソース ブランチで作業している場合、理想的なシナリオは、そのファイルをソース ブランチから削除することです。 B1
, 、からマージバックします B2
に B1
そのファイルを表示できるようにするには B1
(その後、同じ要素で作業します)。
マージは次からのみ行われるため、マージバックが不可能な場合 B1
に B2
, の場合、それぞれに対して手動でマージが必要になります。 B1->B2
合併します。
他のヒント
私はポストのための解決策を示唆しましたそのに。これは、実行しようとしています:
svn resolve --accept working <YourPath>
OKとローカルバージョンのファイルを主張するであろう。
あなたは、単一のファイルまたはプロジェクト全体のカタログのためにそれを実行することができます。
の着信の変更は、あなたが望むものは何ですか?私は--accept解決SVN実行できないよ彼らのフル
のsvn解決--acceptベース
私は上記user619330のアドバイスに従うことをしようと、かなり徹底的に自分自身をくさびに成功しました。状況は:(1):私の最初の支店、支社に取り組んでいる間、私はいくつかのファイルを追加しました。 (2)私は、支社(3)同僚は、彼自身のブランチに支社から私の改造をコピーしていたから、私の変化にマージし、その後トランクからそれを分岐して、さらなる開発のための新しいブランチ、BRANCH2を作成したが、さらに改造を追加しましたその後、戻ってトランクにマージされました。 (4)私は今、私の現在の作業ブランチ、BRANCH2にトランクから最新の変更をマージしたかったです。これは、SVN 1.6.17である。
これ(これらBRANCH2の変更をコミットし、マージは、新しいファイルとツリーの競合を持っていた、とBRANCH2のクリーンコピーから、私はSVNは、競合するファイルの削除やったので、私は、彼らが異なっていたトランクから新しいバージョンを望んでいました)問題のファイルなしBRANCH2の一時的なバージョンを作成して、トランクから私のマージを行いました。私は戻ってトランクにマージしようとしたとき、私は、後に多くの問題を持っていないように歴史がトランクのバージョンと一致したかったので、私はこれをしました。マージstはすべてOKを示しするSubversion私は、ファイルのトランクバージョンを持って、変更をコミットしようとしているときに、私は、削除の間、私が以前行っていたとマージから追加し、より多くのツリーの競合を打つ。、罰金行ってきました(今のファイルのトランクバージョンを持っていた)、そしてコミットするそれを得た私の作業コピーの賛成で紛争のSVNの決意をしました。すべての権利、良いことがあります?
まあ、ありません。 BRANCH2の別のコピーの更新は、ファイルの古いバージョン(前のトランクマージ)が生じました。だから今、私は、ファイルの2つの異なるバージョンとおそらく同じバージョンに更新BRANCH2の二つの異なる作業コピーを、持っている、との両方のときは、最新の完全であることを主張します! BRANCH2のクリーンコピーをチェックアウトすると、ファイルの古い(前のトランク)のバージョンになりました。私は手動でトランクバージョンにこれらを更新し、変更をコミットし、バック(私はトランクが最初に変わる提出いたから)私の最初の作業コピーに行く、それを更新し、現在問題となっているファイルのチェックサム・エラーを取得しよう。離れ質問でディレクトリを吹く、アップデート経由で新しいバージョンを取得し、最終的に私は、トランクの変更とBRANCH2の良いバージョンがどうあるべきか持っています。私は願います。警告開発ます。