我刚开始参与一个开源项目,我已经获得了补丁以继续开展工作。我已将本地工作副本更新到最新的主干,当我应用补丁时,几乎所有的帅哥都被拒绝了。
我猜这个补丁是用稍早版本的主干制作的,这就是为什么行号可能不匹配的原因。我想我总是可以手动复制并粘贴每个大块的代码,但是我会花费所有的开发时间修补我的代码而不是贡献!
有没有简单的方法来解决这个问题?补丁是否包含有关它所针对的主干版本的任何信息?我是否应该尝试还原我的工作副本,直到找到该修补程序适用的修订版?
或者我只是遗漏了一些简单的东西?经常更新的Trunk更新 - 我无法想象项目中的每个人都有这些问题......
答案 0 :(得分:0)
如果已创建补丁
svn diff
而不是特定于操作系统的你可以看到有关补丁点的补丁文件信息。
在存储库
中的两个修订版之间修补svn diff
...
--- trunk/G1.txt (revision 3)
+++ trunk/G1.txt (revision 4)
...
在BASE修订版和修改后的工作副本之间修补svn diff
...
--- G1.txt (revision 4)
+++ G1.txt (working copy)
...
(两个案例中的---
个字符串都包含必须应用补丁的修订版本
对于这个简单的情况,您有svn up
到SOURCE修订版svn patch
补丁文件,为了将应用的更改提交为新版本,您必须(使用修改后的工作副本)svn up
HEAD修订,解决所有可能出现的冲突,并且只有在解决所有冲突后才提交修改
另一种(以某种方式更有用的方式)可能是:从SOURCE修订版创建分支,将补丁应用于此分支的WC,将分支(其中包含补丁)合并回主线。
我更喜欢seconf方式 - 减少头痛,减少犯错的机会