我有两个文件 - fileWithMyFix.c 和 fileCustUpdated.c。我对 filewithmyfix 进行了修复,但不知道客户正在更新同一个文件以进行其他(不相关的更改)。
我需要将我的更改推送到他们的文件中。平面补丁似乎不起作用,因为两个文件存在差异。如果我区分它们并应用该补丁,它会尝试恢复 fileCustUpdated.c 以匹配 fileWithMyFix,但最终会造成混乱。
有没有办法确定要修补的文件的特定部分?我是否必须将 fileWithMyFix.c 与刚从 svn 断开的未触及文件进行比较,然后以这种方式应用补丁?我认为行号不会排列,那里也会有问题。
编辑 - 我可能一直在向后做差异,但我让它做回归并且它正确地应用了补丁。新问题——我应该用哪种方法来避免这种情况?
您必须将修改后的文件与未修改的版本进行比较。如果 diff 输出格式有不同的选项,请创建统一的 diff 或上下文 diff。这些格式在修改的行周围包含一些上下文行。
patch
即使行号已更改,该工具通常也会找到要修改的行。如果文件在 SVN 中,您可以使用两个工作区并在一个工作区中提交客户版本,然后更新包含您修改的版本的工作区。这应该将客户的更改合并到您的文件中,并且(在可能解决冲突之后)最后您可以提交您的文件。现在应该有所有的修改。