2011-05-04 18 views
13

根據位於http://dev.lshift.net/paul/mercurial-server/docbook.html的「創建存儲庫」創建新存儲庫 - 我們需要做的就是不存在clone使用mercurial-server創建新的存儲庫

但在1.1我不工作。如果我們看一下代碼:

if cmd is None: 
    fail("direct logins on the hg account prohibited") 
elif cmd.startswith('hg -R ') and cmd.endswith(' serve --stdio'): 
    repo = getrepo("read", cmd[6:-14]) 
    if not os.path.isdir(repo + "/.hg"): 
     fail("no such repository %s" % repo) 
    dispatch.dispatch(['-R', repo, 'serve', '--stdio']) 
elif cmd.startswith('hg init '): 
    repo = getrepo("init", cmd[8:]) 
    if os.path.exists(repo): 
     fail("%s exists" % repo) 
    d = os.path.dirname(repo) 
    if d != "" and not os.path.isdir(d): 
     os.makedirs(d) 
    dispatch.dispatch(['init', repo]) 
else: 
    fail("illegal command %r" % cmd) 

我們可以看到,創建我們需要通過專門init命令。

此命令按預期工作:

"TortoisePlink.exe" -ssh -2 [email protected] "hg init tst" 

但我希望它是一些更優雅的命令這樣做。

那麼,這是文檔中的「bug」還是我做錯了什麼?

UPDATE

我的問題是隻有遠程使用mercurial-server創建存儲庫。

更新2

這是我的誤解,因爲有應已創建本地資源庫,將被遠程克隆,目前還不清楚我。

+0

mercurial-server is * not * Mercurial。它不是Mercurial的一部分,它不隨Mercurial發貨。它不是由Mercurial的作者寫的。 – 2011-05-05 01:46:19

+1

@ Ry4an:謝謝,船長。所以呢? ))和'2 + 2 = 4'。這個線程中的任何更明顯的句子? – zerkms 2011-05-05 02:17:12

+0

@zerkms拿着手機......'2 + 2 = 4'? – alex 2011-05-05 02:19:05

回答

15

我覺得使用Mercurial-server創建一個新的回購非常簡單。假設你有權利並且路徑「/ DIR1/DIR2 /」已經存在於服務器上,簡單地(使用命令行):

mkdir new 
cd new 
hg init 
hg clone . ssh://[email protected]/dir1/dir2/new 

乾杯,
克里斯托夫。

+0

沒錯。它不是很明顯(至少對我來說)它應該已經創建了本地存儲庫,我們可以遠程克隆。我認爲我們需要做的就是克隆到本地*空*目錄新的遠程回購。 – zerkms 2011-05-05 12:48:43

+0

*「假設路徑已經存在」* 實際上,當前版本的Mercurial服務器允許您克隆到服務器,即使路徑以前尚未創建。這是Mercurial服務器的一個非常有用的功能...我仍然在用Git進行搜索:) – 2013-03-17 11:47:56

+0

這可以在沒有SSH(通過HTTP方式)的情況下完成嗎? – Kangkan 2016-06-23 06:32:19

1

您引用的頁面用於共享現有存儲庫,並非專門用於創建新的空白存儲庫。您給hg init tst的命令對於初始化新的空存儲庫是正確的。我認爲關於它的唯一'不雅'是你在遠程執行,因此需要額外的ssh命令。版本庫創建命令本身hg init非常簡單。

+0

請從該文檔鏈接中閱讀「創建存儲庫」一節。具體是關於創建遠程存儲庫;-) – zerkms 2011-05-04 12:41:32