2017-08-10 237 views
2

ここにいくつかの類似の質問がありますが(例えばSVN - Reintegration Merge error: "must be ancestrally related")、Web上では私のSVNリポジトリすべてでエラーが発生するのはなぜですか? 。他のすべてのQとは対照的に&私が見つけたように、私は実際にsvn mergeを正常に実行することができます。たとえば、元に戻す以前はpom.xmlファイルにコミット:svn mergeinfo - E195016: "祖先に関連していなければなりません"

svn merge -r 17409:17408 pom.xml 
--- Reverse-merging r17409 into 'pom.xml': 
U pom.xml 
--- Recording mergeinfo for reverse merge of r17409 into 'pom.xml': 
U pom.xml 
--- Eliding mergeinfo from 'pom.xml': 
U pom.xml 

しかし、私はsvn mergeinfoを実行したときに、私は次のエラーを取得:この例では

svn: E195016: 'https://../trunk/MyProject/[email protected]' must be ancestrally related to 
'https://../trunk/[email protected]' 

を、50446は、現在の最新リビジョン番号です私が試したすべてのファイルに対して同じエラーが発生します。私はトップディレクトリ自体にmergeinfoコマンドを実行した場合にのみ、それが動作します:

svn mergeinfo . 
    youngest common ancestor 
    |   last full merge 
    |   |  tip of branch 
    |   |  |   repository path 
    50446    50446 
    |     |  
    -------| |------------   ../trunk/MyProject 
    \       
     \       
     --| |------------   ../trunk/MyProject 
         |  
         50446 

とにも見知らぬ人には、私が設定されたすべてのmergeinfoプロパティを見つけることができません。 svn propget svn:mergeinfo --recursiveまたはsvn propget svn:mergeinfo --depth=infinityのようなコマンドは何も出力せず、ステータスコード0で正常に戻ります。

私たちのファイルを、彼らが所在するプロジェクトに再び "祖先に関連する"ように修正する方法はありますか?

答えて

1

短い回答:svn mergeinfo <file>が間違っています。 SVNのドキュメントから

(SVNヘルプmergeinfoは):あなたのコマンドは svn mergeinfo pom.xmlのようなものだった場合、そのファイルとの間には「ancestrally関係」はありませんので、

"Summarize the history of merging between SOURCE and TARGET."

"SOURCE and TARGET are the source and target branch URLs, respectively."

"The default TARGET is the current working directory ('.')."

ので、エラー・メッセージが、期待されているようそれはディレクトリです。
正しいコマンドは、svn mergeinfo pom.xml pom.xmlです。その2つのファイルを比較し、おそらくあなたが望むものです。

svn mergeinfo .を実行すると、svn mergeinfo . .と同じです。それで、それは動作し、あなたはmergeinfo出力を取得します。

svn mergeinfo pom.xml [email protected]を実行して、特定のリビジョンを比較することもできます。


関連性のないものをマージしようとすると、このエラーが発生することがあります。
手動でディレクトリツリーやファイルを作成した場合 (私は意味:分岐機能を使用せずに)、その後、それらが関連していないとこのエラーが発生します。

this questionを読んで、作成者が手動でブランチdevを作成し、SVNを破ったことに注意してください。この場合

最善の解決策は、通常、ブランチを作成し、手動でこのブランチにすべてのファイルを移行する(すべてをコピー&ペースト)して、トランクに戻ってそれをマージすることです。

+0

ファーバック私がコミット見る歴史の中で(SVNログイン 'と--verbose --stopオンcopy')誰かがそれ' D /ベース/トランク/ libに/ Plugin'を削除して追加することにより、ディレクトリを移動した場合別のトランク 'A/tools/trunk/plugin(/ base/trunk/lib/plugin:16026から)'にコピーします。なぜ私はそれらのエラーを得るの説明ですか? – dokaspar

+1

@dokaspar質問を再読して、あなたの問題を誤解していることに気付きました。あなたの問題に正しく対処するための私の答えを改善しました。どうぞ、あなたはそれを確認できますか? – MiguelKVidal

+0

もう一度RTFMに変わります:) – dokaspar

関連する問題