如何将私有Mercurial存储库移动到中央服务器?

时间:2010-06-23 20:47:48

标签: mercurial repository bitbucket hgrc

我刚刚开始使用Mercurial,我读过Joel Spolsky的Hg Init tutorial,我很喜欢。

我想知道:假设我有一个私人存储库,我工作了大约一个月。然后我决定将其集中或公开,例如bitbucket.org。我想保留所有的历史。

直观的是使用hg clone,但根据文档:

  

添加源的位置   新存储库的.hg / hgrc文件,如   默认用于将来   拉动。

我不认为这是我想要的,因为源是我的本地私有存储库,目标是公共服务器。我不希望公共服务器在未来试图从我的私有存储库中提取它是的核心存储库。我希望这是有道理的。

我是否必须手动调整服务器上的.hg / hgrc文件?我正确接近这个吗?

2 个答案:

答案 0 :(得分:18)

BitBucket's help说它就像在BitBucket上制作一个空的回购一样简单,然后推送它:

  

...通过“创建存储库”页面创建一个新的空存储库。我们假设这个存储库名为blonk,可以在http://bitbucket.org/jespern/blonk找到。

     

现在,推动它:

  $ cd ~/Work/blonk # our existing hg repository
  $ hg push http://bitbucket.org/jespern/blonk
  ...
     

完成!

     

您可以在存储库中编辑.hg / hgrc以包含Bitbucket的默认路径:

  $ cat .hg/hgrc
  [paths]
  default = http://bitbucket.org/jespern/blonk
     

现在您只需输入hg push和hg pull,而无需指定完整的URL。

答案 1 :(得分:4)

如上所述,使用'hg push'执行此操作可能是最好的方法,总体而言。

然而,在其他情况下,注意Hg状态的所有包含在.hg目录中可能很方便或令人放心,因此只需移动此目录即可移动存储库

例如,如果您对example.com上的计算机具有ssh访问权限,则可以在“私有”存储库中tar。(或压缩)您的.hg目录,将其解压缩,例如~/repo/foo远程机器(因此在那里创建一个目录~/repo/foo/.hg),然后简单地克隆它:

$ hg clone ssh://example.com/repo/foo

这确实有一点点的后门感觉,我同意。但是,这里没有真正发生的事情,并且不需要编辑配置文件。当我这样做时,我发现它比“适当”的方式更容易混淆。