2016-06-13 46 views
1

我正在尝试修补文件。避免修补程序命令询问要修补哪个文件“文件修补”错误

补丁文件位于要修补的文件列表中。

当我运行赞扬

patch < file.patch

它提示我

File to patch:

如何避免这种情况?我应该在补丁文件中添加什么内容以自动检测应修补的文件名

+0

你正在使用什么格式的补丁文件? (包括文件的前几行将有助于识别此文件。) – duskwuff

+0

补丁文件通常是一个统一的差异文件(即'diff -u'的输出),因此它会在'patch'识别的顶部放置一些文件名。但是,文件名可能是'a/subdir/file1',而你当前的目录就在'subdir'上面。您可能需要使用'patch'的'-p'选项(例如'patch -p1 <...'或'patch -p2 <...')。调整以适应 –

+0

继续Craig的评论,'-pX'选项告诉'patch'从左边剥离路径的(X)部分(斜线)。如果你的错误*无法找到*'a/path/to/filename','File to patch:'并且你知道你的系统上的文件位于'path/to/filename',你可以使用'path - p1'从路径的开头去掉'a /',使'patch'找到要在你的系统上打补丁的文件。 –

回答

0

当使用diff创建补丁时,默认情况下,输出格式不包含原始文件名的文件名。你可以用这样的-u选项改变了...

$ diff -u OriginalFile NewFile >NewFile.patch 

然后,您可以简单地...

$ patch -u <NewFile.patch 

欲了解更多信息,请阅读有关unified GNU diff format

+0

这不会避免交互的问题/要点,无论指定了哪个“-p”,至少如果删除了“NewFile”。没有补丁手册页或教程解释了如果第二个文件不存在时会发生什么 - 这是我认为修补程序唯一的逻辑用例。 –