2010-06-03 166 views
24

今天发现自己对此很困惑。我在本地创建一个空白的仓库(hg init),将它克隆到工作副本,添加了一些代码,提交并推送它(显然是本地仓库)。如何使用Mercurial将存储库克隆到远程服务器/存储库

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

回答

36

你要检查出publishing repositories维基页面进入web界面和访问控制,但它是最基本的,你可以做这样的事情:

hg clone yourlocalrepo ssh://[email protected]//home/you/repo 

那克隆你的本地仓库到您选择的远程位置。请注意,该网址中有两个双斜线。

您不能使用http://创建远程回购,只有ssh://。如果你只有http到hgweb.cgi,你可以在服务器上'hg init'一个空的repo,然后hg推送它。

+0

很酷,谢谢,但其他人怎么克隆呢? – 2010-06-03 04:28:21

+0

如果允许他们从您的homedir中读取,他们可以从ssh:// you @ server // home/you/repo克隆。如果你不满意,你可以设置一个你可以读写的区域。 – 2010-06-03 16:43:25

7

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

例如我在Windows上开发,我的中央资源库在linux上运行,由lighttpd根据the official guide提供服务。服务器的中央回购目录是/var/hg/repos/,由用户/组www-data拥有。我的本地计算机的IP为10.1.10.100,我想克隆的存储库名为foo。

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

+1用于记录通常的技术......我厌倦了常用的技术,因此我打算在python中编写一个cgi(网页),以便从任何授权主机为您执行hg clone命令。 – 2011-06-24 18:57:38

4

对于那些还在后面,不想理会的SSH推更改内置托管回购服务器的麻烦,你可以初始化的服务器上,然后像你做其他任何回购一样推动。

# 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 
+0

不是一个坏主意,也可以转换成cgi助手 - 网页。首先在服务器上创建,克隆空白的,然后将其设置为集中式工作流程。 – 2011-06-24 18:58:45

相关问题