2014-02-07 20 views
0

我是新来贡献一个开源项目,我已经递交了一个补丁以继续工作。我已经将本地工作副本更新为最新的主干,当我应用此补丁时,几乎所有的副本都被拒绝。修补程序不适用(一切都被拒绝)。我该怎么办?

我在猜测这个补丁是由一个稍微早一点的中继版本制作的,这也就是为什么这些行号不匹配的原因。我想我总是可以通过代码手动复制和粘贴每个块,但是我将花费我所有的开发时间修补代码而不是贡献!

有没有简单的方法来解决这个问题?修补程序是否包含有关对其进行修改的任何信息?我是否应该尝试恢复我的工作副本,直到找到该修补程序适用的修订版本为止?

或者我只是想念一些简单的东西?干线更新频繁漂亮该死的 - 我无法想象每个人都在具有这些问题的项目...

+0

检查并显示'grep的+++ patchfile'和'grep的--- patchfile'提取 –

回答

0

如果补丁创建

  • 从SVN工作拷贝
  • 使用SVN命令svn diff,而不是操作系统-specific

你可以在补丁文件中看到有关补丁点的信息。

补丁为svn diff两者之间的修订在仓库

... 
--- trunk/G1.txt (revision 3) 
+++ trunk/G1.txt (revision 4) 
... 

补丁为基础版本的svn diff和修改工作副本

... 
--- G1.txt (revision 4) 
+++ G1.txt (working copy) 
... 

---串在这两种情况下包含的修订,到补丁有被应用)

对于这种简单的情况,你有svn up来源修订,svn patch补丁文件,以提交应用变化的新版本,你必须(与修改工作副本)svn up到HEAD版本,解决所有可能出现的冲突,只有解决所有冲突后提交与变更

另一个版本(以某种方式更可用的方式)可能是:从SOURCE修订版创建分支,将补丁应用于此分支的WC,将分支(带补丁)合并回主线。

,我会更喜欢seconf方式 - 少头痛,机会少犯错误

+0

感谢这个详细的解答。 2件事情:1.我相信这个补丁是用git创建的,而不是SVN,尽管它设计用于两者; 2.我没有关于回购的写权限,所以我不认为我可以分行。 –

+0

@TomAuger - 1. git-patch也必须可用,我现在只是没有git来检查git特定的附加格式。2.你可以'svnrdump'原始的repo,从dump创建本地repo,使用并在需要时将WC切换到上游 –

相关问题