subversion 1.6.x在办理登机手续时失去了变更

时间:2010-05-06 09:21:31

标签: svn tortoisesvn

我正在试图弄清楚这是否是SVN 1.6.x的已知问题 开发人员A修改文件并提交它。 开发人员B修改同一文件。尝试提交它并告诉本地副本过期,所以更新然后提交。

但是,开发人员A的更改将丢失,因此生成的文件仅包含Developer B签入的版本。

我们可以在日志中看到这一点。它似乎发生在同一个文件被修改但在不同的地方。

其他人有过这种经历吗?在过去的几周里,我们已经发生了4到5次,每次尝试弄清楚丢失了什么等,我们已经失去了半天左右。

我们开始对SVN失去信心。我们应该考虑转向GIT还是Mercurial?这会解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

团队中是否有人手动复制文件和文件夹,以便.svn文件夹中的修订信息不再正确?

正如derobert在answer中描述的相关问题,如果您手动将修改后的文件复制到新更新的SVN文件夹中,则可以覆盖其他用户的更改:

  

以下是核武/复制程序如何恢复其他人的变化:

     
      
  1. 结帐,获取r1;
  2.   
  3. 修改foo.c,给出r1 +更改;
  4.   
  5. 其他人检查foo.c的更改(你不知道他们已经完成了   这当然和正常的方式有关   检查被打破了),foo.c in   回购现在是r2;
  6.   
  7. 除了foo.c(r1 +更改);
  8. 之外,您现在将您的存储库编入核心   
  9. 你做结帐,得到foo.c r2。
  10.   
  11. 用您的副本替换foo.c(r1 +更改)。然而,Subversion,   没有意识到这一点,并认为你   根据您对r2的更改而不是r1。
  12.   
  13. Checkin,foo.c现在是r3,刚丢失了另一个人   r2中的变化。
  14.   

答案 1 :(得分:0)

如果您忘记保存文件,请执行“svn update”(使用您喜欢的任何工具),然后在更新的文件上再次保存文件的本地版本,然后丢失其他人提交的更改。 / p>

但这是颠覆错误:应保存更改并在更新后重新加载文件。大多数编辑器都具有此功能,如果您使用Eclipse Visual Studio等工具,您可以查看集成的Subversion解决方案来帮助您解决此问题。