Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode Mercurial-what';分发克隆的意义何在?_Xcode_Mercurial - Fatal编程技术网

Xcode Mercurial-what';分发克隆的意义何在?

Xcode Mercurial-what';分发克隆的意义何在?,xcode,mercurial,Xcode,Mercurial,反复无常的关于页面说: “传统版本控制系统 例如Subversion是典型的 具有 用于存储修订的中央服务器 一个项目。相比之下,反复无常 是真正分布的,给每个 开发人员提供整个系统的本地副本 发展史,就是这样 独立于网络访问或 中央服务器。正在提交,正在分支 而且合并既快又便宜。” 因此,当每个开发人员都从获得克隆时,(?),那么每个开发人员都可以开始为自己的项目工作。10个月后,每个人都做了一些事情,并以完全不同的方式更改了RootViewController 现在,克隆整件事有什么意义?当

反复无常的关于页面说:

“传统版本控制系统 例如Subversion是典型的 具有 用于存储修订的中央服务器 一个项目。相比之下,反复无常 是真正分布的,给每个 开发人员提供整个系统的本地副本 发展史,就是这样 独立于网络访问或 中央服务器。正在提交,正在分支 而且合并既快又便宜。”

因此,当每个开发人员都从获得克隆时,(?),那么每个开发人员都可以开始为自己的项目工作。10个月后,每个人都做了一些事情,并以完全不同的方式更改了RootViewController

现在,克隆整件事有什么意义?当开发人员A更改RootViewController时,开发人员B希望基于该更改继续工作。还是不?但是Dev B将如何获得这种改变呢?通过每天克隆整件事?他自己的变化呢?是否存在某种超级合并操作,将所有克隆合并到一个大的超级克隆中,每个人都必须偶尔用自己的克隆替换


我相信Mercurial很酷,也很有用。但我就是不明白。

一般来说,在Mercurial这样的分布式版本控制系统中,您仍然有一个中央存储库。要么开发人员推进中央回购,要么有一个人维护中央回购,从单个开发人员那里获取补丁(例如,Linux使用这种方法)


如果您不使用该开发模型,那么是的,通常在其他开发人员完成了一个有趣的补丁后,您只需要从他们那里获取信息。

一般来说,在Mercurial这样的分布式版本控制系统中,您仍然有一个中央存储库。要么开发人员推进中央回购,要么有一个人维护中央回购,从单个开发人员那里获取补丁(例如,Linux使用这种方法)

如果您不使用该开发模型,那么是的,通常情况下,当其他开发人员完成了一个有趣的补丁程序时,您只需要从他们那里获取信息。

我发现这里的是对Mercurial的一个很好的介绍

你必须从哪里开始hg init

所有开发人员都应该有一些共同的基础/祖先hg克隆

他们必须从其他开发人员那里获得更改/发布他们自己的更改 hg pushhg pullhg bundle

如果你退出,你需要看看你自己的回购协议会发生什么hg传入

发生了哪些变化hg diff

此外,拥有一些中央存储库也很方便,每个人都可以在其中推送更改并从中提取更改。

我发现这里的是对Mercurial的一个很好的介绍

你必须从哪里开始hg init

所有开发人员都应该有一些共同的基础/祖先hg克隆

他们必须从其他开发人员那里获得更改/发布他们自己的更改 hg pushhg pullhg bundle

如果你退出,你需要看看你自己的回购协议会发生什么hg传入

发生了哪些变化hg diff


此外,在分布式版本控制系统(DVCS)(mercurial和git)中,有一些中央存储库是很方便的,每个人都可以在其中推送他们的更改并从中提取更改。(即使是“服务器”也是一个任意选择的主机,没有更多的权利来处理他人的工作)

每个开发人员都可以在不让其他人无法使用的情况下完成自己的工作。你还记得上一次有人做了坏事,但没人能成功吗?这在DVCS中是不可能的

在Subversion/CVS中,您应该进行分支以避免这些问题,但是合并是复杂的,所以很少/不是针对每个任务进行合并


在DVCS中,不进行分支是不可能的,但是合并很容易,应该在所有代码完成之后进行(bug关闭,功能完成,…)。开发人员可以有任意多个分支,只要他打开了任务。

在分布式版本控制系统(DVCS)(mercurial和git)中,没有人是主控者。(即使是“服务器”也是一个任意选择的主机,没有更多的权利来处理他人的工作)

每个开发人员都可以在不让其他人无法使用的情况下完成自己的工作。你还记得上一次有人做了坏事,但没人能成功吗?这在DVCS中是不可能的

在Subversion/CVS中,您应该进行分支以避免这些问题,但是合并是复杂的,所以很少/不是针对每个任务进行合并

在DVCS中,不进行分支是不可能的,但是合并很容易,应该在所有代码完成之后进行(bug关闭,功能完成,…)。您的开发人员可以有任意多个分支,只要他打开了任务。

摘自我的答案:

关于DVCS需要记住的一点是,它实际上不是关于它的分布式,而是关于分支和合并。DVC使分支和合并变得更加容易,以至于每个开发者/设计者/前端开发者基本上都有自己的私有分支——本地回购。这样,它们就可以并行工作,而不必互相踩脚。这意味着他们可以每隔几个小时签入一次代码,而不是等待几天,直到他们完成所有的工作来签入代码

如果您在任何类型的组织(公司、项目团队等)中,您仍然需要一个中央存储库,因此您有一个规范版本的代码。很少有团队在没有中央服务器的情况下使用完全分布式的工作流,因为随着团队中人数的增加,您的连接会增加到N2,而在中央服务器上则保持N。

摘自我对以下问题的回答:

有一件事要记住 o---o---o---o <-- changes from central repository / (C) \ o---o---o---o <-- their changes o---o---o---o / \ (C) (M)---o---o---o <-- continued working after the merge \ / o---o---o---o
     /----o----o Head 'Dev A'
----O Central    
     \----o----o Head 'Dev B'
     /----o----o---
----O Central      \
     \----o----o----o Head 'Dev B'
Dev A /----o----o----o----o----o----o----o--\
     /            \              \           \
----O Central      \              \           o--\        /-o
     \              \              \              \      /
Dev B \----o----o----o----o----o----o----o----o----o----o