如何将专用Mercurial存储库移动到中央服务器?
我刚开始接触Mercurial,我读过Joel Spolsky的书,我很喜欢 我想知道:假设我有一个私人存储库,我在上面工作了大约一个月。然后我决定我想把它集中起来或者公开,比如说。我想保留所有的历史 直观的做法是使用,但根据文档: 源的位置将添加到 新存储库的.hg/hgrc文件,如下所示 将来使用的默认值 拉 我不认为这是我想要的,因为源是我的本地私有存储库,目标是公共服务器。我不希望公共服务器将来试图从我的私有存储库中提取,认为它是中心存储库。我希望这是有道理的 我必须手动调整服务器上的.hg/hgrc文件吗?我的做法正确吗?说,这就像在BitBucket上进行空回购一样简单,然后推动它: 。。。通过“创建存储库”页面创建新的空存储库。我们假设该存储库名为blonk,可以在上找到 现在,只需推动它:如何将专用Mercurial存储库移动到中央服务器?,mercurial,repository,bitbucket,hgrc,Mercurial,Repository,Bitbucket,Hgrc,我刚开始接触Mercurial,我读过Joel Spolsky的书,我很喜欢 我想知道:假设我有一个私人存储库,我在上面工作了大约一个月。然后我决定我想把它集中起来或者公开,比如说。我想保留所有的历史 直观的做法是使用,但根据文档: 源的位置将添加到 新存储库的.hg/hgrc文件,如下所示 将来使用的默认值 拉 我不认为这是我想要的,因为源是我的本地私有存储库,目标是公共服务器。我不希望公共服务器将来试图从我的私有存储库中提取,认为它是中心存储库。我希望这是有道理的 我必须手动调整服务器上的.
$ 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
现在您只需输入hgpush和hgpull,而无需指定完整的URL
如前所述,使用“hg push”执行此操作可能是完成此操作的最佳方式 然而,在其他情况下,注意到所有的Hg状态都包含在.Hg目录中可能是方便的,或者是令人放心的,因此只要移动这个目录就足以移动存储库 例如,如果您对example.com上的计算机具有ssh访问权限,则可以在“private”存储库中对.hg目录进行tar(或压缩),将其解压缩到远程计算机上的
~/repo/foo
(从而在那里创建一个目录~/repo/foo/.hg
),然后简单地克隆此目录:
$ hg clone ssh://example.com/repo/foo
我同意,这确实有点后门的感觉。然而,这里并没有真正的秘密发生,也不需要编辑配置文件。当我这样做的时候,我发现它没有“正确”的方式那么令人困惑。Ned有你的答案,但是FWIW如果你的目的地是ssh://URL,你可以使用clone在别处创建一个新的存储库。如果您通过http://与服务器对话,则需要在服务器上“hginit”,然后从本地“hgpush”。将源设置为拉取的默认值在推送克隆上基本上是不相关的,因为您可能永远不会“拉”那个远程repo——只会推送到它。如果您发现自己在使用远程回购,您可以在.hgrc.Excellent points的[path]部分更改默认值-谢谢,Ry4an。我明白你所说的服务器上默认拉取位置的无关性。