簡體   English   中英

如何減少汞汞商店的規模。 汞存儲大小超過5GB,服務器在克隆前超時

[英]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. 備份!

步驟如下

重要提示:如果你的團隊,任何開發人員有什么地方之前,類似的變更尚未已經推至到位桶,但他們已經克隆了到位桶壞變更,那么你需要做更多的嫁接,一定要明白,必須一切在嘗試此操作之前完成。

  1. 確保您擁有良好的備份存儲庫的本地克隆,如果最終丟失了要保留在此過程中的變更集, 這對我(或堆棧溢出)不承擔任何責任。 特別要注意上面關於其他開發人員可能未按下的變更集的警告。
  2. 在本地克隆中,首先將在不良變更集之上提交的所有變更集都嫁接到直接位於其之前的變更集上。

    即。 如果歷史記錄如下所示:

     1---2---3---BAD---5---6---7 

    您希望在3之上嫁接5-7,以便以后擁有以下歷史記錄:

     1---2---3---BAD---5---6---7 \\ +--5---6---7 
  3. 然后使用以下命令刪除錯誤的變更集(及其后的所有內容):

     hg strip BAD `BAD` here is the number or hash of the bad changeset 
  4. 驗證本地一切都很好,然后轉到bitbucket.org
  5. 找到您的存儲庫,進入“設置”並找到“條帶變更集”部分
  6. 輸入不良變更集的哈希值 ,並要求bitbucket將其刪除
  7. 然后,從本地克隆中推送,以將嫁接的變更集重新帶回bitbucket
  8. 重要提示 :現在,您需要獲取已從bitbucket克隆的每個人,並且需要進行糟糕的變更集以廢棄其本地克隆並重新克隆。 這將降低存儲庫的新副本, 而不會造成錯誤的更改集。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM