2011-04-15 113 views
1

我剛剛第一次進入Mercurial存儲庫,現在我正試圖查看是否可以從存儲庫中刪除目錄。我刪除該目錄從我的本地文件系統,並試圖從Ubuntu的這個命令:從Mercurial存儲庫中刪除目錄

sudo hg push https://alex.genadinik:[email protected]/hg/ "some comment" 

,我得到的錯誤:

hg push: invalid arguments 

但是,這是我最初用於推動命令。我在這裏做錯了什麼?

這裏是我的嘗試:

$ sudo hg commit -m "removing file" 
$ sudo hg push 
abort: repository default-push not found! 

爲什麼會發生呢?

+0

@Genadinik:'我從我的本地文件系統中刪除了該目錄'您執行了「hg remove」(或忘記),還是僅僅是一個文件系統刪除? – dls 2011-04-15 20:24:26

+1

與推送命令有關的「某些評論」部分應該是什麼? – 2011-04-15 20:43:05

+0

@dls我剛剛從文件系統中刪除它。沒有意識到我必須做hg刪除。刪除hg是否應該遵循文件系統中的刪除操作? – Genadinik 2011-04-15 20:45:41

回答

4

你應遵循的程序是:

  1. hg remove or hg forget the files。 Mercurial不會跟蹤目錄,因此如果從特定目錄中刪除所有文件,目錄本身將從Mercurial的角度停止存在。

    最後,一旦跟蹤了文件,您將無法使用標準的rmdel命令將其刪除,也無法從文件瀏覽器中將其刪除。這樣做會導致Mercurial將該文件標記爲「丟失」,這意味着它仍在被追蹤。

    完成此操作後,您可以運行一個hg status,它應該顯示您剛剛用R前綴刪除的所有文件。

  2. 提交刪除。像任何其他修改一樣,hg remove/forget是在推送之前需要提交的更改。

  3. 推新的變更
+0

我剛剛發佈了我嘗試推送新變更集後發生的事情。關於爲何發生新錯誤的任何想法? – Genadinik 2011-04-15 20:52:40

+0

@Genadinik:您可能缺少默認推送路徑。嘗試在您的.hgrc或mercurial.ini文件中添加'[paths] default =/path /或/ url/to/repo'',或者像在原始文章中那樣指定整個推送路徑。 – dls 2011-04-15 20:59:58

+0

在我的存儲庫目錄中我只有一個名爲.hg的文件 - 哪裏是.hgrc或mercurial.ini文件存在的適當位置? - 謝謝! – Genadinik 2011-04-15 21:53:44

0

你需要指定庫?你不能只用'hg push'嗎?除非這不是您最初克隆的存儲庫?通常你也希望在提交中做出你的評論,不是肯定的,但我不認爲你可以推動。 'hg commit -m「我的評論」'

另外,確保您在推送之前已經提交了更改。

因此,在您的情況下,我會將此視爲您在克隆了初始存儲庫後應該執行的操作。

rm directory 
hg commit -m "my commit message" 
hg push 

它會提示您輸入憑證。

+2

我不認爲執行文件系統刪除(如'rm')將工作。這將導致Mercurial將文件標記爲'missing',該文件在幫助文本中被定義爲'由非hg命令刪除,但仍然被跟蹤'。你將不得不使用'hg忘記'或'hg remove'。 – dls 2011-04-15 20:35:55

+0

@dls我認爲你是對的。我使用的工具太多了。你將不得不使用hg忘記爲了這個工作。謝謝。 – 2011-04-15 20:43:11

+0

忘記命令導致系統刪除我需要刪除的文件。 – Genadinik 2011-04-15 20:47:58

0

push命令不帶註釋參數。你錯誤地記住了你所做的。你可能做了一個提交(可以使用-m進行註釋),然後推送,這需要一個URL而不是註釋。錯誤是告訴你擺脫那個評論。