Svn subversion 1.6.x在签入时丢失更改

Svn subversion 1.6.x在签入时丢失更改,svn,tortoisesvn,Svn,Tortoisesvn,我试图弄清楚这是否是SVN1.6.x的已知问题 开发人员A修改并提交文件。 开发人员B修改相同的文件。尝试提交,并被告知本地副本已过期,因此会执行更新,然后执行提交 但是,开发人员A的更改将丢失,因此生成的文件仅包含开发人员B签入的版本 我们可以在日志中看到这一点。当同一个文件在不同的地方被修改时,似乎会发生这种情况 还有其他人经历过吗?在过去的几周里,我们已经经历了4到5次这样的事情,每次我们都损失了半天左右的时间,试图弄清楚到底损失了什么,等等 我们开始对SVN失去信心。我们应该考虑转向GI

我试图弄清楚这是否是SVN1.6.x的已知问题 开发人员A修改并提交文件。 开发人员B修改相同的文件。尝试提交,并被告知本地副本已过期,因此会执行更新,然后执行提交

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

我们可以在日志中看到这一点。当同一个文件在不同的地方被修改时,似乎会发生这种情况

还有其他人经历过吗?在过去的几周里,我们已经经历了4到5次这样的事情,每次我们都损失了半天左右的时间,试图弄清楚到底损失了什么,等等


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

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

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

以下是nuke/copy过程如何还原其他人的更改:

  • 结帐,拿到r1
  • 修改foo.c,给出r1+更改
  • 其他人签入对foo.c的更改(你不知道他们做了什么) 当然,这也是正常的工作方式 检查对你来说是坏的),foo.c in 回购协议现在是r2
  • 现在,除了foo.c(r1+更改)之外,您可以核化您的存储库
  • 你去结帐,拿到foo.cr2
  • 您用您的副本替换foo.c(r1+更改)。但是颠覆,, 不知道这一点,认为你 基于r2而不是r1的更改
  • 签入,foo.c现在是r3,它刚刚丢失了另一个人的 r2的变化

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


    但这不是Subversions的错误:您应该保存更改,并在更新后重新加载文件。大多数编辑器都有这方面的功能,如果您使用Visual Studio的Eclipse之类的工具,您可以查看集成的Subversion解决方案来帮助您实现这一点。

    这是SVN的基本多用户使用案例,成千上万的开发人员使用它时没有问题。问题似乎更可能是您的用户正在做的事情。我很抱歉地说,“我们开始对SVN失去信心。”您还不了解SVN是如何工作的。这就是重点。如果您进行svn更新,如果您有冲突,将通知您。你必须解决这场冲突。SVN不会覆盖任何更改,也不会丢失任何更改。在历史记录中,Dev A的更改就在其中。在svn更新期间发生了合并。开发人员B应该检查这是否正常。如果情况如你所描述的那样发生,那么你已经做了一些你没有写的事情。我们知道如何使用SVN:)我们已经每天使用它超过2年了…所以这是一件新事情。这也发生在我身上。Dev A添加一行并提交,Dev B在文件的其他部分修改并更新,合并认为B已经有了该行并故意删除了它。我想这可能是因为我们忘记了在更新之前保存,但我可以确认,这个问题甚至部分发生在某些文件上,一个部件正确合并,一个部件丢失。在版本1.61之前,我已经使用SVN 3-4年了,没有任何问题。这家伙说SVN合并失败了。不是OP不知道如何使用SVN,而是你没有花时间完全理解他的问题。2.当软件设计拙劣时,这绝不是用户的错。我建议你读一些艾伦·库珀和唐纳德·诺曼的书。但是如果你混合使用了几种产品,你不能仅仅因为他们中的一种破坏了你的组合使用。特别是如果其他人中的一个不是为了一起工作而设计的。我建议您阅读您使用的产品手册,了解如何使用它,而不是建议您阅读不同的设计模式。该系统设计为以这种方式工作,其他版本控制系统也是如此。换一个不同的风投或阅读设计书籍并不能解决问题。