2015-09-14 259 views
1

我正在嘗試跟蹤我正在處理的項目的大小。有沒有一種簡單的方法可以在磁盤上爲不同的分支獲取回購大小。我試過獲取git分支大小?

git count-objects -v 

但它給出了每個分支相同的回購大小。

+0

別的地方有人建議建立一個「捆綁」只有你需要看看它的大小事情。這可能是你在找什麼的一個很好的近似:'混帳束創建 &&杜-sh '。它確實包含了打包和壓縮,但不包括使用歷史記錄(引用,索引文件,配置等)所需的存儲庫大小。 – fork0

回答

3

這個問題並沒有真正意義 - 在Git中,分公司不單獨存放。相反,有一個提交網頁,基本上只是存儲差異。分支只是指向這個提交網絡中特定提交的指針。所以一般來說,分支機構分享很多相同的信息。

如果您想知道單個分支的磁盤空間大小,意思是如果只克隆只有該分支的repo,需要的磁盤空間最少,最簡單的方法就是製作回購就像那樣,然後詢問回購的規模。

+0

我同意你想說的話。我知道git是如何工作的。我想要做的是隨着時間的推移增加磁盤大小的使用量。 – avellable

+0

嗯,我想我明白了。也許你可以嘗試類似的方法,克隆repo,然後刪除一個分支,然後運行'git gc --aggressive'來清理懸掛的節點,然後檢查磁盤使用情況? –

+1

很好的答案。有一件事,雖然;你寫道:* [...]基本上只是差異存儲*。除非你指的是包裝,否則這種說法是不正確的。 – Jubobs

1

這裏的東西真醜:

$ git rev-list HEAD |      # list commits 
    xargs -n1 git ls-tree -rl |    # expand their trees 
    sed -e 's/[^ ]* [^ ]* \(.*\)\t.*/\1/' | # keep only sha-1 and size 
    sort -u |        # eliminate duplicates 
    awk '{ sum += $2 } END { print sum }' # add up the sizes in bytes 

這隻會算斑點(不承諾,樹木等),並不會佔到任何包裝或跨部門對象共享。但它可以作爲有用的基礎。

+0

使用'git的轉速名單--objects主| git的貓文件--batch檢查=「%(對象大小)%(OBJECTTYPE)%(對象名)%(其餘的)」'來獲得其使用的所有對象的尺寸創建分支的歷史(或實際上歷史圖的任何定義)。它仍不考慮增量壓縮或壓縮,但提供了需要多少空間來存儲存儲庫的所有唯一數據的準確信息。 – fork0

+0

它是以字節爲單位嗎? – mr5

+0

@ mr5評論說:'#將字節大小加起來。所以是的,我認爲這是:D –