linux - 存在完整路径时,如何使用补丁在不同文件夹上为文件夹应用差异文件?

标签 linux diff patch

我已经下载了一个 diff 文件来修改版本化项目目录 (Xerces 2.8) 中的许多文件。 diff 文件包含每个“左”文件(由 - 符号表示的文件)的完整路径。 “右”文件(+ 号)包含一个相对路径。例如:

--- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_textproc_xercesc/work/xerces-c-src_2_8_0/src/xercesc/util/Platforms/MacOS/MacCarbonFile.cpp  2007-08-28 20:44:07.000000000 +0200
+++ src/xercesc/util/Platforms/MacOS/MacCarbonFile.cpp  2009-10-28 19:37:22.000000000 +0100

我想用 diff 文件更新的项目目录的本地副本当然位于不同的完整路径中。

我不知道将 diff 文件放在哪里(或者更确切地说,当我运行 patch 时将自己放在哪个目录中)以及要运行什么命令。

因为第二个 (+) 文件是相对路径,所以我认为将自己定位到本地文件系统中的正确位置,以便相对路径正确 - 然后发出命令

patch -i patchfile

... 会起作用。它没有(相反,patch 向我显示每个文件的提示,因为它找不到它)。

要使用 patch 合并 diff 文件,我应该发出什么命令?

最佳答案

传递 -p 后跟要剥离的适当数量的路径前缀。

关于linux - 存在完整路径时,如何使用补丁在不同文件夹上为文件夹应用差异文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702418/

相关文章:

c++ - 在 Linux 上链接期间出现 "Nonrepresentable section on output"错误

linux -/lib/modules/<version>/build/不存在

pdf - 保存 DiffPDF/ComparePDF 命令行的输出。 - 比较 PDF 的文件夹

python - 解析 DeepDiff 结果

git - 为什么 git pull --rebase 在重播现有提交时失败?

java - 是否有比 diff/patch 更灵活的替代方案?

linux - 将管道输入转储到文件的简单方法是什么? (Linux)

c++ - 没有制定目标 `libbrcmEGL.so' 的规则, `HelloTriangle' 需要

diff - 为什么 MS CRM 中的托管和非托管解决方案文件有如此大的不同?

git - 单个缺失提交的 git-cherry 等效项是什么?