2014-08-27 87 views
1

我最近开始使用SVN 1.5.5作为存储库的环境中的遗留代码库。这里的开发团队在SVN分支机制方面遇到了很多困难,而这些分支已经被抛弃了。我喜欢在适当的时候保持分支的做法,并且遇到了以前从未使用过SVN的一些困难。SVN 1.5分支合并,大量未修改文件修改和/或冲突

当将树干合并到一个分支中时,我们发现许多未更改的数十个文件被列为已修改,并且它们往往会发生冲突。 SVN将conficts显示为与自身混合的文件的一部分。由于没有人真正编辑过这些文件,因此很容易选择正确的版本,然后继续前进,但这仍然使开发人员对流程感到不安全。然后,在将分支合并回主干时,没有人编辑的同一组文件将会发生冲突。这是除了其他恼人的冲突,svn合并算法臭名昭着创建文件时合理编辑一个或两个分支或树干。

我们通常分支并合并回as is done in this guide。然而,开发团队中有12-15人会直接与存储库交互,我不能保证每个人都在100%的时间内遵循“最佳实践”。在过去的8年以上,这个项目上还有许多其他开发人员。

我们在svn mergeinfo上也看到很多关于没有人编辑过的文件的冲突。每次发生这种情况时,它都会有一组完全不同的文件,但它保证随时都会发生分支。分支创建后的时间越长,结果就会产生越多的神秘冲突。

有时这些很多冲突但未编辑的文件可以用“--dry-run”选项预测。有时候,使用“--dry-run”不会显示任何意外的冲突,但是然后运行相同的合并命令最终冲突了大约45个没有变化的文件。

如果我运行“svn propget子的svn:合并信息”在我的树干的根部,我得到branchnames和它们覆盖的版本号,比如大名单:

/branches/5###_active_feature:27629-27780 
/branches/7###_auto_friend_feature:43686-43693 
/branches/7###_mobile_navigation:45430-45690 
/branches/8###_tracking:44442-44719 
/branches/9###_video_module:45388-45418 
/branches/9###_episode_guide:45233-45287 
... 
/branches/11###_redesign:28289-28395,46973-48171 

54线那样,总。这是propget mergeinfo的预期输出 - 只是一个分支列表?

在我认为某些事情已经破裂的地方,并且这无法成为以看似默认的方式进行分支/合并的预期结果。我从2007-08年起使用了SVN一年多,并且从未遇到过这样的问题。但是,我不知道从哪里开始寻找解决方案。一些同事和我已经考虑了以下内容:

  • 我们的svn版本(1.5.5)已被窃听。我们需要升级,这可能需要打击一些官僚主义,但不应该太痛苦。

  • 在某些时候,在存储库的历史记录中,svn mergeinfo已损坏,或以某种方式手动编辑。有没有办法检查这个?有没有办法解决它呢?

  • 在存储库历史记录的某个时间点,它以某种方式变成“已损坏”。不知道如何在这里继续。

是否有其他人遇到类似的问题?如何解决这个问题,使未修改的文件不会列为冲突的文件,我的团队可以继续使用分支,而不用担心在代码库中打乱随机的东西?

(根据记录,有一个长期的工程,切换到git的不幸的是,被套牢SVN暂时。)

+0

随着DVCS你仍然可以使用一些SVN (git-svn或hgsubversion) – 2014-08-27 23:20:55

回答

2
  1. 一种/trunk很多分支来源是OK - 他们刚刚合并了很多分支
  2. AFAICR,合并跟踪和合并信息的概念仅在1.6+中引入,之前的合并实际上是“合并地狱”
  3. 我想,无论如何你必须验证|修复存储库,可能 - 分为“存档代码库”和“活动代码库”。
  4. 更新到SVN 1.8(两侧,但至少 - 在客户端上)将是不错的选择:你会得到一个更容易合并(中所需的步骤)
+0

谢谢,我花了整整一天的时间阅读这篇文章,并了解到这里有很多问题 - 1.5.5是问题的一部分,还有混合修订分支/合并,以及部分/子树分支和合并。我和另一位开发人员将在独立的服务器/环境中尝试您的建议#3。尽管读了什么,但用1.5继续这样做可能毫无意义,并且可能需要首先遵循第4条建议。生病让你知道它是如何结果。 – Todd 2014-08-27 22:02:49

+0

@Todd - 混合分支和子树合并是奇怪的事情,即使在现代1.8。顺便说一句,如果从SVN退出,我会推荐不是时髦的Git,但是Mercurial为了减少头痛 – 2014-08-27 23:19:14