为什么提交日志中的文件数量会上下跳转?

时间:2017-04-04 11:21:34

标签: git

我正在编写一个简单的脚本,它显示项目中每个提交中的文件数。

这是我用来获取原始数据的命令:

git ls-tree --name-only -r <commit_hash>

这是脚本从数据生成的输出的一部分:

id; timestamp; hash;                                    all; js; ts;
170;1490098977;c3e8d84ac06385ba6d1a9fac72d2d0293af47c2c;2659;460;1005;
171;1490098263;19b8c4539ac7501e48beee3e2f5364aeb1ee0b50;2659;460;1005;
172;1490098223;a5a44b560c498127a6adf0bd14aa88f4a47dded6;2659;460;1005;
173;1490097004;184f0c3e51d39f84f28588aaafb02418df0febb7;2730;763;761;
174;1490096803;cb7210b8d90bf4e2369b9462583addcbf59b7184;2730;763;761;
175;1490093177;4a0aa85f79fcfdf2630b5defd4a26304f83b895b;2658;460;1005;
176;1490093209;7d749f6b6f6b868e3bfbdce03cf4290309617144;2658;460;1005;
177;1490093197;83d02db47c118088378ab5bb20d828415b301f15;2658;460;1005;
178;1490092875;8afd49ecb48f430a1a6365a6107d65863493ef13;2658;460;1005;
179;1490090222;8606c74e1ef96d58a6c7d6dc904386e802f96b04;2730;763;761;

我使用此数据创建图表。

对我来说看起来很奇怪的是文件的数量,有时在某些提交中有很大不同。

因此,在提交178-175文件中(“所有”列)是2658,然后它跳到2730,然后下降到2659.除了js和ts列之外,数字会相应地改变。

它看起来不像开发人员实际对项目所做的事情 - 在一次提交中添加大约70个文件,然后在下一个提交中删除它们。

它可以与git逻辑相关吗?如何解释这种行为? 在大约40000次提交中,这种情况经常发生,这让我觉得git是如何工作的,但我不明白它为什么会发生。

更新

以下是我用来获取输出的逻辑:

将所有提交哈希作为字符串列表获取:

git log --pretty=format:%H

然后我将哪个输出分成字符串并放入数组

[
    'c3e8d84ac06385ba6d1a9fac72d2d0293af47c2c',
    '19b8c4539ac7501e48beee3e2f5364aeb1ee0b50',
    ...
]

为每次提交获取文件: 我得到了数组然后通过它然后为每个

运行下面的命令
git ls-tree --name-only -r <commitHash>

这会返回一个列表,列出了当时repo中创建的所有文件:

file1.js
file2.js
folder1/file3.js
folder2/file4.png
...

获取每次提交的文件数量:

现在我按换行分割这个输出并放入一个新数组,它的长度是我需要的文件总数。

此外,我通过一个函数处理此输出,该函数查找字符串的某些特定结尾,如“.js”,并将这些文件的数组作为字符串获取,并通过获取其长度,我知道具有特定文件的文件数文件扩展名。

0 个答案:

没有答案