12

我刚刚开始使用 Mercurial,并且我已经阅读了我喜欢的 Joel Spolsky 的Hg Init 教程

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

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

源的位置被添加到新存储库的 .hg/hgrc 文件中,作为将来拉取使用的默认值。

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

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

4

2 回答 2

18

BitBucket 的帮助说这就像在 BitBucket 上创建一个空的 repo,然后推送到它一样简单:

...通过“创建存储库”页面创建一个新的空存储库。我们假设这个存储库被命名为 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。

于 2010-06-23T21:09:24.880 回答
4

如前所述,使用“hg push”执行此操作可能是执行此操作的最佳方式,总体而言。

但是在其他情况下,注意所有Hg 状态都包含在 .hg 目录中可能会很方便或令人放心,因此只需移动此目录就足以移动存储库。

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

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

我同意,这确实有点后门的感觉。然而,这里并没有真正发生在幕后,也不需要编辑配置文件。当我这样做时,我发现它比“正确”的方式更容易混淆。

于 2010-06-24T10:59:09.283 回答