我正在试图弄清楚这是否是SVN 1.6.x的已知问题 开发人员A修改文件并提交它。 开发人员B修改同一文件。尝试提交它并告诉本地副本过期,所以更新然后提交。
但是,开发人员A的更改将丢失,因此生成的文件仅包含Developer B签入的版本。
我们可以在日志中看到这一点。它似乎发生在同一个文件被修改但在不同的地方。
其他人有过这种经历吗?在过去的几周里,我们已经发生了4到5次,每次尝试弄清楚丢失了什么等,我们已经失去了半天左右。
我们开始对SVN失去信心。我们应该考虑转向GIT还是Mercurial?这会解决这个问题吗?
答案 0 :(得分:1)
团队中是否有人手动复制文件和文件夹,以便.svn文件夹中的修订信息不再正确?
正如derobert在answer中描述的相关问题,如果您手动将修改后的文件复制到新更新的SVN文件夹中,则可以覆盖其他用户的更改:
以下是核武/复制程序如何恢复其他人的变化:
- 结帐,获取r1;
- 修改foo.c,给出r1 +更改;
- 其他人检查foo.c的更改(你不知道他们已经完成了 这当然和正常的方式有关 检查被打破了),foo.c in 回购现在是r2;
- 除了foo.c(r1 +更改);
之外,您现在将您的存储库编入核心- 你做结帐,得到foo.c r2。
- 用您的副本替换foo.c(r1 +更改)。然而,Subversion, 没有意识到这一点,并认为你 根据您对r2的更改而不是r1。
- Checkin,foo.c现在是r3,刚丢失了另一个人 r2中的变化。
醇>
答案 1 :(得分:0)
如果您忘记保存文件,请执行“svn update”(使用您喜欢的任何工具),然后在更新的文件上再次保存文件的本地版本,然后丢失其他人提交的更改。 / p>
但这是不颠覆错误:你应保存更改并在更新后重新加载文件。大多数编辑器都具有此功能,如果您使用Eclipse Visual Studio等工具,您可以查看集成的Subversion解决方案来帮助您解决此问题。