2011-01-14 21 views
8

私はこのようなパッチファイルがあります:SVN作業コピーに適用するパッチがSVN作業コピー上のパッチファイルを拒否しているのはなぜですか?

Index: dir/file.xml 
=================================================================== 
--- dir/file.xml (revision 178) 
+++ dir/file.xml (working copy) 
@@ -7,7 +7,7 @@ 
    <markup> 
- <markup /> 
+ <markup></markup> 
    <markup> 
    <markup> 
@@ -20,6 +20,7 @@ 
    <markup> 
    <markup> 
+ <tag> 
    <markup> 

は、私が使用して分枝状:

$ svn copy -r 178 trunk/component/dir branches/mybranch 

をそれから私は

$ cd branches/mybranch 
$ ls -R 
./dir: 
file.xml 
$ patch -p0 -i ~/patchfile.patch 

が、SVNの出力を試してみましたis

(Stripping trailing CRs from patch.) 
patching file dir/file.xml 
Hunk #1 FAILED at 7. 
Hunk #2 FAILED at 20. 
2 out of 2 hunks FAILED -- saving rejects to file dir/file.xml.rej 
ファイルごとに3210

SVNがパッチを拒否する原因は何ですか?私はUNIXマシンですが、パッチとリポジトリにはWindowsの行末があります。

ありがとうございました!

答えて

7

dos2unixチップは悪くないが、示唆したように問題を解決しなかった。私は実際にすべてのファイルにパッチを適用するためにやった

$ cd branches/mybranch 
$ sudo apt-get install tofrodos 
$ fromdos ~/patchfile.patch 
$ fromdos */* 
$ patch -p0 -i ~/patchfile.patch 
$ todos */* 

そこで、基本的patchは、Unixの下CR/LFラインを扱う問題を抱えているようです。それをLFに変換し、パッチを当ててパッチを適用した後にそれを元に戻します。

クレジットはステファンです。

+0

これも私の問題を解決した、ありがとう。確かに、patchとpatchの両方のファイルでも、patchはCRLFをうまく扱えないようです。 –

+0

パッチはパッチファイルとパッチを当てるファイルの両方が同じ行末(つまりCRLF/LF)に続く場合、CRLFを使用して私にとってうまく機能しました –

1

パッチファイルでdos2unixツールを試すことができます。それは行末を変換します。

+1

そうでした。今では "(パッチから後続CRを取り除く)"という言葉はもうありません。エラーは依然として存在します。 – Simon

+0

@Stefan dos2unixはパッチ適用をOKにします。しかし、結果に改行はありません。私の場合、exのファイルにはcatdogcow – onmyway133

+0

が含まれています。パッチファイルではなく、これが問題で、それはソースファイルです –

-1

編集された: したがって、patchはSVNツールではありません。 SVNはパッチファイルを間違って作成しない限り、これに直接的な影響はありません。

パッチファイルがトランクから作成されていますか?もしそうなら、あなたのコピーはパッチが基づいていたものと同一でなければならないので、失敗する理由はないはずです。私が考えることができる唯一の結論は、パッチファイルに何か問題があることです。あなたのファイルと一致しません。

は、あなたの作業コピーのディレクトリ/ file.xmlが本当にあるはずですので、(私は、あなたの質問内のコードは、とにかく編集したコピーであると仮定していますライン7から始まる

<markup> 
    <markup /> 
    <markup> 
    <markup> 

が含まれていることを確認しますそこには7行ではなく4行です。)つまり、ファイルの内容はパッチの内容と一致しますか?スペースや行末には特に注意してください。もしそうであれば、パッチがそのハンクに失敗する理由はないはずです。

+0

ありがとう、ザック。しかし、私はパッチが堕落の一部ではないことを知っています。いくつかの試行の後、私はまた、このフォルダの質問に出くわしました。私は言っただろう、その 'dir'は実際に私の枝にある。 'patch -p [N]'を実行すると 'file not found'などのエラーが返されました。私の編集を見てください。ありがとう! – Simon

関連する問題