2016-11-19 95 views
8

我怎樣才能犯的git log輸出顯示大小?顯示提交大小在git的日誌

你可以理解提交大小的,告訴你該有多大承諾是其父母和自己,或任何合理之間的差異。

git log--log-size選項,但日誌信息的大小,而不是承諾本身。

+0

可不可以給的提交和它的「大小」將是一個例子嗎?另外,你爲什麼需要這個? – Schwern

+0

@Schwern我認爲你已經在下面的答案中顯示了什麼是提交。我需要提交大小以快速確定每次提交中從一長串提交中完成了多少工作。這有助於確定重大變化。只要這個定義是合理的,我並沒有對其定義加以限制。 – Cyker

+0

「每次提交完成多少工作」是什麼意思?你使用這些信息的目的是什麼?我嗅到代碼指標的濫用。 – Schwern

回答

8

了「大小」提交意味着不同的事情。如果你指的是它佔用了多少磁盤存儲空間......那麼在Git中進行分析非常困難,而且可能是非生產性的。雖然像SVN商店這樣的提交作爲增量提交,但當您在Git中更改文件時,它將該文件的新副本作爲對象存儲在圖形數據庫中。一個對象可以在許多提交中共享。雖然這聽起來效率很低,但Git有許多聰明的方法可以高效地使用磁盤空間。

如果你的意思是很多行它是怎麼改變,這很容易。您可以使用各種標誌來獲取更改的文件和行數,其中大多數文本和行都包含單詞「stat」。例如,git log --shortstat會告訴您有多少文件已更改,以及插入和刪除了多少行。這是一個例子。

commit e3d1909c875ea0c1a64246d735affa039ad11aa0 (origin/master, origin/HEAD) 
Author: Michael G. Schwern <[email protected]> 
Date: Thu Aug 11 13:04:24 2016 -0700 

    Add default Travis and AppVeyor configs. 

    The AppVeyor one is set up for Dist::Zilla, the hardest of the bunch. 

2 files changed, 60 insertions(+) 

如果您希望提交代表磁盤存儲的想法,你需要得到新的文件(BLOB對象)提交創建,然後檢查其大小的ID。您可以在git log -p中看到它們。

commit 0f28d9a96bc92d802b57900ce4a06db71cbaef6d 
Author: Michael G. Schwern <[email protected]> 
Date: Wed Aug 10 09:13:40 2016 -0700 

    Remove my name from the gitconfig. 

    Now it can be used by anyone. Git will prompt for the user info. 

diff --git a/.gitconfig b/.gitconfig 
index 1d539bd..538440f 100644 
--- a/.gitconfig 
+++ b/.gitconfig 
@@ -1,18 +1,10 @@ 
-# If you use this file, remember to change the [user] and [sendemail] sections. 
- 
...and so on... 

index 1d539bd..538440f 100644表示該更換blob對象(文件)1d539bd與538440f和使用權限,0644如果您運行git cat-file -s 538440f它告訴我的對象是4356個字節。這就是它的未壓縮大小。磁盤上只有1849字節。

$ ls -l .git/objects/53/8440f84014584432fa5bf09d761926b3d70dbe 
-r--r--r-- 1 schwern staff 1849 Aug 10 09:14 .git/objects/53/8440f84014584432fa5bf09d761926b3d70dbe 

後,我git gc即使目標文件已經一去不復返了。現在一切都在使用小於10K的包文件中。

$ tree -h .git/objects/ 
.git/objects/ 
├── [ 102] info 
│   └── [ 54] packs 
└── [ 136] pack 
    ├── [1.9K] pack-d5b7110001ed35cce1aa0a380db762f39505b1c0.idx 
    └── [7.8K] pack-d5b7110001ed35cce1aa0a380db762f39505b1c0.pack 

This answer展示瞭如何在一個更加自動化的方式提交拿到斑點。

+2

我認爲統計數據是識別主要變更提交的好方法。但他們只是看起來乏味的輸出。任何機會,我們可以做一些計算與統計數據和漂亮的打印結果在線形式?例如,打印每個提交的校驗和,標題和一個數字(#lines_added + #lines_deleted)?沒有在git日誌格式佔位符中找到這樣的佔位符。我錯過了什麼嗎? – Cyker

相關問題