working directory
hg commit (resulted in rev3)
複製了一些目錄裏面......改變了一些文件。難道
hg add
hg commit (resulted in rev4 - tip)
如何找回確切地REV3的狀態。 hg update 3
會將文件更改爲它們在rev3中的狀態,但它也會將所有複製的目錄留在裏面。我想獲取沒有複製的目錄和文件的工作目錄,它們是在rev3之後添加的。
working directory
hg commit (resulted in rev3)
複製了一些目錄裏面......改變了一些文件。難道
hg add
hg commit (resulted in rev4 - tip)
如何找回確切地REV3的狀態。 hg update 3
會將文件更改爲它們在rev3中的狀態,但它也會將所有複製的目錄留在裏面。我想獲取沒有複製的目錄和文件的工作目錄,它們是在rev3之後添加的。
這並不適合我發生:
> hg init
> mkdir first
> jed first/foo.txt
> hg add
adding first/foo.txt
> hg commit -m asd
> mkdir second
> jed second/foo.txt
> hg add
adding second/foo.txt
> hg commit -m asd
> hg update 0
現在first
存在,但second
不...
你確定你在新的目錄你的提交前加入的一切嗎?
像Jon寫道,Mercurial通常會嘗試自行清理。所以當你hg update
你應該回到你的承諾。我猜你看到的是以下行爲:
$ hg init repo
$ cd repo
$ echo "# some C program" > foo.c
$ hg add foo.c
$ hg commit -m first
$ mkdir dir
$ echo "$ other C program" > dir/bar.c
$ hg add dir/bar.c
$ hg commit -m second
$ echo "object file" > dir/bar.o
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ ls
foo.c dir
$ ls dir
bar.o
所以未跟蹤dir/bar.o
文件已經落伍,但跟蹤dir/bar.c
文件已被刪除正確。即:Mercurial 將不會刪除未跟蹤文件,因爲它不知道它們是否包含有價值的數據。即使這些文件被.hgignore
中的模式忽略,也是如此。如果該目錄只包含跟蹤的dir/bar.c
文件,那麼當您更新到不需要它的修訂版時,該目錄將被完全刪除。
清理未跟蹤文件的正常方法是使用purge extension。
可能......不知道了,刪除它。但很高興知道這不是預期的行爲,所以至少我會知道這是我的錯誤...只是嘗試過你的例子,所以是的,這可能是錯誤的根源。 – Rook 2012-01-06 18:00:26