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
Version control mercurial中具有多个远程位置的推拉功能_Version Control_Mercurial_Dvcs - Fatal编程技术网

Version control mercurial中具有多个远程位置的推拉功能

Version control mercurial中具有多个远程位置的推拉功能,version-control,mercurial,dvcs,Version Control,Mercurial,Dvcs,(我是mercurial和版本控制方面的新手。) 我使用的是来自bitbucket(mercurial)的开源框架克隆。每当那个框架被更新时,我就运行hgpull和hgpupdate来获取最新的副本。现在,我出于自己的目的对该框架进行了一些修改,并将其存储在bitbucket上的另一个存储库中。现在,如果更新了原始框架,我如何将这些更改合并到我自己的存储库中,保持我自己的更改完好无损 好吧,这是我们的工作流程 首先,从要修改的bitbucket上的第三方项目进行克隆,以便在本地克隆中获得以下历史

(我是mercurial和版本控制方面的新手。)


我使用的是来自bitbucket(mercurial)的开源框架克隆。每当那个框架被更新时,我就运行hgpull和hgpupdate来获取最新的副本。现在,我出于自己的目的对该框架进行了一些修改,并将其存储在bitbucket上的另一个存储库中。现在,如果更新了原始框架,我如何将这些更改合并到我自己的存储库中,保持我自己的更改完好无损

好吧,这是我们的工作流程

首先,从要修改的bitbucket上的第三方项目进行克隆,以便在本地克隆中获得以下历史记录:

3rd:   1---2---3
clone: 1---2---3
然后,您在您的bitbucket帐户上创建一个新项目,并推送到该回购协议,现在您有:

3rd:   1---2---3
clone: 1---2---3
fork:  1---2---3
3rd:   1---2---3
clone: 1---2---3---4---5
fork:  1---2---3---4---5
3rd:   1---2---3---4'--5'
clone: 1---2---3---4---5
fork:  1---2---3---4---5
这里的“fork”只是指bitbucket上的公共克隆

然后对克隆进行一些更改,并推送到您自己的bb存储库,现在您有:

3rd:   1---2---3
clone: 1---2---3
fork:  1---2---3
3rd:   1---2---3
clone: 1---2---3---4---5
fork:  1---2---3---4---5
3rd:   1---2---3---4'--5'
clone: 1---2---3---4---5
fork:  1---2---3---4---5
然后在某个时候,第三方会更新其存储库,因此现在您有:

3rd:   1---2---3
clone: 1---2---3
fork:  1---2---3
3rd:   1---2---3
clone: 1---2---3---4---5
fork:  1---2---3---4---5
3rd:   1---2---3---4'--5'
clone: 1---2---3---4---5
fork:  1---2---3---4---5
“修订号后面的”表示修订号相同,但变更集内容不同

此时,您将第三方更改向下拉到自己的克隆中:

3rd:   1---2---3---4'--5'

clone: 1---2---3---4---5
                \
                 \-6'--7'

fork:  1---2---3---4---5
然后在克隆中执行合并,并实施一些新更改:

3rd:   1---2---3---4'--5'

clone: 1---2---3---4---5----8---9---10
                \          /
                 \-6'--7'-/

fork:  1---2---3---4---5
并推送到您的bb存储库:

3rd:   1---2---3---4'--5'

clone: 1---2---3---4---5----8---9---10
                \          /
                 \-6'--7'-/

fork:  1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+
同样,在某个时候,第三方开发商会更新其回购协议:

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+

fork:  1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+
重复这个过程,首先拉:

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+--11'---12'


fork:  1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+
您合并:

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10---13
                \          /            /
                 +-6'--7'-+--11'---12'-+


fork:  1---2---3---4---5----8---9---10
                \          /
                 \-6'--7'-/
和推送:

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10---13
                \          /            /
                 +-6'--7'-+--11'---12'-+     <-- 11' and 12' corresponds to 6'/7'

fork:  1---2---3---4---5----8---9---10---13
                \          /            /
                 +-6'--7'-+--11'---12'-+
3rd:1--2--3--4'--5'--6'--7'
克隆:1-2-3-4-5-8-9-10-13
\          /            /

+-6'--7'-+--11'--12'-+在大多数分布式源代码管理系统中,您将从上游远程存储库中提取,查找并修复合并冲突,在本地工作副本中签入合并,然后最终推送到远程存储库。