svn merge不合并

时间:2012-02-28 21:39:27

标签: svn merge trac

我正在尝试将一些来自trunk的修补程序合并到一个分支上。当我比较trunk/foo.pybranches/feature/foo.py时,我会看到差异。然而,当我运行svn merge https://<svn server>/trunk/foo.py foo.py时,没有任何更改被合并。使用--force选项重试也没有效果。似乎SVN认为功能分支的foo.py副本是最新版本。我如何说服SVN呢?

编辑:我的Subversion客户端是svn版本1.6.16(Linux)。服务器正在运行trac,版本0.12。

EDIT2:服务器的subversion版本是1.6.9。感谢评论中的hasienda指出trac和subversion不一定是相关的。

3 个答案:

答案 0 :(得分:2)

我开始;

  • 是否将Trunk和Branch文件提交给SVN?如果文件不在存储库中,则不会发生合并。
  • 比较svn info <trunk>/foo.pysvn <branch>/foo.py;查看上次更改的Rev&amp;日期,如果SVN说它们是同一个文件,则不会发生合并。

您可以查看Advanced Merging了解更多信息。

答案 1 :(得分:0)

我不确定您使用的是什么版本的subversion,但是在我想到1.5之前,合并跟踪还没有完全实现。

答案 2 :(得分:0)

每当Subversion中的某些内容出现异常或似乎比它应该更难时,我的一般经验法则是在一个新的,干净的目录中获取一个新的工作副本,并在没有本地修改的情况下再次尝试。这往往排除了一些难以察觉的微妙问题。

另外,执行svn diff <server>/branches/this_branch <server>/trunk以确保Subversion认为存在合并更改。在此处使用两个存储库路径将消除工作副本的任何可能问题。如果上面的diff命令在您将分支URL与WC的路径交换时给出了不同的结果,那么问题可能就在您的工作副本中。

您还可以通过向merge命令提供两个完整URL来纯粹在存储库中进行合并。如果你走这条路线,我强烈建议你使用--dry-run选项预览合并,然后才能正式合并。

另外,您是否有合并使用特定文件名而不是简单地将整个/trunk合并到您的分支的原因?在将整个修订版本合并到分支而不是特定文件中时,我通常会看到更少的问题。