2009-07-27 20 views
27

svnチームがツリーコンフリクトを起こすことになったときはわかりませんが、svnのマージ機能が完全に壊れました。svnのマージ機能がツリーコンフリクトで壊れていた

私はブランチを持っており、ブランチからトランクへの最新の変更をマージしたいと思います。私はすでにこのようなマージを行ってきましたが、これは木の衝突のために失敗します。ここではコマンドです:

$ 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)を使用しています。

+2

SVNは機能としてツリーの競合を追加しませんでした。それらは改訂管理の本質に内在している。さて、あなたは、SVNがツリーの競合についての貧弱な仕事の処理やメッセージングをしていることを知ることができますが、少なくともそれを検出して、何が起こっているのかを知らせようとします。 –

答えて

12

問題は、parent/trunk /ディレクトリの代わりにparent /ディレクトリをマージ元として選択したことが原因であることが判明しました。ユーザーエラーですが、ツリー競合メッセージが混乱しています。 svnが先に進んでマージを行った場合、私はすぐに問題を見たでしょう。

ツリー競合により、慣れ親しんだ新しいメッセージセマンティクスが導入されました。

Tree Conflictsに関するTortoiseのドキュメントへのポインタをありがとう。私が見た唯一のドキュメンテーションは、ブランチ上で働いていることです。しかし、私がブランチ上で修正したファイル上でツリーの競合が発生した理由については説明しません。ツリーの競合のメッセージは、慣れるまでに時間がかかるでしょう。

ほとんどの場合、ツリーの競合が解決されたように見えますが、このような場合はツリーの競合がノイズに過ぎないように見えます。

Mark Phippardは古いバージョンのサーバーではツリーの競合が発生しないとしています。マージ追跡をサポートし、サーバーが1.5より前の場合は、サーバーを更新する必要があります。どうやら、マージ追跡を古いSVNサーバから欠落している唯一のものです:私はSVNのマージを行うにしようとしていたとき

http://eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448 
+1

ツリーの競合:各サブディレクトリを1行としてテキストファイルとしてディレクトリを考えます。今、そのファイルから行を追加して削除し、マージすると、競合が発生します。これは、マージエディタが存在しないということだけです(明らかに、dirを適切な場所にコピーし、解決済みとマークすることです)。 – gbjbaanb

2

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

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

繰り返しますが、これは...すべての推測であると本当に便利ではないかもしれません

+0

私はクライアントを1.5にダウングレードすることを考えましたが、svnには新しいバージョンごとに作業コピーのフォーマットを変更するという厄介な癖があり、1.6の作業コピーは1.5クライアントでは動作しません。私はクライアントをダウングレードして新しいチェックアウトをしなければならないかもしれません。 –

10

のsvn:あなたがやった後であるため、すでに

Subversionを存在するツリーの競合を追加しようとしましたが不平を言っていますどのコンフリクトが発生したかをマージすると、は再び同じマージを行いました。 SVNは競合を追加しようとしましたが、競合が以前のマージ操作ですでに作成されていることに気付きました。したがって、警告が正しく出力されます。

マージ操作を実行して結果に満足できない場合は、を実行してから、先にをローカルの変更に戻す必要があります。

元のツリーの競合について:以前のクライアントと動作が異なる理由とそのような競合を解決する方法を理解するには、svnブックのsection on tree conflictsを参照する必要があります。 tortoiseSVNマニュアルもgood topic on tree conflictsです。

+4

私はちょうど "既存のツリーの競合を追加しようとしました"という新しいマージを行っています。 "スプールされたREPORT要求応答を読み取る際にエラーが発生しました" – fiddlesticks

+2

-1:以前のマージを行わずに新しくマージした場合にこのエラーが発生します。私はそれが同じマージで2つの木の衝突であると信じています。 – darreljnz

-1

はちょっとGuysは、私はまったく同じ問題が、ツリーの競合を持っていました。それはLaurynasが絶対に正しいことが分かった。 svnリポジトリが古いバージョンであるために発生していました。サーバー上で私はディレクトリ{repopath} \ db \ formatに入り、フォーマットファイルの中に "2"が入っていました。

私がしたすべてはかなり無痛だった

svnadmin upgrade {repopath} 

を行いました。

マージトラッキングを使用しようとしたとき、私はそれ以上ツリーの競合を起こさなかった!ヒントをありがとう!

関連する問題