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

时间:2012-02-06 20:32:38

标签: mercurial

最近,我开始通过将所有文件复制到新目录来开发项目的“便携式”版本。可移植目录与稳定目录的区别仅在于删除或注释掉的内容;没有添加任何内容。

我终于决定学习源代码控制了。每个人都说只是开始比其他任何事情都重要,我最终选择了Mercurial,因为它有利于分支,(更重要的是)我喜欢我在网上找到的教程(例如,http://hginit.comhttp://hgbook.red-bean.com/)。 / p>

我为我的稳定目录创建了一个存储库,并在中央存储库(Dropbox)中创建了一个克隆。我正在提交,推送等。但是,现在,我想将我(已经存在的)可移植目录与中央存储库链接起来。我希望能够修复我的稳定代码中的错误,将其推送到中央存储库,然后将错误修复程序引入便携版本 - 而无需更改便携式代码中的任何其他内容。

我不确定首先使用便携式代码做什么。如果我将中央存储库克隆到便携式目录,那么在我第一次更新便携式目录时,是否不会覆盖所有可移植代码?

2 个答案:

答案 0 :(得分:1)

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

如果此方法不起作用,您仍然必须克隆中央存储库,然后手动对现有的便携式位置进行所有“挂起”更改,以便新克隆版本。

答案 1 :(得分:1)

听起来便携版本应该是稳定仓库中的一个分支。由于您已经有一个不在存储库中的现有版本,我认为使用addremove命令执行此操作的简便方法。

我要做的是首先确保您的稳定分支机构最近有任何更改,并确保在某些地方出现问题时您已获得备用副本。然后我会删除稳定存储库目录中的所有内容,除了.hg目录和任何其他存储库管理文件,例如.hgignore.hgsub.hgeol等。然后我会将可移植版本复制到该目录并运行hg addremoveaddremove命令将自动添加所有新文件并删除所有丢失的文件(在这种情况下应该删除它们)。现在我将此标记为hg branch <branch_name>的单独分支,其中<branch_name>是您想要命名便携式分支的任何内容。然后像往常一样hg commit

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