#頭條創作挑戰賽#
據說推特是按照代碼行數來裁員的。怎麼才能知道自己到底貢獻了多少代碼呢?本文來告訴你。
絕大部分公司都使用 git 來管理源代碼。git 的 commit 是以行為機關的。每個 commit 可以看到添加或删除的行。通過計算全部 commit 中添加或删除的行的數量,就可以看出一個人在代碼倉庫中的貢獻有多少。
第一步,檢視自己在 git 倉庫中的貢獻。
通過 git log 指令就可以檢視。隻需要複制粘貼這條指令,把 <郵件位址> 替換成自己在 git 倉庫中使用的位址,運作之後就可以看到輸出的結果了。
git log --author="<郵件位址>" --no-merges --no-show-signature --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "添加的行數: %s, 删除的行數: %s, 總行數: %s\n", add, subs, loc }' -
輸出的結果類似下面這樣的:
添加的行數: 38070, 删除的行數: 68072, 總行數: -30002
第二步,檢視公司所有人在 git 倉庫中的貢獻。
這一步是确定自己在貢獻排行中的位置,同樣的複制粘貼腳本再運作。
git log --no-merges --no-show-signature --pretty=format:%an --numstat | awk '/./ && !author { author = $0; next } author { ins[author] += $1; del[author] += $2 } /^$/ { author = ""; next } END { for (a in ins) { printf "%10d %10d %10d %s\n", ins[a] - del[a], ins[a], del[a], a } }' | sort -rn
輸出的結果會按照總行數來進行排序。結果一共有 4 列,分别是總行數、添加的行數、删除的行數和名字。
下面是 Spring 架構的貢獻者的排行榜的一部分:
645708 732238 86530 Arjen Poutsma
241568 472056 230488 Rossen Stoyanchev
84111 113974 29863 Thomas Risberg
82777 111029 28252 Stephane Nicoll
68131 270734 202603 Chris Beams
67341 226088 158747 Sam Brannen
67258 91641 24383 Sebastien Deleuze
40399 121776 81377 Andy Clement
35374 136229 100855 Brian Clozel
24461 229173 204712 Phillip Webb
19649 70753 51104 Keith Donald
18111 18430 319 Mark Paluch
12734 21256 8522 rstoyanchev
8837 12209 3372 Sébastien Deleuze
7472 21998 14526 Mark Pollack
6847 8155 1308 Mark Fisher
5005 9039 4034 David Syer
4895 6243 1348 Oliver Gierke
4323 4988 665 sdeleuze
4193 5355 1162 Violeta Georgieva
3916 16517 12601 Costin Leau
3385 3876 491 Scott Andrews
3265 3457 192 Ramnivas Laddad
2983 19080 16097 Jay Bryant
上面說到的做法都需要執行腳本。有沒有更加容易的做法呢?可以用工具。
這裡介紹兩個工具。第一個是 git-quick-stats。使用 Homebrew 就可以安裝。
brew install git-quick-stats
git-quick-stats 提供的功能很多,如下圖所示。
git-quick-stats 的選項
第一個選項是我們需要運作的。
運作的結果如下所示。
git-quick-stats 的運作結果
git-quick-stats 所提供的結果是比較詳細的,但是沒有按照貢獻值排序。
第二個工具是 git-fame, 使用 Ruby開發,可以通過 gem 安裝。GitHub位址是 oleander/git-fame-rb。
gem install git_fame
安裝了之後,運作下面的指令就可以檢視結果。
git fame <git 目錄>
git-fame 的輸出會更加美觀一點。
git-fame 輸出
git-fame 的問題在于執行起來非常慢。稍微大一點的 git 倉庫,執行就會卡住,很長時間都沒有結果。