gpt4 book ai didi

linux - 无法应用嵌套目录的补丁

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:40 27 4
gpt4 key购买 nike

我正在尝试创建简单的补丁,但文件位于不同的目录中。

我的目录结构是:

/-|hello_new.c
|-1/-|
|-2/-|
|-3/hello.c

//hello_new.c:
#include <stdio.h>

int main(int argc, char *argv[]) {
printf("Hello World\n");
}

//hello.c:
#include <stdio.h>

int main()
{
printf("Hello World\n");
}

我使用以下方法创建补丁:

diff -u 1/2/3/hello.c hello_new.c > hello.patch

我的补丁文件是 hello.patch:

--- 1/2/3/hello.c       2016-02-09 13:31:04.904763020 +0530
+++ hello_new.c 2016-02-08 18:35:47.299940190 +0530
@@ -1,6 +1,5 @@
#include <stdio.h>

-int main()
-{
+int main(int argc, char *argv[]) {
printf("Hello World\n");
}

现在我应用补丁使用:

patch < hello.patch

但是我得到了补丁文件hello_new.c检测到反向补丁。

最佳答案

您可以使用 -p option 来解决这个问题补丁:

-p number
--strip=number
Set the file name strip count to number. See patch Directories.

如果补丁文件中的前/后级别不同,请记住 patch 优先于 before 部分中的级别数(第一行标题)。所以你可以做

patch -p3 < hello.patch

避免此实例的反向补丁问题。

这是 GNU 补丁,您可以通过添加 --dry-run 选项来预览结果(以避免对反向补丁消息给出正确响应的麻烦):

$ patch -p3 --dry-run < hello.patch
patching file hello.c
Hunk #1 succeeded at 2 with fuzz 2 (offset 1 line).

当测试补丁时,例如,如果它们没有完全匹配(例如制表符/空格转换、回车换行符),我会预览补丁,并且可能会添加一个- l 选项可帮助 patch 减少拒绝。

关于linux - 无法应用嵌套目录的补丁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35287012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com