2015-11-07 79 views
2

在垃圾收集期間,git能否生成線性增量歷史記錄?垃圾回收期間可以做git線性提交delta嗎?

a previous question我瞭解到,在垃圾收集過程中,git重新包裝並存儲了deltas,而不是gc之前的完整版本。我使用這種方式來保存mysqldump作爲備份,並免費獲取歷史記錄和數據壓縮。

現在我的問題是,現在有很多歷史(每天一次,幾個月),每次都會發生。git gc git將重寫整個增量歷史記錄(更改文件系統上的所有數據),並且這使異地同步傳輸所有的數據。我希望我的rsyncs只需要傳輸新的delta。

換句話說,有沒有辦法讓git只重新包裝尚未包裝的東西?

+1

你可以使用git來傳輸文件,而不是使用rsync--它的目的就是*完全是這個*。 –

+0

這是一個解決方案,但我討厭在rsync之外添加其他步驟來傳輸備份。我只希望它可以工作。也許我應該只使用另一個rcs。 – Shovas

回答

0

所請求的功能:

...有沒有辦法讓git的只重新包裝什麼尚未包裝?

git repack確實匹配。從the git-repack reference

此命令用於將當前未駐留在「包」中的所有對象合併到一個包中。

運行時沒有任何選項,它將打包所有鬆散(未打包)的對象,但將它們留在磁盤上。這可以通過-d選項進行更改:

打包後,如果新創建的包使某些現有包冗餘,請刪除冗餘包。 也運行git prune-packed來移除多餘的鬆散對象文件。

或者git prune-packed可以手動運行。