你认为你怎么欺骗SVN执行第6步?看来你误解了错误。 SVN永远不会提交最新的工作副本,因此,如果用户B先前未更新和合并用户A的更改,则步骤#6将不起作用。老实说。尝试一下。
我猜会发生什么,而不是是这样的:
- A检查出项目。
- B签出同一个项目。
- A增加一个文件。
- A提交更改。
- B添加一个文件,但忘记保存项目/解决方案。
- B尝试提交更改并获取他应该首先更新的消息。
- B更新。
- B切换回VS. VS告诉他在磁盘上更改了项目/解决方案,并询问他是否希望a)从磁盘重新加载并丢失其更改b)覆盖磁盘上的版本。
- B不理解,不会尝试理解,认为他的更改很有价值,并选择b),覆盖磁盘上的更改。
- B仍然没有试图理解,因此不会将他在磁盘上的版本与上次提交的版本区分开来,因此错过了他超过A的更改。
- B检入,覆盖A的变化。
我已经看到过这种情况偶尔会发生,通常与用户B不太了解SVN(或CVS',FTM)工作流程。
所以这里有一些提示:
不要更新,除非你已经保存的一切( “文件” - > “全部保存”;对我来说,这是按Ctrl + Shift + S)。如果你已经犯了那个错误,你就完蛋了,不重写磁盘上的更改,然后手动合并更改将丢失。 (它也可能会将项目/解决方案文件更新回N-1版本,然后再次更新到HEAD,以便让SVN执行合并。)
不提交而不检查哪些文件改变并具有快速看的diff看到的变化是否你所期望的。
提早提交,经常提交。越多的开发人员在相同的代码基础上工作,就越有可能发生冲突。您更改工作副本而不更新的时间越长,发生冲突的可能性就越大。由于开发商的数量通常是伸出你的双手,更新频率是一件事,你可以用它来减少冲突的可能性。
来源
2009-08-25 17:15:58
sbi
您是否在文件上正确设置了mime类型? – 2009-08-25 16:59:16
用户B的提交应该被拒绝,因为他的文件已经过时,迫使他更新(并且合并 - 大多数更改实际上是自动处理的)。 – 2009-08-25 17:04:58
是的,在第6步,svn客户端应报告工作副本已过期。有些地方肯定是错的,因为这对我们很有用。 – crashmstr 2009-08-25 17:15:36