私は最近、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.
私の作業トランクは最新です。新しいフォルダを別のフォルダにチェックアウトして、マージを混乱させているローカルの問題がないことを確認しました。私はこれについてさらに調査を行いましたが、問題の一部はユーザーエラーだと思います。私たちの問題は次のとおりです。
- 1.5より前と1.5より後にSubversionクライアントで作業をコミットする開発者がいました。これにより、マージ情報が破損する可能性があると思います。
- 他のブランチでは、部分的なマージを実行しました。つまり、ブランチのルートで常にマージを実行したわけではありません。これは、同じブランチ内でFlexと.NETの取り組みを更新しやすくするためでした。
- ブランチで循環(再帰)マージを実行しました。これは、複数の並列ブランチがあり、トランク内の最新のコードでブランチを定期的に更新したかったために行われました。
これらのすべては、Subversionの本/チームによって明示的に推奨されていません。私たちはレッスンを学び、今ではベストプラクティスを知っています。ただし、最初に最新のブランチをマージしてコミットする必要があります。
私たちが直面している問題を修正するための最良の方法は何ですか?
トランクとブランチのすべてのマージ情報を削除することは実行可能な解決策でしょうか? いいえ。これを実行しましたが、上記のエラーは解決されません。