[英]How to apply diff made by windows SVN on linux?
在Windows上我创建了一个多文件差异:
svn diff > mydiff.diff
然后将其移动到linux机器(使用相同版本的相同repo,没有更改)。 我怎么用它? 执行后
patch -p0 < mydiff.diff
我得到以下输出:
patching file licstat/test/unittest/test_licstatactioncontainers.cpp
File licstat/test/unittest/test_licstatactioncontainers.cpp is not empty after patch, as expected
patching file licstat/test/unittest/test_licstatactions.cpp
Hunk #1 FAILED at 99.
1 out of 1 hunk FAILED -- saving rejects to file licstat/test/unittest/test_licstatactions.cpp.rej
can't find file to patch at input line 295
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: licstat/test/unittest/test_licenseserverusagemap.cpp
|===================================================================
|--- licstat/test/unittest/test_licenseserverusagemap.cpp (revision 6767)
|+++ licstat/test/unittest/test_licenseserverusagemap.cpp (working copy)
--------------------------
File to patch:
最后一行是等待我的行动。
我应该如何创建/应用补丁以使其工作?
(编辑)现在我看到,文件丢失了,差异没有创建它。 手动创建文件后,我得到这样的错误:
patching file licstat/misc/generic/mysql/stored_procedures.sql
Hunk #1 FAILED at 220.
Hunk #2 FAILED at 245.
Hunk #3 FAILED at 622.
Hunk #4 FAILED at 661.
Hunk #5 FAILED at 810.
Hunk #6 FAILED at 822.
Hunk #7 FAILED at 868.
Hunk #8 FAILED at 999.
8 out of 8 hunks FAILED -- saving rejects to file licstat/misc/generic/mysql/stored_procedures.sql.rej
如果在Linux上的文件中有CR + LF换行符,则使用“dos2unix”将无济于事。
此命令应该使用换行符的任意组合来完成工作:
patch -p0 -l --binary < patch.diff
当你在unix系统上时,当本地文件格式是CRLF而不是LF时,可能会发生这种类型的错误。
补丁尝试使svn diff补丁适应unix文件格式,但当本地文件处于dos模式时会跳闸,这可能发生在dos和unix环境之间共享代码库时。
对我有用的是首先转换即将受影响的所有文件,例如:
grep ^+++ patchfile.patch | awk '{print $2}' | dos2unix
然后应用补丁:
patch -p0 < patchfile.patch
我经常在windows和mac系统之间修补文件, patch
似乎确实正确地处理了换行,所以我不认为这是问题所在。 看起来你可能已经删除了test_licstatactioncontainers.cpp
,第一个警告就是这个。 第二个似乎抱怨没有找到文件本身。
这可能是文件名案例问题吗? Windows对文件名大小写不敏感,但Linux不是。 该文件实际上是linux上的Test_LicenceServerUsageMap.cpp吗? 还是目录LicStat / Test?
尝试使用dos2unix
命令将补丁文件中的行结尾从DOS转换为Unix。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.