2010-06-03 171 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

相關問題