Article banner

GitHub 中的 diffstat 所代表的含义?

解释下 GitHub 中的 diffstat 柱状图的含义

January 13, 2022

diffstat 是什么?

在 GitHub 中 diffstat 会以 5 个方块组成的柱状图(diffstat histogram)的形式展示,如封面图中的 ■■■■■

在 Git 中的 diffstat 则是以 ++++--- 来展示。

可以通过指令 git diff --stat 来查看。

diffstat 是怎么计算出来的?

约定以下 3 个名词:

  • changes: 文件变更的总行数
  • additions: 文件变更中增加的行数
  • deletions: 文件变更减少的行数

以及控制台输出时默认的柱状图最大宽度 80 下文以 columns 代替。

那么计算过程的伪代码如下

if changes > columns
  adjust = columns / changes
else
  adjust = 1
end

# + 字符数量,仅取整数部分
addition_char_count = floor(additions * adjust)

# - 字符数量,仅取整数部分
deletion_char_count = floor(deletions * adjust)

12 changes, 8 additions, 4 deletions 为例,可以得到结果为 ++++++++----

但如果将 12 changes, 8 additions, 4 deletionscolumns 设置为 5 呢?

这样上述公式中的 adjust 则会变为 0.417,经计算得 additions3deletions1,即可得到 ■■■,为了保持 5 个方块的长度,将缺少部分用灰色补充,就可以得到 GitHub 样式的 diffstat 柱状图 ■■■

相关资料


走走游游

走走游游

普通上班族、法拉利车主、枯燥。