我正在尝试修补文件。避免修补程序命令询问要修补哪个文件“文件修补”错误
补丁文件位于要修补的文件列表中。
当我运行赞扬
patch < file.patch
它提示我
File to patch:
如何避免这种情况?我应该在补丁文件中添加什么内容以自动检测应修补的文件名
我正在尝试修补文件。避免修补程序命令询问要修补哪个文件“文件修补”错误
补丁文件位于要修补的文件列表中。
当我运行赞扬
patch < file.patch
它提示我
File to patch:
如何避免这种情况?我应该在补丁文件中添加什么内容以自动检测应修补的文件名
当使用diff
创建补丁时,默认情况下,输出格式不包含原始文件名的文件名。你可以用这样的-u
选项改变了...
$ diff -u OriginalFile NewFile >NewFile.patch
然后,您可以简单地...
$ patch -u <NewFile.patch
欲了解更多信息,请阅读有关unified GNU diff
format。
这不会避免交互的问题/要点,无论指定了哪个“-p”,至少如果删除了“NewFile”。没有补丁手册页或教程解释了如果第二个文件不存在时会发生什么 - 这是我认为修补程序唯一的逻辑用例。 –
你正在使用什么格式的补丁文件? (包括文件的前几行将有助于识别此文件。) – duskwuff
补丁文件通常是一个统一的差异文件(即'diff -u'的输出),因此它会在'patch'识别的顶部放置一些文件名。但是,文件名可能是'a/subdir/file1',而你当前的目录就在'subdir'上面。您可能需要使用'patch'的'-p'选项(例如'patch -p1 <...'或'patch -p2 <...')。调整以适应 –
继续Craig的评论,'-pX'选项告诉'patch'从左边剥离路径的(X)部分(斜线)。如果你的错误*无法找到*'a/path/to/filename','File to patch:'并且你知道你的系统上的文件位于'path/to/filename',你可以使用'path - p1'从路径的开头去掉'a /',使'patch'找到要在你的系统上打补丁的文件。 –