SVN Update が正しくマージされない原因は何ですか?
-
21-09-2019 - |
質問
数日前、私が持っている Delphi プロジェクトを Google Code でビルドするのに問題がある人からメールを受け取りました。私がチェックインしたいくつかの変更を彼が更新した後、プロジェクト ファイルと DFM ファイルの 1 つが書き換えられました。私たちは少し前後に話しましたが、SVN が余分なものを投入していると彼が言ったことにまでたどり着きました。ファイルを削除し、Update を再度実行したところ、正常に動作しました。
私はこの問題をこれまで見たことがなく、私の側ではそれを再現したり検証したりすることができませんでした。リポジトリへの書き込みアクセス権を持っているのは私だけなので、他のユーザーとの更新の競合はありませんでした。それで、何が原因でこうなったのか気になります。これは SVN の既知の問題ですか?それが起こらないようにする方法はありますか?
解決
、それがマージを試みます。そこに競合があるとSubversionは、それらを解決することはできません、それはあなたが手動で競合を解決するために、余分なディテールを追加する場合は、あなたは、DelphiでのコースのだろうBORK <<<<<<< .mine
のようなテキストが表示されます。また、Subversionが競合しなかった、自動的にマージをしたということが、破損しているDFMファイルにつながる可能性があります。
あなたはローカルの変更を持っていなかったので、あなたが問題を見ていない理由は、おそらくだったので、何のマージは必要ではなかったです。削除または元に戻すファイルをので、任意の更新がマージを実行する必要がありませんバックBASEに作業コピーをリセットします。
一つの解決法:あなたはのないの<のhref = "http://svnbook.red-bean.com/en/1.5/を設定し、その後、Subversionのでマージする必要があるテキストファイルがある場合SVN-book.html#のsvn.advanced.props.special.mime型」のrel = "nofollowをnoreferrer">のsvn:MIMEタイプの適切な非テキスト値に、それはバイナリとして扱われます、およびマージを試行しません。手動で問題を解決する必要があります。あなたはSubversionのに敏感なテキストファイルを保存する必要があるとの差分がコンテンツを表示したくない場合ちなみに、これも良いヒントです:)
他のヒント
彼または彼のローカル システムが 2 つのファイルを壊すことに成功したとします。
次に、更新したところ、動作しないことが判明したとします。いくつか指摘した後、彼はローカル MOD を使用してファイルを削除し、アップデートを実行し、そして...正しいファイルです!
Entia non sunt multiplicanda praeter necessitatem.
奇妙な構文エラーがコンパイラのバグであり、ファイルの破損が原因である可能性は常にありますが、 svn
バグ、通常はもっと平凡な理由があり、それをオンにしています オッカムのウィリアム より単純な説明が通常は正しいという権威があります。
「マングド」ファイルは、「鉱山」または「彼ら」のテキストが含まれていましたか。
ので、彼はおそらく彼の紛争解決をアップマックや不注意彼らや鉱山REVを犯してしまった場合。
それとも、マージは彼らがファイルの「無関係」の部分にあったので、それが変更を自動的にマージすることができると思ったことは完全に可能ですが、SVN(または任意のナイーブ自動マージ処理)のために、「無関係」だけでの行に意味/重複しませんでしたしません。
ファイル「ナイーブ」自動マージは、ファイルの内部の任意の構造について何も知らないので、簡単にそれが実際には変更がお互いに有害な副作用を持っていたときに無関係と考えている変更をマージします。知らずの正確のこのケースでは「余分なもの」への言及は、「鉱山」または「彼ら」の改訂の不注意commitalが最もらしいことを示唆しているものの、それは、確かに言うのは難しい「いじる」の性質おそらくます。
どのDelphiのバージョン?古いDelphiのバージョンは時々テキストDFMファイルがバイナリになっているバグを持っていました。
ファイルが突然任意のソース管理システムを殺すバイナリになってきます。
- イェルーン
あなたは、複数のプラットフォームに取り組んでいますか?あなたは(いくつかのcygwinのツールのような?)Unixのlineendingsを想定エディタを使用しています。
もしそうなら、あなたが適切にEOLスタイルのプロパティを設定している場合、チェックします。
私はSVNの更新を実行し、SVNは私が前に見たことがないと思います<<<<<<<<。鉱山、とDFMファイルをいじくるありました。私は、Delphiは私がプロジェクトを開くことができるようになる前に、手動でそれらの変更を削除する必要がありました。