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
Mercurial新手:可以同步两个预先存在的代码库吗?_Mercurial - Fatal编程技术网

Mercurial新手:可以同步两个预先存在的代码库吗?

Mercurial新手:可以同步两个预先存在的代码库吗?,mercurial,Mercurial,最近,我开始研究一个项目的“可移植”版本,将所有文件复制到一个新目录。可移植目录与稳定目录的区别仅在于删除或注释了哪些内容;没有添加任何内容 我最终决定是时候学习源代码管理了。每个人都说简单的开始比任何事情都重要,我最终选择了Mercurial,因为它有利于分支,而且(更重要的是)我喜欢我在网上找到的教程(例如,和) 我为我的稳定目录创建了一个存储库,并在一个中央存储库(Dropbox)中创建了一个克隆。我正在提交、推送等。但是,现在我想将我的(已经存在的)可移植目录链接到中央存储库。我希望能够

最近,我开始研究一个项目的“可移植”版本,将所有文件复制到一个新目录。可移植目录与稳定目录的区别仅在于删除或注释了哪些内容;没有添加任何内容

我最终决定是时候学习源代码管理了。每个人都说简单的开始比任何事情都重要,我最终选择了Mercurial,因为它有利于分支,而且(更重要的是)我喜欢我在网上找到的教程(例如,和)

我为我的稳定目录创建了一个存储库,并在一个中央存储库(Dropbox)中创建了一个克隆。我正在提交、推送等。但是,现在我想将我的(已经存在的)可移植目录链接到中央存储库。我希望能够,比如说,修复我稳定代码中的一个bug,将它推送到中央repo,然后将bug修复拉到可移植版本中——而不改变可移植代码中的任何其他内容


我不确定首先该如何处理可移植代码。如果我将中央repo克隆到可移植目录,那么在我第一次更新可移植目录时,我的所有可移植代码都不会被覆盖吗?

您需要将“中央”存储库克隆到可移植目录,然后才能执行您描述的任何工作。不过,一个简单的解决方法是将您的便携目录复制到其他地方,然后创建一个新的空文件夹。然后,将存储库克隆到该目录中。之后,您应该能够将以前的可移植目录复制并粘贴到克隆版本中,并允许它覆盖那里的文件。这将允许您将这些更改提交到版本控制中,并与中央存储库同步


如果此方法不起作用,您仍然需要克隆中央存储库,然后手动将所有“挂起”的现有可移植位置更改为新的克隆版本。

听起来可移植版本应该是稳定的repo中的一个分支。由于您已经获得了一个不在存储库中的现有版本,我认为最简单的方法是使用
addremove
命令

我要做的是首先确保你的稳定分支机构最近有任何变化,并确保你有一份回购协议的备份副本,以防出现任何问题。然后,我将删除稳定存储库目录中的所有内容,除了
.hg
目录和任何其他存储库管理文件,如
.hgignore
.hgsub
.hgeol
等。然后,我将可移植版本复制到该目录并运行
hgaddremove
addremove
命令将自动添加所有新文件并删除所有丢失的文件(在本例中,应仅删除这些文件)。现在我用
hg branch
将其标记为一个单独的分支,其中
是您想要命名的可移植分支。然后像往常一样提交
hg


现在,您已经拥有了稳定的分支(称为“default”,除非您已重命名它)和新的可移植分支。现在,当您更改稳定分支时,您可以
hg update
到您的可移植分支并运行
hg merge default
(或用您的稳定分支的名称替换default)将这些更改合并到可移植分支中。

请注意在下拉框中保留回购。这不安全。Dropbox按照自己的方式同步文件,Mercurial具有非常具体、经过良好测试的锁定语义,考虑了硬链接、网络文件系统和事务回滚。Mercurial的push and pull是从一台机器到另一台机器进行更改的方式,而不是文件同步。请注意Ry4an的评论,保留中央存储库是一个非常危险的地方。因为Mercurial负责共享和版本控制,所以不需要Dropbox。