保持分支同步的问题

时间:2010-01-13 09:45:26

标签: svn merge

我创建了一个像这样的分支

svn copy svn+ssh://foo.bar/svn/myproject/trunk svn+ssh://foo.bar/svn/myproject/branches/feature-x

然后我继续在另一个目录中查看我的分支的工作副本。

由于这是一个功能分支,我想让它与trunk保持同步。根据SVN书,这应该像

一样简单
svn merge svn+ssh://foo.bar/svn/trunk

来自我的工作副本目录。

然而,它不起作用。我不确切地知道它试图做什么,但似乎尝试合并所有已经提交给trunk的变化。相反,我原本以为它只会尝试合并之后发生在trunk 上的更改。我做了分支。

如果我尝试

svn propget svn:mergeinfo .

从我的工作副本中,我什么都没得到。如果我理解正确,我应该看到哪些修订可用于合并。

我正在使用svn v1.6.5

作为一种解决方法,现在,我从写作开始

svn info

获取最新更改的修订版。然后

svn merge -r xxxx:HEAD svn+ssh://foo.bar/svn/trunk .

其中xxxx是最新更改的版本。

更新

原来我们在办公室运行一个古老版本的svn服务器,它不支持合并跟踪。

1 个答案:

答案 0 :(得分:2)

  

根据SVN书,这应该很简单   svn merge svn+ssh://foo.bar/svn/trunk

这是对的。但是,本地svn客户端和存储库必须至少为1.5版才能支持合并跟踪。请参阅release notes中的“合并跟踪和兼容性”部分。

  

如果我尝试svn propget svn:mergeinfo .   从我的工作副本,我什么都没得到。   如果我理解正确,我应该   看看哪些修改   可用于合并。

这里你的期望是不正确的。 svn:mergeinfo属性记录已经合并到的修订版。它没有列出符合合并条件的修订版。要列出符合合并条件的修订版,请执行以下操作:

svn mergeinfo --show-revs eligible svn+ssh://foo.bar/svn/trunk