我的水銀克隆已經變得非常慢,大概是由於磁盤碎片造成的。有沒有辦法優化它?我可以優化Mercurial克隆嗎?
製作新克隆,然後將我的MQ,保存的捆綁包,hgrc等複製到新克隆並刪除舊克隆的明顯方式。但似乎有人可能會遇到這個問題,並做了一個擴展來做到這一點?
我的水銀克隆已經變得非常慢,大概是由於磁盤碎片造成的。有沒有辦法優化它?我可以優化Mercurial克隆嗎?
製作新克隆,然後將我的MQ,保存的捆綁包,hgrc等複製到新克隆並刪除舊克隆的明顯方式。但似乎有人可能會遇到這個問題,並做了一個擴展來做到這一點?
關閉實時防病毒監控對repo克隆到的文件夾進行碎片整理。沒有什麼可以做的。
如果清單變得特別大,則可能導致性能下降。 Mercurial有另一種存儲庫格式 - generaldelta - 通常會導致更小的清單。
可以使用檢查清單的大小:
ls -lh .hg/store/*manifest*
從generaldelta獲得最大價值:
安裝的Mercurial 2.7.2或更高版本(2.7.2包括修復generaldelta中可能導致更大清單大小的錯誤 - 但很有可能您不會在早期版本中發現該錯誤)。
執行hg --config format.generaldelta=1 clone --pull orig orig.gd
。
這可能會在清單尺寸有所改善,但不是充分受益。
hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd
。克隆的克隆可以在清單大小方面提供更大的改進。這是因爲從一個generaldelta回購倉庫中抽取物品時會重新排序以優化清單尺寸。
作爲generaldelta的潛在好處的一個例子,我最近轉換了一個~55000 SVN提交(使用hgsubversion)加上~1000 Mercurial提交/合併/移植等的回購。原始回購中的清單是〜 1.4GB。第一個克隆中的清單是〜600MB。克隆克隆的清單是〜30MB。
關於generaldelta online的信息並不多 - 在可以成爲默認格式之前還有很多工作要做,但它對於許多項目來說效果很好。前幾個Google搜索結果中有一些來自何時推出的信息,最近有一些關於mercurial-dev郵件列表的討論。
+1即使是較小的~3400次提交的回購和一個小得多〜17MB的原始清單大小,兩個克隆也會將一些hg操作減少到原始時間的三分之一(最終清單爲11MB)。 –
從我所知道的Mercurial中,Mercurial應該沒有什麼能夠使它在分裂等方面變得緩慢。您是否試過在磁盤上運行正常的磁盤碎片整理程序?另外,哪種操作速度慢,速度有多慢等? –
hg qref是真的很慢的東西。花700秒的時間提交50秒的回購。我同意這不是一個特定於mercurial的問題(雖然我認爲mercurial訪問模式會加劇它),但是Mac沒有內置的碎片整理程序(AFAICT)。 –