天天看點

推特按照代碼行數來裁員?檢視自己在 Git 倉庫中貢獻的行數有多少

作者:成富Alex

#頭條創作挑戰賽#

據說推特是按照代碼行數來裁員的。怎麼才能知道自己到底貢獻了多少代碼呢?本文來告訴你。

絕大部分公司都使用 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 倉庫中貢獻的行數有多少

git-quick-stats 的選項

第一個選項是我們需要運作的。

運作的結果如下所示。

推特按照代碼行數來裁員?檢視自己在 Git 倉庫中貢獻的行數有多少

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 倉庫中貢獻的行數有多少

git-fame 輸出

git-fame 的問題在于執行起來非常慢。稍微大一點的 git 倉庫,執行就會卡住,很長時間都沒有結果。

繼續閱讀