Tortoisesvnは、樹木の競合を解決するためにアプローチします
-
29-09-2019 - |
質問
TortoiseSVNは、いくつかの種類の木の競合を使用するのに役立ちます 競合を編集します 窓。
問題は、...マージ上「競合タイプTortoisesvnは、どのファイルをマージする必要があるかを推測できません。
たとえば、(ケース: 更新時にローカルの欠落、着信削除)
- 開発者Aがトランクで作業すると、ファイルfoo.cを変更し、リポジトリにコミットします。
- Branch Move File foo.cにbar.cに取り組んで、リポジトリにコミットします。
開発者AのマージAのブランチワーキングコピーの変更により、ツリーの競合が発生します。
- bar.cはすでに「通常」のステータスで私の作業コピーにあります
- foo.cは、木の競合で欠落しているとマークされています
ほとんどの場合、開発者Aの変更をfoo.cに変更したbar.cに統合する必要があります。
しかし、どうすればできますか?
開発者Aの変更を含むFOO.Cは、私のブランチWCには存在しません。
Tortoisesvnヘルプ 「」と言います不足しているファイルをリポジトリからコピーして、解決されたままマークすると、コピーが再度削除されることに注意してください。最初に紛争を解決する必要があります。”
だから、チェックアウトする必要があるはずです トランク foo.cファイルにアクセスできるようにするには?この問題を解決するためのより簡単なアプローチはありますか?
私たちを手伝ってくれますか?
解決
からの変更をマージするために、「2つのURLマージ」を使用できます Foo.c
分岐して改名された「トランク」に Bar.c
.
cd branch/B
svn merge http://www/svn/svnroot/branches/B/Bar.c http://www/svn/trunk/Foo.c Bar.c
一方、branch/bは作業コピーです。
最終的に紛争開発者AとBを削除するには、同じファイル名に同意する必要があります。同じコードに異なるファイルを使用することは望ましくない場合があります。
編集:「他の」VCSがこの問題にどのようにアプローチするかを見ると、私はしたいと思います 引用 段落から 「ファイルの変更とマージの変更」:
ファイルを変更して新しい名前に名前を変更してから、それぞれの変更をマージすると、元の名前の下のファイルの変更が新しい名前でファイルに伝播されます。 (これは「単純に機能する」と予想されるかもしれませんが、すべての改訂制御システムが実際にこれを行うわけではありません。)
たぶん与える理由 水銀 試してみてください。
他のヒント
私はZellusの解決策が好きです。また、ファイルの移動をブランチにマージし、マージをトランクに戻すこともできます。
大きな枝を統合するときに私がすることは、最初にトランクを枝にマージし、すべての競合(木の競合を含む)を解決し、結果をトランクに戻すことです。これにより、マージ期間中もトランクがより長く安定します。