【问题标题】:How do I apply a patch that contains a file that doesn't exist?如何应用包含不存在文件的补丁?
【发布时间】:2014-12-15 10:43:34
【问题描述】:

我正在为 svn 工作副本应用补丁。在补丁文件中包含一个新文件。

Patch 通常会返回如下内容:

can't find file to patch at input line 344
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/user-features/src/main/java/com/app2/util/SearchRelevanceHelper.java b/user-features/src/main/java/com/app2/util/SearchRelevanceHelper.java
|new file mode 100644
|index 0000000..c10b3ae
|--- /dev/null
|+++ b/user-features/src/main/java/com/yookos/util/SearchRelevanceHelper.java
--------------------------
File to patch:

我该如何处理?

【问题讨论】:

  • 您的补丁文件由Git生成。 git help diff 表示“-p 选项产生的结果与传统的 diff 格式略有不同”。也许这就是patch 无法应用的原因...
  • 补丁文件是使用git format-patch创建的
  • 摘自:man help format-patch: "git format-patch产生的补丁是UNIX邮箱格式... ... ...并应用它们与git am".

标签: svn patch


【解决方案1】:

我用 cygwin patch 命令试过你的补丁。

afusilde@LFR408288 ~/testdir
$ cat newpatch
diff --git a/user-features/src/main/java/com/app2/util/SearchRelevanceHelper.java b/user-features/src/main/java/com/app2/util/SearchRelevanceHelper.java
new file mode 100644
index 0000000..c10b3ae
--- /dev/null
+++ b/user-features/src/main/java/com/yookos/util/SearchRelevanceHelper.java

afusilde@LFR408288 ~/testdir
$ mkdir test

afusilde@LFR408288 ~/testdir
$ cd test

afusilde@LFR408288 ~/testdir/test
$ patch < ../newpatch
patching file SearchRelevanceHelper.java

afusilde@LFR408288 ~/testdir/test
$ ls
SearchRelevanceHelper.java

对我来说没问题。您是否使用 GNU 补丁 命令?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多