我正在研究 Mercurial,但我不明白它是如何检测文件冲突的。
当集中式 SCM(作为 SubVersion)检测到我的项目中文件的两个版本之间存在冲突时,这意味着我的本地文件的版本号比远程存储库中相同文件的版本号小,因为另一个开发人员(pe John Smith ) 在我之前提交(使用相同的初始版本号)。
在分散的 SCM(Mercurial、Git 等)中,我没有中央存储库,那么:
- 我克隆了一个存储库,从远程服务器下载了一个版本的文件;
- John Smith 克隆了同一个仓库,从远程服务器下载了同一个版本的文件 A;
- 约翰·史密斯(John Smith)编写了一些代码,并在他本地提交了代码;
- 之后,我在本地提交;
Git 如何理解我们的文件是数字版本 A 的直接后代?Mercurial/Git/Bazaar/etc 没有一个内部编号来识别:他们如何理解修改后的文件何时发生冲突?