我不知道你是怎么定义“每个人”,但我的团队和“服务器上的中央回购” 还时不时我们从其他同事的回购拉不经由中央回购打算。当我们这样做时,我们仍然会通过服务器,因为我们选择不通过电子邮件发送有关该地点的补丁,而不是通过中央存储库。通常,当一个小组正在就某个特定功能进行协作并希望彼此保持最新状态时,通常会发生这种情况,但是到目前为止,仍然没有兴趣向所有人发布该功能。自然,由于我们不是秘密仓库工作人员,因此这种情况不会持续很长时间,但是DVCS可以灵活地执行最方便的事情。我们可以根据喜好发布功能分支,也可以不发布。
但是,肯定的是,有90%以上的时间我们通过中央存储库。当我不关心任何特定更改或特定同事的工作时,它更方便且扩展性更好,它可以提取“已在中央仓库中审核的所有同事的更改”,而不是分别从N中提取更改。同事。DVCS并不试图阻止“从主仓库中提取”是最常见的工作流程,而是试图阻止它成为唯一可用的工作流程。
“分布式”意味着就git
软件而言,所有存储库在技术上都是等效的,但并不能因此就开发人员和我们的工作流程而言,它们都具有同等重要的意义。当我们向客户或生产服务器发布产品时,我们使用的存储库与仅由一名开发人员在其笔记本电脑上使用的存储库具有不同的意义。
如果“真正去中心化”的意思是“没有特殊的回购协议”,那么我认为那不是Linus拥护的意思,因为事实上,他确实保留了特殊的回购协议,而这在大事务中比我昨天制作了一些Linux的随机克隆,计划仅用于开发一些小补丁,然后在他接受补丁后将其删除。git
不会让他的仓库比我的仓库特权,但是Linus会给它一个特权。他的“是Linux的当前状态”,不是。所以自然而然地倾向于改变通过莱纳斯。DVCS相对于集中式VCS的优势并不在于一定不存在事实上的中心,而是变化不必经过任何中心,因为(冲突允许)任何人都可以合并任何东西。
由于DVCS系统是分散式的,因此它们也被迫提供某些方便的功能,其依据是您必须在本地必须具有完整的历史记录(即仓库)才能执行任何操作。但是,如果考虑到这一点,就没有根本原因无法配置带有本地缓存的集中式VCS,该缓存不会使只读操作的全部历史记录过时(我认为Perforce可以选择此模式,但我从未使用过Perforce)。或者原则上您可以git
使用.git/
远程安装的文件系统上的目录,以模拟没有网络连接时SVN的“功能”不起作用。实际上,DVCS使管道的功能比在集中式VCS中无法实现的更加强大。这是一种(非常受欢迎)的副作用,并帮助激励DVCS设计,但在这种责任的分配技术水平是不一样的完全下放所有的人的责任。