如何将Mercurial存储库克隆到已存在的目录中?

时间:2010-09-01 21:46:17

标签: django version-control mercurial ssh

我有一个客户端的Dj​​ango项目,我正在本地开发,使用Mercurial进行版本控制。我将我的本地存储库推送到我的个人远程服务器(我保留所有项目),然后当我部署它时(在任何一个Web服务器上)我从我的个人服务器克隆该存储库。

这在大多数服务器上都可以正常工作(我有完全控制权),但我有一些项目正在部署到WebFaction上。 WebFaction很棒,但它的设置有点不寻常,因为我需要首先通过控制面板将Django项目声明为“应用程序”。这会自动创建一些内容,例如'apache2','myproject'等文件夹。虽然我想从我的个人远程服务器克隆存储库,但这是同一个文件夹。执行通常的hg clone命令不起作用,因为它说目标文件夹已经存在。我真的无法对这个文件夹的内容做些什么,所以我需要解决这个问题。

我不是Mercurial的专家,我似乎唯一可行的方法是将其克隆到另一个文件夹,然后将所有内容(包括.hg)移动到我想要的实际文件夹中。这看起来很愚蠢......

我正在使用Mercurial v1.6.2(通过easy_install安装)。任何人都可以对此有所了解吗?

非常感谢。

4 个答案:

答案 0 :(得分:23)

仅复制.hg目录肯定有效,但您也可以hg init然后hg pull http://remote/repo。刚刚进行了初始化的回购只有000000000000000变更集,因此您可以从任何回购中获取而不会收到“无关的回购”警告。这与带有手动初始化的hg clone --pull基本相同。

答案 1 :(得分:11)

您只能复制.hg文件夹,然后还原或更新为小费。 E.g:

cp -a src/.hg dest/
cd dest
hg up -C

答案 2 :(得分:1)

您可以在事后移动文件夹,也可以只为其创建符号链接。我的webfaction目录实际上是符号链接的,所以我知道它工作正常。

答案 3 :(得分:0)

总的来说,您可能会尝试将Mercurial用作安装管理器,这当然不是它的设计目标。

如果我正确地阅读了您,您的源存储库的一部分应该是make deploy,它将文件放入适当的位置。换句话说,在部署目录中使用存储库克隆(在.hg中)似乎很奇怪且容易出错。