如何让'git shortlog --summary'使用作者日期而不是提交日期?

bvhaajcl  于 2022-12-21  发布在  Git
关注(0)|答案(2)|浏览(155)

我们在年终回顾和统计中广泛使用git shortlog --summary --after='2022-01-01 00' --before='2022-12-31'

$ git shortlog --summary --after='2022-01-01 00' --before='2022-12-31'`
   300  John
    90  Jane
    30  Jack
$ git shortlog --summary --after='2021-01-01 00' --before='2021-12-31'`
   (empty)

不幸的是,数据是错误的。
在2022年,约翰没有提交,简有大约20次,约翰和杰克在2021年各有大约10次提交。
我们追踪到2022年的历史重写,git shortlog --summary使用了提交的commit-date(现在很多都显示2022年)。
有没有办法让git shortlog --sumary使用提交author-date
我们已经搜索了git-loggit-shortlog手册页,但没有找到...

cunj1qz1

cunj1qz11#

您现在可以尝试使用Git 2.39

  • --group选项以使用任何分组参数
  • 并且由于

git shortlog”学会了按“format”字符串分组
你可以得到类似于(TBT!!!)git shortlog --date='format:%Y' --group='%ad' -s的东西

7d7tgy0s

7d7tgy0s2#

谢谢你“懒獾”给我们指出了正确的方向。
简而言之,正如this answer中所指定的,它没有命令行参数。
但是,git(v2.39)有另一个选项可以使用。

$ git shortlog --date='format:%Y' --group='format:%ad %aN <%aE>' --summary
   111  2018 John <*>
     2  2018 Jack <*>
   134  2019 John <*>
    22  2019 Jack <*>
    95  2020 John <*>
    13  2020 Jack <*>
     1  2020 Jane <*>
    65  2021 John <*>
    36  2021 Jack <*>
    15  2021 Jane <*>
    24  2022 Jack <*>
    20  2022 Jane <*>
     4  2022 Joel <*>

其中%ad是指定日期格式的作者日期,%aN是关于.mailmap的作者,%aE是关于.mailmap的电子邮件。(查看git-log手册页的PRETTY FORMATS部分)
到目前为止,数据似乎是正确的。
当然,--after--before仍在处理提交日期数据集,因此在我们的情况下不可用。
如何按日期进行分组仍然是未知的。(你甚至如何找到一个2000多行的手册页...)
此时git devs只需要发出一个命令,将历史记录转储为sqlite3 db,以便用于数据管理。
这是一个额外要求的测试。

$ git shortlog --date='format:%Y' --group='format:%ad' --group=author  --summary
   113  2018
   156  2019
   109  2020
   116  2021
    48  2022
   405  John
    97  Jack
    36  Jane
     4  Joel

相关问题