2012-12-15 63 views
3

git中每次提交的成本是多少?例如,如果我同時提交更改A和B而不是分別對每個提交提交,那麼使用多少(或更少)空間?git - 每次提交的代價

+1

你讀過http://eagain.net/articles/git-for-computer-scientists/?它給你一個Git對象模型的概念。 –

+0

您究竟需要如何量化?你的用例是什麼? –

回答

3

TLDR:我直觀地預測,如果沒有測試,實際使用情況的差異是最小的。如果你每天做數千次提交,也許你應該對此進行更多的分析。

我的思考過程:每個提交包含一個提交消息,樹和blob。請參閱Git for Computer Scientists以瞭解更多信息。將blob看作是一個文件的差異。總的來說,平均而言,我不希望在兩個blob而不是一個之間做出改變。所以你剩下的是一個額外的樹對象和一個額外的提交消息。 (一棵樹的對象是一個子目錄和文件名,告訴混帳哪裏應用斑點 - 的DIFF提交信息正是你認爲它是。)

所以把一些瞎猜它:

  • 樹對象可以是10至100個字節
  • 提交消息可以是10至200個字節

通過這些估計,20至300更多的字節翻倍手段〜。

(注:以上這種分析並不在磁盤分配因子,因此其可能是大錯特錯)

+0

不錯的鏈接,非常翔實! – darkfeline

2

新創建的對象通常是鬆散的對象。

爲每個鬆散物體在磁盤上佔用4K最小值。

一次提交至少包含一個提交對象,一個樹對象和一個blob對象。

如果允許爲空(無文件更改),那麼只有一個提交對象,但這不是經常使用的。

因此,12K是最小的!

+2

除了鬆散的物體有時會被打包,並且這些12k的最小值小於1k的實際數據。 –