来自SVN背景,使用DVCS系统时要适应的最困难的事情之一就是,它们似乎都将任何未提交的更改视为滴答定时炸弹。
在Mercurial中,如果您尝试获取更改,并且您的工作副本中有任何未提交的更改,则必须跳过所有步骤以使其仅合并传入的更改。尝试切换分支吗?这将迫使您搁置所有内容,然后必须立即在另一端立即搁置所有内容。(SVN在这两种情况下都没有问题。)
Git大致相同。我正在与另一个项目的开发人员并肩工作,而我只是试图将他的提交之一挑进我的叉子中。它拒绝让我,因为我的工作副本中的更改尚未提交,与他提交中的更改完全不同的文件。 甚至没有合并选项。显然,我必须先隐藏我的更改!
如果一个人以这种极端的谨慎对待完全无害的东西,我会称其为“恐惧症”,这是一种非理性的恐惧,应视为精神障碍。但是Git和Mercurial是由两个不同的聪明,理性的开发人员团队设计的,所以我不得不怀疑他们是否知道我所不知道的东西。
是否有技术上的理由证明这种对待未承诺变更的态度是正确的?如果是这样,为什么问题仅在DVCS上存在?