我正在尝试将一些来自trunk的修补程序合并到一个分支上。当我比较trunk/foo.py
和branches/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不一定是相关的。
答案 0 :(得分:2)
我开始;
svn info <trunk>/foo.py
和svn <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
合并到您的分支的原因?在将整个修订版本合并到分支而不是特定文件中时,我通常会看到更少的问题。