仅修补文件的一部分

仅修补文件的一部分

我有两个文件 - fileWithMyFix.c 和 fileCustUpdated.c。我对 filewithmyfix 进行了修复,但不知道客户正在更新同一文件以进行其他(不相关的更改)。

我需要将我的更改推送到他们的文件中。平坦补丁似乎不起作用,因为两个文件都存在差异。如果我比较它们并应用该补丁,它会尝试恢复 fileCustUpdated.c 以匹配 fileWithMyFix,但最终会造成混乱。

有没有办法精确定位要修补的文件的特定部分?我是否必须将 fileWithMyFix.c 与刚从 svn 中删除的未更改文件进行比较,然后以这种方式应用补丁?我认为行号不会对齐,并且也会出现问题。

编辑-我可能一直在向后进行比较,但我让它进行恢复并且它正确应用了补丁。新问题 - 我该如何进行 diff 来避免这种情况?

答案1

您必须将修改后的文件与未修改的版本进行比较。如果 diff 输出格式有不同的选项,请创建统一 diff 或上下文 diff。这些格式在修改的行周围包含一些上下文行。patch即使行号已更改,该工具通常也会找到要修改的行。

如果文件位于 SVN 中,您可以使用两个工作区并在一个工作区中提交客户版本,然后更新包含您修改后的版本的工作区。这应该将客户的更改合并到您的文件中,并且(可能解决冲突之后)最终您可以提交您的文件。现在应该包含所有修改。

相关内容