問題タブ [tree-conflict]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
svn - SVN ツリーの競合を解決するにはどうすればよいですか
tortiseSVN 1.8を使用してツリーの競合を解決する方法を見つけようとして、何日も読んでいます。私はトランクから2つのブランチを持っています:
- ブランチ/3.1
- ブランチ/3.2
繰り返しますが、これらの枝は両方とも幹から外れていました。トランクの「メインライン」開発は行いません。3.1 ブランチの変更を 3.2 ブランチにマージしようとしています。
3.1 のコードはいくつかのリファクタリングを経て、3.2 ブランチに存在する多くのフォルダーが 3.1 ブランチには存在しなくなりました。また、新しいフォルダを 3.2 に追加するいくつかの新しい作業があります。問題は、ツリーの競合によって競合を解決する方法が得られず、作業コピーを受け入れることしかできないことです。これは深刻な欠陥のようです。私たちは多くのリファクタリングを行っており、以前のリリース ブランチの変更を後のリリース ブランチに統合できるプロセスを探しています。
誰かがこれを処理する最善の方法を教えてもらえますか?
svn - この Subversion のマージが、マージの競合ではなく、ツリーの競合につながるのはなぜですか?
質問
ファイルの2行目が同時にa.txt
変更されたためtrunk
、ファイルでマージの競合が発生することが予想されました。branch/featurex
- マージの競合ではなく、ツリーの競合が発生するのはなぜですか?
- 競合を表示するにはどうすればよいですか?
svn diff
? - この競合を解決するにはどうすればよいですか?
状況を再現する例
ツリーの競合を再現するには、 と を変更しtrunk
てbranches/featurex
にマージtrunk
してみてくださいbranches/featurex
。
ブランチを作成します。
トランクで変更をコミットします。
ブランチで変更をコミットします (マージの競合を作成するために同じ行で):
トランクをブランチにマージします。
予想外のツリー競合です。
のコンテンツにa.txt
は、マージの競合があるマージは表示されません。次のコンテンツを含む「ブランチ バージョン」が表示されるだけです。
バージョン
2012 年 12 月 12 日 21:11:09 にコンパイルされた Subversion バージョン 1.7.8 (r1419691)
svn - 名前が変更されたフォルダーをマージするときの SVN ツリーの競合
TortoiseSVN を使用して、フォルダーの名前変更など、trunkからの最新の変更をbranch-Bにマージしています。
その前に、ブランチ Aをトランクに再統合しました。そのブランチでは、フォルダの名前が変更され、その中のファイルが変更されていました。Branch-Bにはこれらのファイルの異なるリビジョンが含まれていますが、フォルダーには元の名前が残っています。
Trunkをbranch-Bにマージする場合、SVN は単に名前を変更したフォルダーを新しいフォルダーとして追加し、元の名前のフォルダーでツリーの競合を報告します。ファイルのリビジョン自体がマージされることはなく、両方のフォルダーが残っています。適切な svn:mergeinfo をすべて保持しながら、可能な限りクリーンなマージを行うために複数のオプションを試しましたが、何も機能していないようです。
このマージをきれいに完了するための正しい方法を知っている人はいますか?
TortoiseSVN 1.8.10、サブバージョン 1.8.11
ビジュアルは次のとおりです。
TL;DR: 2 つのブランチのいずれかで含まれているフォルダーの名前が変更された場合、2 つのブランチ間でファイル リビジョンをきれいにマージするにはどうすればよいですか?
svn - TortoiseSVN - マージ - 新しいフォルダが原因でツリーの競合が発生しました
ブランチ A をブランチ B (ローカル作業コピー) にマージし、ブランチ A が新しいファイルを含むいくつかの新しいフォルダーを追加しました。新しいフォルダーはすべて「ツリーの競合」としてフラグが付けられ、次のエラー メッセージが表示されます。
冗談ではありませんが、それはローカルにありません。他のブランチで作成されたものであり、その中のすべてのファイル/フォルダーとともにローカルの作業ブランチにコピーする必要があります!
私は、ツリーの競合が何であるかについて十分に理解しており、これが 1 つであってはならないと考えています。A の新しいフォルダは B には存在しませんでした!
私に何ができる?WinMerge を使用して 2 つのブランチ間で diff を実行し、「左の一意の項目を表示」のみを選択すると、B で削除されたファイルが A で削除されていないため、エラーが発生しやすくなります。
svn - svn reintegrate は奇妙な競合を引き起こします
Tortoise SVN (v 1.7.13) を使用してフィーチャー ブランチをトランクに再統合するのに問題があります。プロジェクト A はトランクでいくつかの作業を行っており、並行して行う必要がある他の作業のために、ブランチを作成しました。ブランチの作業が完了したので、トランクに再統合しようとしています。
次の手順を実行しました:
1 - トランクをチェックアウトする
2 - ブランチをマージ/再統合
する 3 - 競合を解決する
4 - コミットする
これが私が理解していないことです。
1 - 3 で発生する競合は意味がありません。ブランチからフォルダーが削除されたと表示されますが、そのフォルダーはブランチまたはトランクには存在しません。
2 - 再度マージ/再統合する場合にコミットした後、すべての競合が戻ってきます。それは私がそれをしたことがないようなものです。
svn - 重複したファイルの追加から SVN ツリーの競合を解決するには?
同じファイル (画像) がトランクと現在のブランチの両方に個別に追加され、両方にチェックインされました。トランクからブランチにマージしようとすると、ツリーの競合が発生します。この競合を解決する最も簡単な方法は何ですか? (標準の「解決」を使用するだけでは何もしません)
merge - トランクでのみ触れられたファイルのツリー競合
Tortoise SVN を使用して機能ブランチをトランクにマージしようとしています。
トランクとブランチの両方で、フォルダーの削除と移動を含む多くの変更が行われました。
同じファイルまたはフォルダーがブランチで変更され、トランクで削除/移動された場合、またはその逆の場合に、SVNがツリーの競合を報告することを期待します。
ただし、マージの反対側でこのファイルがまったく変更されていない場合でも、トランクまたはブランチで削除または移動されたすべてのファイルとフォルダーに対してツリーの競合が報告されます。
したがって、ブランチが作成された後にトランク内のフォルダーを削除し、ブランチ内のそのフォルダーまたはその中のファイルに誰も触れない場合、その変更をマージするときにツリーの競合が発生します。
ブランチをトランクにマージしようとしても、トランクからブランチに変更をマージしようとしても問題ありません。
私のクライアントは TortoiseSVN 1.8.11、Subversion 1.8.13 で、リポジトリはバージョン 1.6.17 です。
これらの奇妙なツリー競合の原因は何ですか?どうすれば回避できますか?