Linux 编辑已存在的修补程序文件

Linux 编辑已存在的修补程序文件,linux,git,patch,yocto,Linux,Git,Patch,Yocto,使用编辑器编辑.patch是否是标准做法 脚本 我在Yocto应用程序中使用.patch,我希望对存储库进行一些小的更改,并将其移植到我的嵌入式设备 其中一个补丁如下(为brewity删除了一些细节): 而现在,在几次承诺之后,它就没有了 据我所知,目前的补丁将无法工作,因为它将寻求首先找到行号和内容删除,但将通过错误,因为它将无法找到上述shebang在文件中了。 (已经试过了) 可能的方式 一个明确的方法是使用更新的代码克隆存储库,并将所需的shebang(env php而不是php5)添

使用编辑器编辑
.patch
是否是标准做法

脚本 我在Yocto应用程序中使用
.patch
,我希望对存储库进行一些小的更改,并将其移植到我的嵌入式设备

其中一个补丁如下(为brewity删除了一些细节):

而现在,在几次承诺之后,它就没有了

据我所知,目前的补丁将无法工作,因为它将寻求首先找到行号和内容删除,但将通过错误,因为它将无法找到上述shebang在文件中了。 (已经试过了)

可能的方式
  • 一个明确的方法是使用更新的代码克隆存储库,并将所需的shebang(
    env php
    而不是
    php5
    )添加到代码中,然后使用
    git format patch-1
    获得要恢复的新补丁
然而,这需要花费大量的精力,当更改的文件超过一定数量时,此过程似乎很乏味


使用编辑器编辑补丁是否合理(我很确定不是)?或者是否有一些
git
功能可以帮助直接修改修补程序而不是相应的文件?

还有另一种方法可以使用
coult refresh
。简而言之,在使用Quilter时,您将把所有补丁复制到名为
patches
的目录中(在quiltrc中,这是可配置的)

此修补程序目录中名为
series
的文件存储所有修补程序文件名。当您使用应用修补程序时

quilt push

您将带着错误退出。假设您有10个补丁,而第三个补丁无法直接应用,因为存储库中已有一些更改

然后你可以打电话

quilt push -f
它将尝试应用所有可能的位置,并存储无法应用到
.rej
文件中的行。示例输出

Applying patch patches/0001-To-apply.patch
patching file README.md
Hunk #2 FAILED at 51.
1 out of 2 hunks FAILED -- saving rejects to file README.md.rej
在我的README.md文件中有大块的地方

现在,您可以通过比较原始文件来检查未完全应用的更改。在上述情况下,介于
README.md
README.md.rej
之间。您可以解决失败的位置并调用

quilt refresh
刷新后,
patches
中的原始修补程序文件将根据相应的更改进行更新,现在您可以继续使用
coult push
coult push-a

注意:默认情况下,Yocto使用coult,除非使用
PATCHTOOL
变量进行更改

quilt push -f
Applying patch patches/0001-To-apply.patch
patching file README.md
Hunk #2 FAILED at 51.
1 out of 2 hunks FAILED -- saving rejects to file README.md.rej
quilt refresh