0

我需要一种自动化的方式来向配置文件中添加一行。我曾经diff创建一个我想要应用的 .diff 文件patch。但是,我需要修补的文件可能会在其他地方稍作修改。例如,在配置文件的其他地方添加了一些其他行。

我认为这patch实际上会很聪明,并确定补丁是否仍然可以在没有冲突的情况下应用,但是每当我尝试将补丁应用到与原始文件略有不同的配置文件时,我都会收到错误消息。

我需要传递任何其他标志patchdiff使其不那么严格吗?我正在使用生成 .diff 文件

diff -ruN oldfile.conf newfile.conf > mypatch.diff

然后使用

patch myconfig.conf mypatch.diff

我想要的是补丁会尝试相当自由地应用补丁,如果它不知道如何,只返回一个警告,而不是一个错误。目前我看到这些错误:

jeroen@jeroen-ubuntu:~/Desktop$ diff -ruN default.conf default_new.conf > mypatch.diff
jeroen@jeroen-ubuntu:~/Desktop$ patch default2.conf mypatch.diff 
patching file default2.conf
Hunk #1 FAILED at 28.
1 out of 1 hunk FAILED -- saving rejects to file default2.conf.rej
jeroen@jeroen-ubuntu:~/Desktop$
4

1 回答 1

2

我认为补丁实际上对此很聪明,并确定补丁是否仍然可以在没有冲突的情况下应用,但是每当我尝试将补丁应用于与原始文件略有不同的配置文件时,我都会收到错误消息。

实际上,这成立。但是,这在很大程度上取决于您对“略有不同”的定义。基本上,改动需要远离补丁修改的地方。

您可以尝试使用-F参数调用补丁

-F num 或 --fuzz=num

设置最大模糊因子。此选项仅适用于具有上下文的差异,并导致补丁在寻找安装大块的位置时忽略最多多行上下文。请注意,较大的模糊因子会增加错误补丁的几率。默认的模糊因子是 2。一个大于或等于上下文差异中上下文行数的模糊因子,通常是 3,会忽略所有上下文。

但我不建议这样做。

如果你只想

一种将行添加到配置文件的自动化方法

你考虑过使用perlawk还是ed为了工作?我认为这不是patch正确的工具。

于 2012-05-18T17:53:09.430 回答