Architecture 分布式修订控制系统的分散行为是如何工作的?
我想知道分散的DVCS是如何工作的?如果没有中央服务器,开发人员机器如何知道存储库并与其他开发人员机器的存储库同步。如何合并这些更改?在我看来,由于缺少中央服务器,系统可能会导致每个存储库都有不同的版本号。冲突解决是如何处理的?斯科特·查孔(Scott Chacon)去年在RailsConf的演讲非常精彩。这是我所见过的最有计划、最具信息性的谈话之一。我将听从他的建议(具体来说,对于您的问题,远程工作流部分大约在18分钟后开始):Architecture 分布式修订控制系统的分散行为是如何工作的?,architecture,dvcs,Architecture,Dvcs,我想知道分散的DVCS是如何工作的?如果没有中央服务器,开发人员机器如何知道存储库并与其他开发人员机器的存储库同步。如何合并这些更改?在我看来,由于缺少中央服务器,系统可能会导致每个存储库都有不同的版本号。冲突解决是如何处理的?斯科特·查孔(Scott Chacon)去年在RailsConf的演讲非常精彩。这是我所见过的最有计划、最具信息性的谈话之一。我将听从他的建议(具体来说,对于您的问题,远程工作流部分大约在18分钟后开始): 我偏爱Git,但我相信该理论适用于大多数其他系统 分散式VCS的
我偏爱Git,但我相信该理论适用于大多数其他系统 分散式VCS的设计目的是通过在每次提交中保持一个指向前一次提交的指针来处理分支和合并,作为其DNA的一部分,因此任何更改都可以追溯到一个共同的祖先 修订版“编号”本身不用于表示提交。显然,如果是这样的话,会有不止一个序列。。。在Git的情况下,唯一标识任何提交的指针“key”是SHA1散列。唯一使整个排列有序的是引用每个提交的父级的指针图 实际上,开发人员将其工作提交给自己的本地副本,当需要与他人共享时,他们会通过三种方式进行:
- 请其他开发人员直接从他们那里获取更改
- 直接推送到其他开发人员的副本中
- 将更改推送到其他人可以从中提取的中心位置
大多数合并都是自动发生的,但当发生冲突时,解决冲突通常是非常简单的。很好的一点是,你不会遇到一个跨越多个提交的冲突:它很容易解决,因为它在历史中间停顿,让你用更小的逻辑块来处理它。不是用Sa1哈希来标识的吗?