私は最近、Subversionでのマージの結果をコミットすることに関して特に厄介な問題に遭遇しました。 Subversionサーバーは@ 1.5.0で、TortoiseSVNクライアントは@ 1.6.1です。
機能ブランチをトランクにマージしようとしています。マージは正常に機能するようです。ただし、コミットは次のエラーメッセージで失敗します。
Commit failed (details follow):
File
'flex/src/com/penbay/invision/portal/services/http/soap/ReportServices/GetAllBldgsParamsByRegionBySiteResultEvent.as'
is out of date
'/svn/ibis/!svn/wrk/531d459d-80fa-ea46-bfb4-940d79ee6d2e/visualization/trunk/source/flex/src/com/penbay/invision/portal/services/http/soap/ReportServices/GetAllBldgsParamsByRegionBySiteResultEvent.as'
path not found
You have to update your working copy first.
私の作業用トランクは最新です。新しいフォルダを別のフォルダにチェックアウトして、マージを混乱させるようなローカルクラフトがないことを確認しました。私はこれについてさらに調査を行ったが、問題の一部はユーザーエラーだと思う。私たちの問題は次のとおりです。
これらすべては、Subversionの本/チームによって明示的に推奨されるものではありません。私たちはレッスンを学び、今ではベストプラクティスを知っています。ただし、まず最新のブランチをマージしてコミットする必要があります。
直面している問題を修正する最良の方法は何ですか?
トランクとブランチのすべてのマージ情報を削除することは実行可能なソリューションでしょうか? いいえ。これを実行しましたが、上記のエラーは解決しません。
私は今日同じ問題を抱えていて、中間のマージを行っていないので、あなたの最初の投稿から#1だけが適用されるかもしれません-しかし、私はubuntuのsvnクライアントとwindowsのtortoisesvnの両方からコミットしました。幸いなことに、トランクには変更が加えられていないため、トランクをブランチに置き換えることができました。おそらく異なるsvnバージョンですか?それはかなり心配です。
私の場合、履歴は失われませんが、svn move/copy/delete機能を使用すると、svnはトランクを移動し、svnはブランチをトランクに移動しました。
この問題が発生したばかりで、原因はディレクトリが競合しているというフラグが立てられていたようです。修正するには:
svn update
svn resolved <the directory in conflict>
svn commit
私はこれを1.6.2サーバー、1.6.8カメで取得していました。すべてWindowsで、このブランチにはマージされません。
ディレクトリの名前を変更すると、何らかの理由で(おそらくAnkhSVNによる)ディレクトリ内の2つのファイルが「通常」ではなく「置換」としてマークされていました。ディレクトリ内の他のファイルにいくつかの小さな変更が追加されました。
置換済みとしてマークされたファイルを元に戻すと、問題が修正されました。
私も同じ問題を抱えていて、次の方法で同じことを解決しました
svn resolve --accept=working <FILE/FOLDER NAME>
svn cleanup
svn update <FILE/FOLDER NAME>
svn commit <FILE/FOLDER NAME> -m "Comment"
これがあなたを助けることを願っています:)
作業コピーをコミットしようとしたときに同じ問題が発生しました。私がしたことは、Subversionが「パスが見つかりません」として報告するフォルダーを無視リストに追加することでした。コミット(成功するはずです)。次に、同じフォルダーをSubversionに追加し直します。再度コミットします。
私はちょうど同様の問題を抱えていましたが、問題を引き起こす分岐やマージはありませんでした。私の回避策は:
すべて順調です。
これは古い投稿ですが、この問題はかなり頻繁に発生します。私がそれを解決するために見つけた最も簡単な方法は、影響を受けるフォルダの.svn/all-wcpropsファイルの名前を変更/削除してから、更新を実行してコミットすることです。
私は同じ問題を抱えていましたが、その背後にある理由はわかりませんが、端末に入力して修正しました
svn update
そして、私はそれをコミットし、それがうまくいった!
この問題に対する満足のいく解決策を見つけることができませんでした。しかし、私は不満足な解決策を見つけました。
トランク内のすべてのファイルを削除し、これらの変更をコミットしました。次に、ブランチコードをトランクにエクスポートし、すべてのファイルを追加して、大規模なコミットを行いました。これは私のトランクが1:1のブランチを模倣しているという影響がありました(とにかく欲しいものです)。
残念ながら、すべてのファイルの履歴が「失われた」ため、これにより大きな格差が生じます。しかし、時間の制約により、他の選択肢はないようでした。
根本的な原因が何であり、今後それを回避する方法を知りたいので、他の人が持つかもしれない答えに興味があります。
Mac 10.6.5のSVN 1.6.5で同様の問題が発生し、SVN 1.6.9にアップグレードされ、コミットが成功しました。
ブランチに大量の変更をマージしてトランクに戻した後、同じ問題が発生しました。私が見ることができた2つの解決策は、 Pacifika によって提供されるsvn moveソリューションを実行するか、diffツールでファイルを手動でマージすることでした。しかし、私は回避策を見つけました...
動作していなかったマシンはSubversionクライアント1.6.5を実行していました。私はSubversion 1.5.4でマシン上でまったく同じことを行い、それは動作しました!両方のマシンで、1)トランクのクリーンチェックアウト、2)svn merge ...、および3)svn commitを実行しました。私のサーバーはそれが価値があるもののために1.5.xです。
これが誰かを助けることを願っています。
ああ少年!これは悪いようです!私が考えることができる唯一のオプションは、作業コピーが破損しているということです。
作業コピーを削除して、新しいチェックアウトを実行し、再度マージを実行してください。
それでもうまくいかない場合は、バグを記録してください。
削除されたパッケージ(さまざまなJavaクラスを含むが、パッケージからは何も必要なくなった)をコミットしようとしたときに同じ問題が発生しました。
問題を解決するための私の解決策/回避策:
ただし、時々、削除されたパッケージ(何も含まれていない)をコミットすることはできませんでした
私の回避策:
最後のヒント...
ただし、パッケージ/プロジェクトをもう一度同期すると、すべてが再び正常に機能するようになります。
私の構成について:
たぶん、ヒントの1つで誰かを助けることができます。
うわー、EclipseでSVNを使用していたので、これは解決するのに時間がかかりました。最後に、私のために働いた唯一のことは、影響を受けていないファイルをすべてコミットし、(Eclipseを閉じて)プロジェクトディレクトリの名前を変更し、SVNからプロジェクトを再チェックアウトすることでした。正しく動作するようになりました!
サーバー上でフォルダーを移動したときに似たようなものを見たと思いますが、作業コピーはまだ古いSVNフォルダー構造にバインドされていました。ブランチをマージする前に、誰かがトランク内を移動したかどうかはわかりません。
それは可能ですか?
私は同じ問題に遭遇し、頭を打ち、represotoryのディレクトリを「/」から「/ trunk」に変更し、TortoiseSVNで「Switch」コマンドを実行するのを忘れていたことがわかりました。
ジェイミー・ブロックに感謝します
ジェイミー・ブロックによると、
この問題が発生したばかりで、原因はディレクトリが競合しているというフラグが立てられていたようです。修正するには:
私はそれを疑いますが、おそらくあなたの作業ディレクトリでsvn cleanupを実行するのが助けになるでしょう。
どうやらSVNは非常に信頼できるプログラムではありません。私は同じ問題(TurtoiseでSVNを使用)を抱えていましたが、.csファイルのコンテンツを保存してから1リビジョン前に戻すことで解決しました。これは、次のような競合を示しました: "<<<<<<< filename filename my changes
=======リポジトリリビジョンからマージされたコード "
特別なことは何もしていません(一度リビジョンを設定し直すだけです)。
このファイルのコンテンツを保存済みのコンテンツに置き換えて保存し、TortoiseSVN→解決済みを選択しました。その後、リポジトリへの変更をコミットできます。
これは、ブランチとトランクの間のsvn:mergeinfo
プロパティの異常から抜け出す問題のように見えます。
これは次の質問につながります(私がやったことでコマンドラインの指示を許してください)。
トランクルートレベルまたはサブフォルダーレベルでマージしていますか?私の経験では、ルートレベルで行うのが常に最善です。これにより、トランク全体が一部ではなくマージされたと考えます(1.5.0ではsvnを大きく混乱させるようです)
私の次の質問は、--reintergrate
パラメーターを使用していましたか?亀でこれに到達する方法を決して覚えることはできませんが、ブランチからトランクに戻るときは、このパラメーターを使用する必要があります。
再統合する前にトランクをブランチにマージしましたか?これは、マージして戻すときに表示される競合を削除するのに役立ちますか?
ルートレベルにないブランチにsvn:mergeinfo
プロパティがありますか?これは常に問題を引き起こすことがわかっています。これはいつでもsvn -R pg svn:mergeinfo
にアクセスして見つけることができます。次に、ルートの下にあった場所とリビジョンを記録します。関連するものが見つかったら、svn merge --record-only -r start:end <location>
でそれらをルートに移動し、svn pd svn:mergeinfo <location>
でサブルートの場所から削除します。これらの変更をコミットする
すべて完了したら、もう一度マージしてみてください。