1

ツリーの競合が発生し続け、すべてのスレッドを読んでも理由を理解できないようです。私のバックグラウンドはクリアケースであるため、svnは私にとって新しいものです。ツリーの競合は、クリアケースアクティビティに関連付けると意味がありません。以下は、問題の原因となる私の状況です。

トランク、ブランチ、タグ領域の標準的なsvn構造があります。トランクは本番コードであり、開発者はここでは作業しません。

この開発者は、ブランチ領域にfix1というディレクトリを作成し、この領域で作業するファイルをトランクからコピーします。作業が完了すると、リリースグループは変更をトランクにマージします。これは正常に機能します

次の開発者は、fix2という名前のブランチの下にディレクトリを作成し、トランクからファイルのコピーを取得します(前の例ではrmによってマージされたばかりです)。変更が行われると、これはトランクにマージされ、ツリーの競合が発生します。

すべての場合において、開発者は自分の作業領域でsvn upを実行し、rm人はマージバックの前にsvnupを実行しました。

どちらの場合も、rmの人はディレクトリをトランクに変更し、svn merge../branches/fix1またはsvnmerge../branchs/fix2を実行しました

質問は3つあります

ツリーの競合の原因は何ですか?

競合を解決すると(svn resolve -R --accept = working)、ファイルの内容がマージされませんか?

このタイプの作業に推奨されるアプローチは何ですか?

どんな助けでも大いに感謝されるでしょう。

ありがとう

4

1 に答える 1

2

問題は、おそらくブランチの作成方法に起因します。

この開発者はブランチ領域に fix1 というディレクトリを作成し、トランクからこの領域で作業するファイルをコピーします。

それはすべきことではありません。ファイルを手動でコピーしないでください。代わりに、トランクからブランチを作成し、作業コピーをこのブランチに切り替え、変更を加えてコミットする必要があります。定期的に、ブランチでの作業が終了したら、トランクからブランチにマージして、トランクからブランチにすべての変更を組み込む必要があります。

次に、トランクに切り替え、ブランチをトランクに再統合し、コミットして、ブランチを削除する必要があります。

これについては、SVN bookで詳しく説明されています。

于 2012-12-27T14:04:06.270 に答える