[英]How to reduce the size of Mercurial hg store. Hg store size is above 5GB and server gets timeout before cloning
我不小心將大約5GB的文件簽入了Mercurial。 在回購克隆期間,我們的構建服務器開始出現故障。 因此,我們使用“刪除”命令還原了簽入的文件。 但是.hg / store / data仍然包含那些文件。 它的大小超過5GB。 我們通過互聯網進行搜索,發現了一些方法,例如:hg convert。 但是hg convert正在創建新的倉庫,在我們的例子中是不希望的。 同樣,我們無法延長構建服務器的超時期限。
我們如何才能完全刪除錯誤的簽入而不將其存儲在.hg / store / data中? 或如何減少.hg / store / data的大小?
這是您需要做的:您需要剝離那些變更集。
由於您的存儲庫托管在Bitbucket上,因此您沒有直接訪問文件的權限,因此您需要使用網站提供的內容。
在您的存儲庫項目中,在“設置”下有一個用於剝離變更集的部分。
請注意,這還將刪除在錯誤變更集之上提交的所有變更集。 我們將處理。
我會強調這一點:
步驟如下
重要提示:如果你的團隊,任何開發人員有什么地方之前,類似的變更尚未已經推至到位桶,但他們已經克隆了到位桶壞變更,那么你需要做更多的嫁接,一定要明白,必須一切在嘗試此操作之前完成。
在本地克隆中,首先將在不良變更集之上提交的所有變更集都嫁接到直接位於其之前的變更集上。
即。 如果歷史記錄如下所示:
1---2---3---BAD---5---6---7
您希望在3之上嫁接5-7,以便以后擁有以下歷史記錄:
1---2---3---BAD---5---6---7 \\ +--5---6---7
然后使用以下命令刪除錯誤的變更集(及其后的所有內容):
hg strip BAD `BAD` here is the number or hash of the bad changeset
hg clone
的-r
選項允許在特定修訂版之后創建沒有更改集的存儲庫。
因此,您可以執行以下操作(假設LAST_GOOD_CHANGESET
是錯誤提交之前的更改集):
hg clone -r LAST_GOOD_CHANGESET repo repo.1
mv repo repo.bak
mv repo.1 repo
但是請注意,這將在您提交錯誤的提交之后刪除所有提交,因此您將必須重播重要的提交(即,排除嘗試修復錯誤的提交)。
此外,如果有分支,則必須將它們作為hg clone
附加-r
參數列出,否則它們也會從清理的存儲庫中刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.