Svn 重新集成分支时,PREV、BASE或COMMITTED revision关键字对于URL无效

Svn 重新集成分支时,PREV、BASE或COMMITTED revision关键字对于URL无效,svn,merge,Svn,Merge,我已经分支了我的主干(在以前的版本中),实现/提交了一个新特性,并在分支本地实现了另一个特性的一部分。 我现在需要将完成的功能重新整合到主干中 Isvn cp分支/completedfeature分支/uncompletedfeature以在其自己的分支中获取部分完成的特征。 然后我svn revert-R.第一个分支中的所有内容都是最新的 现在,当我从主干中svn merge--reintegrate.././branchs/completedfeature时,我得到一个神秘的错误: 主干和完

我已经分支了我的主干(在以前的版本中),实现/提交了一个新特性,并在分支本地实现了另一个特性的一部分。 我现在需要将完成的功能重新整合到主干中

I
svn cp分支/completedfeature分支/uncompletedfeature
以在其自己的分支中获取部分完成的特征。 然后我
svn revert-R.
第一个分支中的所有内容都是最新的

现在,当我从主干中
svn merge--reintegrate.././branchs/completedfeature
时,我得到一个神秘的错误:

主干和完成的要素分支都是最新的,没有本地更改。
发生了什么事?

看起来我的分支很差/错了。我还没有找到正确的解决方法,对于任何处于这种情况的人来说,我是如何在主干中进行更改的,保留了这个短暂分支的大部分历史:

查找所有更改的文件
diff-ur trunk branch
。确保查看差异,因为主干中不在分支中的任何更改都将被还原,因此忽略这些文件,或者如果两个树中的文件都有更改,请确保稍后手动编辑差异

使用svn复制任何新文件以保留其历史记录
svn cp branch/path/file trunk/path/file

现在,您只需要对未更改的文件进行更改。您不能进行两个源合并,因为(至少在cygwin的SVN1.7中)它将删除然后添加文件,从而清除历史记录。我选择的选项是构建/应用补丁,并对发生的情况发送一条提交消息

有很多地方可以学习修补,但下面是我所做的。请记住,如果在两个树中都有更改的文件,则需要手动修复合并问题

使用
diff-u trunk/path/file branch/path/file>>patch.patch构建修补程序
对每个文件执行此操作,或者再次传入递归标志,并让diff完成繁重的工作

进行试运行,以确保修补程序正常运行并修补了正确的文件
patch-p0--试运行
然后修补它
patch-p0

然后确保项目已生成并签入

留下这个问题,希望有人知道真正的答案。

我犯了这个错误

你的问题几乎是谷歌唯一的结果()

我有一根长长的树枝,其他的树枝都插进去了。。。修补过程将是漫长而艰难的。因此,尽管这建议您应该合并两个工作副本,我还是乐观地尝试从URL重新整合,结果成功了

cd myLocalTrunk
svn merge --reintegrate https://svn.blah.blah/blah/blah/branches/myBranch
svn ci -m "reintegrating myBranch into trunk"

一般来说,此处不需要使用修补程序文件-任何“-c x”或“-r x:y”范围实际上是一个变更集,即一种可以应用的修补程序。让我们做一个完整的例子,首先

svn copy trunk/path/file branch/path/file
在那之后,人们可以在树干上工作。现在,您需要知道修订范围,以便将更改应用于目标-例如,由于修订号是全局的,您可以询问这两个文件

svn info trunk/path/file 
# 35

svn info branch/path/file
# 27
这是要使用的范围,现在你可以说

svn merge -r 27:35 trunk/path/file branch/path/file

您可以将其视为在内部为应用于目标的范围27:35创建修补程序文件。只要这是唯一的文件到文件,你甚至不能得到一个树冲突(想想目录合并中重命名的文件)。

它不应该是
svn merge-r 27:35 branch/path/file trunk/path/file
?我的例子是下行合并,所以它在技术上是正确的,但你是对的,原来的问题要求进行上行合并。
svn merge -r 27:35 trunk/path/file branch/path/file