我有麻烦用一个补丁我源树,这是不平常的 -p 剥离问题。 patch 是能够找到的文件,以修补程序。

具体地说,我的问题是如何阅读/解释 .rej 文件 patch 创建时,它无法在几个帅哥.大多数的讨论 patch/diff 我已经看到不包括这一点。

有帮助吗?

解决方案

一个简单的例子:

$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b

正如你所看到的:旧的文件包含线2和新文件的的含有B线。但是,它实际上包含线c(这是不可见的拒绝文件)。

在实际上,要解决这样的问题的最简单的方法是用手工取DIFF片段从为.diff / .patch文件,在该文件中的适当位置插入它要修补,然后比较代码弄清楚什么线实际上会导致冲突。

或者 - 或者:获取原始文件(未修改),打补丁和运行三通上的文件合并

其他提示

摆动是用于应用名为.rej文件时补丁没有成功一个伟大的工具。

我不是专家在处理与补丁文件,但我想增加一些澄清如何阅读他们根据我的了解的信息。

你的 .rej 文件将告诉你:

  • 之间的差异的原。抑制文件;
  • 问题出在哪里码开始在原有的文件,有多少线上 在该文件;
  • 和这里的代码开始在新的文件,以及有多少线,它继续为在该文件。

所以,鉴于这一消息,指出在开始我的。抑制文件:

diff a/www/js/app.js b/www/js/app.js (rejected hunks) @@ -4,12 +4,24 @@

我看到我的问题文件(文件www/js/app)之间的差异原来的(指出的作为 a/www/js/app.js 在第一线)。抑制的文件(指出的作为 b/www/js/)开始在线4的原始和继续为12线(第一部分之前的逗号 @@ -4,12, +4,24 @@ 在二线),并启动在线4的该文件的新版本,并继续为24行(第一部分之后的逗号 @@ -4,12, +4,24 @@.

关于进一步信息,请参见卓越的概述,补丁文件(含的信息,我注意到上面,以及详细信息上线,加入和/或之间的文件版本)在 http://blog.humphd.org/vocamus-906/.

任何修改或澄清欢迎的课程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top