2015-12-23 112 views
-1

我試圖找到從特定變更集中獲取所有文件的最快方法;我不在乎歷史。從特定版本獲取所有文件的最快方法?

到目前爲止,我已經找到了最好的事情是cd到庫中,然後

hg archive -u <changeset> /path/to/put/files 

但我發現即使是在一個大倉庫很慢,即使它不創建.hg文件夾。

我在想,也許我可以用hg update來代替,因爲這似乎運行得更快一些,但我不想更新當前目錄,我希望將文件寫入當前回購之外的新目錄。那可能嗎?

或者是有一些其他的快捷方式?

+0

有沒有更好或更快的一般方式。 'hg archive'就是爲了達到這個目的,它通常是導出版本庫狀態到某個版本的最佳方式。 – planetmaker

+0

即使更新(與不期望的副作用)後的文件將需要被複制了.. – user2864740

+0

另一種方式是[克隆到一個特定修訂](http://stackoverflow.com/questions/4148234/how-罐你克隆-A-水銀存儲庫-AS-對的一特定變更),並然後向[ 「UNINIT」](https://github.com/wertarbyte/etckeeper/blob/master/uninit。 d/50vcs-UNINIT)。它會以任何方式更快或更好?我對此表示懷疑(因爲它也複製了最初商店的祖先歷史);但它會完成請求的任務而不修改當前的工作副本。因人而異。 – user2864740

回答

1

你可以試試下面的加快了一點東西:

hg archive --config ui.archivemeta=false /path/to/target 

此選項禁止的.hg_archival.txt產生,這有時會產生相對昂貴。

此外,hg update可以更快在當地,因爲不是所有的文件都被更新(只有那些相對於當前的修訂改變了的)。 hg clone -Uhg share -U之後的新更新應該不會更快。

您可以嘗試遞歸硬鏈接(通過cp -al或類似的工具),然後是hg update,但是必須格外小心,因爲在一次結帳中修改文件會影響另一個結賬中的文件。如果你想有一個只讀副本或者,如果你知道(如,肯定知道,不只是猜測),你不會做任何文件的任何就地修改這是唯一的選項。

+0

硬鏈接可能工作。我只是用它來做一個構建,然後刪除整個目錄後面的字,以防止意外修改。感謝您的建議! – mpen

相關問題