2011-01-09 49 views
1

非常新的Mercurial。我注意到我的hg init不起作用。讓我解釋一下:Mercurial奇怪的HM初始化問題

當我給這個命令hg clone https://www.mercurial-scm.org/repo/hello my-hello,那麼,my_hello文件夾是用所有的(2)文件創建的。然後我從my_hello刪除.hg文件夾。然後我用hg init初始化這個文件夾。它被初始化。

但初始化後,當我使用hg clone my_hello new_my_hello克隆文件夾時,它只是在new_my_hello文件夾中創建.hg文件夾,而不是其他文件。

和所有的嘗試我得到這個問題。請幫忙。

我正在使用Windows 7 64位。我的Mercurial也是64位。

+2

爲什麼要刪除克隆附帶的.hg文件夾?通過這樣做,你就失去了所有的版本庫歷史記錄,並且你的新回購(在你的`hg init`將與你在9.e中克隆它的回購不兼容),你將無法將更改推回去) – Matt 2011-01-09 22:13:33

回答

4

簡短的回答:未跟蹤文件中不包括的克隆。

如果您第一次刪除.hg元數據目錄並重新初始化一個新目錄,它將不再跟蹤任何文件;在init中沒有默認添加文件。所以當你克隆它的時候,你會得到一個空的倉庫的克隆。像這樣:

$ hg clone https://www.mercurial-scm.org/repo/hello my-hello 
requesting all changes 
adding changesets 
adding manifests 
adding file changes 
added 2 changesets with 2 changes to 2 files 
updating to branch default 
2 files updated, 0 files merged, 0 files removed, 0 files unresolved 
$ cd my-hello 
$ ls 
Makefile hello.c 
$ hg st --all 
C Makefile 
C hello.c 

上面是沒有修改文件的完全正常的回購副本。

$ rm -rf .hg 
$ hg st --all 
abort: There is no Mercurial repository here (.hg not found)! 

現在沒有回購了。

$ hg init 
$ hg st --all 
? Makefile 
? hello.c 

現在有一個,但它不再跟蹤文件,因此「?」。

$ hg clone . ../new-my-hello 
updating to branch default 
0 files updated, 0 files merged, 0 files removed, 0 files unresolved 
$ cd ../new-my-hello 
$ hg st --all 
$ ls 

該克隆不包含未跟蹤文件,因此來自「my-hello」的兩個「?-files」未被克隆。

3

您通過運行hg init來創建存儲庫,您已經完成了該存儲庫。但是,您尚未開始跟蹤任何文件。要做到這一點,您必須明確告訴hg使用hg add file1 file2 ...跟蹤哪些文件。或者,您可以通過調用hg addremove來添加所有文件。之後,您需要通過hg commit將這些文件添加到回購站。

一旦你這樣做在原來的回購,在你new_my_hello,你就可以通過調用hg pull拉從my_hello這些變化,並且爲了獲得這些文件的最新版本,請與hg update

所有的說法,我敢肯定,刪除您現有的.hg文件夾沒有好處。

學習汞柱工作流,很好地解釋爲什麼你沒有得到你以爲你得到了一個更好的工作非常有幫助的資源是http://hginit.com