2011-03-06 59 views
1

我在Mercurial存儲庫中有一個名爲httpdocs/css/ui-lightness的目錄。我想將此目錄及其所有內容移至httpdocs/css/jquery/themes/ui-lightness。所以,我認爲這是命令來啓動:hg rename不會刪除工作副本中的原始文件夾

hg rename httpdocs/css/ui-lightness httpdocs/css/jquery/themes/ui-lightness 

事實上,我已經嘗試過,似乎工作,但在工作拷貝「源」目錄下(即httpdocs資料/ CSS/ui-lightness)不會被刪除(而在存儲庫中)。

有人可以解釋爲什麼嗎?

回答

1

一位Krtek發現,你在做什麼應該工作。這裏是我運行在本地:

~$ mkdir -p httpdocs/css/ui-lightness 
~$ cd httpdocs/ 
~/httpdocs$ hg init 
~/httpdocs$ echo test > css/ui-lightness/file 
~/httpdocs$ hg commit -A -m "initial commit, old location" 
adding css/ui-lightness/file 
~/httpdocs$ hg rename css/ui-lightness css/jquery/themes/ui-lightness 
moving css/ui-lightness/file to css/jquery/themes/ui-lightness/file 
~/httpdocs$ ;s 
bash: syntax error near unexpected token `;' 
~/httpdocs$ ls 
css 
~/httpdocs$ tree 
. 
`-- css 
    `-- jquery 
     `-- themes 
      `-- ui-lightness 
       `-- file 

4 directories, 1 file 
~/httpdocs$ hg stat 
A css/jquery/themes/ui-lightness/file 
R css/ui-lightness/file 

如果您有任何未追蹤(可能忽略)文件httpdocs/css/ui-lightness他們將不會被重命名,因此目錄不會是空的,因此不會被刪除,但被跟蹤內容該目錄應該被移動。

注意我還沒有提交重命名(即使Mercurial知道它是重命名,它顯示爲Add和Remove),但是爲了反映在其他克隆中,我需要hg commithg push,他們必須hg pull,然後hg updatehg merge

+0

你是對的。該目錄並未被刪除,因爲它包含未跟蹤的文件(即無聊的.DS_Store文件)! – Hobbes 2011-03-10 19:58:33

+0

這足以讓你在資源分支的時代長久。很高興它解決了。 – 2011-03-10 20:32:09

-1

它不會刪除源代碼,只會標記爲在存儲庫中刪除。之後您應該手動移除文件。

+1

這並不準確。 'hg rename'確實會刪除源文件。 – 2011-03-06 16:49:22

+0

糟糕,這一定是正確的 - 以及'hg remove','hg rename'刪除實際的源 – 2011-03-06 20:00:22

1

你打電話給「知識庫」和「工作副本」,你在哪裏做你的hg rename命令?

我想你只是忘了推動你的改變,然後在另一邊做拉。更改不會奇蹟般地出現在存儲庫的所有克隆中,您必須檢索更改。

我剛剛測試過,hg rename刪除文件就好了。

相關問題