如何使用Mercurial将存储库克隆到远程服务器/存储库

时间:2010-06-03 02:50:48

标签: mercurial

今天发现自己很困惑。

我在本地创建一个空白存储库(hg init),将其克隆到工作副本,添加一些代码,提交并推送它(显然是本地存储库)。

现在我需要与其他人共享该存储库。有一个服务器上有一个mercurial,如何将我的存储库克隆到远程服务器,以便其他开发人员可以访问它并从/向它提取/推送代码?

3 个答案:

答案 0 :(得分:37)

您需要查看publishing repositories wiki页面以进入Web界面和访问控件,但最基本的是您可以执行以下操作:

hg clone yourlocalrepo ssh://you@server//home/you/repo

将您的本地仓库克隆到您选择的远程位置。请注意,该URL中有两个双斜杠。

您不能使用http://创建远程仓库,只能使用ssh://。如果您拥有http到hgweb.cgi的http,那么您可以在服务器上“hg init”一个空的repo,然后hg推送到它。

答案 1 :(得分:8)

如果您的“官方”存储库由HTTP服务器提供,并且您希望基于本地计算机的存储库在中心位置创建存储库,则这是一种方法。 您需要在中央服务器上拥有管理员权限才能执行此操作。

e.g。我正在开发Windows,我的中央存储库在linux上运行,每个the official guide由lighttpd提供服务。服务器的中央repo目录为/var/hg/repos/,由用户/组www-data拥有。我的本地计算机的IP是10.1.10.100,我要克隆的存储库名为foo。

  1. 在本地计算机上,打开命令提示符进入存储库目录并键入hg serve。这将运行本地hg Web服务器,这将允许服务器从中提取。
  2. ssh进入中央仓库服务器,以具有su-www-data权限的用户身份登录。
  3. cd /var/hg/repos
  4. sudo -u www-data hg clone http://10.1.10.100 foo

答案 2 :(得分:4)

对于那些后来出现并且不想为了将更改推送到为主机存储库构建的服务器而烦恼的ssh的麻烦,你可以只在服务器上初始化,然后按照你所做的每个其他repo进行推送。 / p>

# on server:
cd repos/
mkdir myrepo
cd myrepo
hg init
cd ..
chown -R apache:apache myrepo

cd ..
vim hgweb.config

# change [paths]
[paths]
myrepo = /path/to/myrepo



# on your machine

# make sure you've configured hgrc correctly
[paths]
default = http://server/hg/repos/myrepo

hg push

# ???

# profit