推特按照代码行数来裁员?赶快看一下自己在 Git 仓库中的贡献有多少

据说推特是按照代码行数来裁员的。怎么才能知道自己到底贡献了多少代码呢?本文来告诉你。

绝大部分公司都使用 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 安装。

gem install git_fame

安装了之后,运行下面的命令就可以查看结果。

git fame <git 目录>

git-fame 的输出会更加美观一点。

git-fame

git-fame 的问题在于执行起来非常慢。稍微大一点的 git 仓库,执行就会卡住,很长时间都没有结果。

版权所有 © 2024 灵动代码