29

svnチームがいつツリーの競合を発生させることを決定したかはわかりませんが、svnのマージ機能が完全に壊れています。

ブランチがあり、トランクからの最新の変更をブランチにマージしたいと思います。私はすでにそのようなマージを1つ実行しましたが、これはツリーの競合のために失敗します。コマンドは次のとおりです。

$ svn --force merge -r 3185:3192 svn://chamar2/rx-services/SAMS .
svn: Attempt to add tree conflict that already exists

このマージを(なしで--force)初めて試したときは、ツリーの競合が発生しただけで、何もマージされませんでした。これで、上記のメッセージが報告されます。

ブランチの作業コピーを実行svn statusすると、まだトランクにマージされていない変更が加えられたすべてのファイルが表示されます。もちろん、私のブランチの目的は、まだトランクにない場所でこれらの変更を行うことです。

彼らがこれをしたとき、彼らは何を考えていましたか?

ツリーの競合の原因と、svnがこれらのものを作成したので、作業を続行する方法についての有用な情報は見つかりませんでした。

ツリーの競合を忘れて、以前と同じようにマージを行うようにsvnに指示する方法はありますか?

1.6クライアントと古いsvnサーバー(おそらく1.3.1)を使用しています。

4

4 に答える 4

15

問題は、親/トランク/ディレクトリではなく、親/ディレクトリをマージのソースとして選択したことであることが判明しました。ユーザーエラーでしたが、ツリーの競合メッセージがわかりにくいです。svnが先に進んでマージを実行した場合、問題はすぐにわかります。

ツリーの競合により、慣れるまでに時間がかかる新​​しいメッセージセマンティクスが導入されました。

TreeConflictsに関するTortoiseのドキュメントへのポインタをありがとう。これは、ブランチでの作業に対処するために私が見た唯一のドキュメントです。ただし、与えられた例では、ブランチで変更したファイルでツリーの競合が発生した理由は説明されていません。ツリーの競合メッセージには、多少の慣れが必要です。

ほとんどの場合、ツリーの競合を解決済みとしてマークするだけであるように見えます。これらの場合、ツリーの競合は単なるノイズのように見えます。

Mark Phippardは、古いバージョンのサーバーではツリーの競合は発生しないと述べています。サーバーを更新する必要があるのは、マージトラッキングのサポートが必要で、サーバーが1.5より前の場合のみです。どうやらマージトラッキングは古いsvnサーバーに欠けている唯一のものです:

http://eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448
于 2009-07-29T14:17:10.403 に答える
11

svn:すでに存在するツリーの競合を追加しようとしています

競合を生成するマージを実行した後、同じマージを再度実行したため、Subversionは不平を言っています。SVNは競合を追加しようとしましたが、以前のマージ操作によって競合がすでに作成されていることに気付きました。したがって、警告を正しく出力します。

マージ操作を実行しても結果に満足できない場合は、他のことを試す前に、まずローカルの変更を元に戻す必要があります。

元のツリーの競合について:動作が古いクライアントと異なる理由とそのような競合を解決する方法を理解するには、svnブックのツリーの競合に関するセクションを読む必要があります。tortoiseSVNマニュアルには、ツリーの競合に関する優れたトピックもあります。

于 2009-07-28T14:06:25.503 に答える
2

1.6クライアントと1.3サーバーの間の悪い相互作用を観察していると思います。ツリーの競合検出は1.6の新機能です。また、マージのサポートが1.5に変更されました(さらに使いやすくなりました)。

サーバーとリポジトリの形式を1.6にアップグレードしてみます。もう1つ試してみるのは、1.5(ツリーの競合なし)または1.4(新しいマージもなし)のクライアントを使用することです。

繰り返しますが、これはすべて推測であり、実際には役に立たない可能性があります...

于 2009-07-27T20:39:13.340 に答える
0

やあみんな私はまったく同じ問題を抱えていました、私がsvnマージを行おうとしたときにツリーが競合しました。Laurynasは絶対に正しかったことがわかりました。これは、svnリポジトリが古いバージョンであったために発生していました。サーバーで、ディレクトリ{repopath} \ db \ formatに移動し、フォーマットファイル内に「2」が含まれていました。

私がしたのは

svnadmin upgrade {repopath}

それはかなり痛みがありませんでした。

その後、マージトラッキングを使用しようとしたときに、ツリーの競合が発生しなくなりました。ヒントをありがとう!

于 2012-03-28T02:31:23.057 に答える