【问题标题】:Finding commits that were reverted by an author查找作者还原的提交
【发布时间】:2018-06-24 11:16:56
【问题描述】:

该主题主要涵盖它,但为了避免任何歧义 - 我有兴趣审核特定开发人员恢复提交的频率(谁执行恢复无关紧要)。我似乎找不到任何搜索内容(我的 google-fu 在这里失败了)。

例如,考虑这个提交历史:

* 76b203f "gddc" 37 seconds ago (HEAD -> master)
| Revert "file 1 added"
* 6da3eea "gddc" 52 seconds ago
| file2 added
* c940460 "gddc" 61 seconds ago
  file 1 added

一目了然,我在这里恢复了提交 1,但我想要一种编程方式来针对任何作者的任何存储库审核它。

【问题讨论】:

    标签: git audit git-revert author


    【解决方案1】:

    请务必注意,git 不会记录任何类型的元数据,即“此提交恢复该提交”。虽然git建议 一条默认提交消息,上面写着“This reverts commit ...”,但没有什么能阻止某人更改该消息。只要您确信人们正在维护默认消息,您就可以找到执行类似操作的还原提交...

    git log --grep reverts
    

    这会给你这样的输出:

    commit 563a99c7bd36998afb7a1957eaf29b0966402a77 (HEAD -> master)
    Author: Example User <user@example.com>
    Date:   Mon Jan 15 14:35:36 2018 -0500
    
        Revert "first"
    
        This reverts commit 131e6f65c9a78c5476921b6c2f8632661a2d71b6.
    

    您需要生成一个已还原提交 ID 的列表。您可以将该输出通过管道传输到 awk,如下所示:

    git log --grep reverts | awk '/This reverts commit/ {print $4}' | cut -f1 -d.
    

    它会为您提供提交 ID 列表:

    131e6f65c9a78c5476921b6c2f8632661a2d71b6
    

    您可以将该列表输入xargs 以查找有关原始提交的信息,例如:

    git log --grep reverts | 
      awk '/This reverts commit/ {print $4}' | cut -f1 -d. |
      xargs -iCID git show --quiet --format='%ae' CID
    

    上面使用%ae从每个reverted commit中提取作者电子邮件,例如:

    new_dev@example.com
    

    您可以将参数修改为--format 以输出有关原始提交的其他信息。

    这是否为您指明了正确的方向?

    【讨论】:

    • 是的,这是一个很好的起点!谢谢!令我惊讶的是,在还原提交时没有保存元数据——这似乎很有价值。无论如何,我认为这给了我一个很好的起点。非常感谢!
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2011-12-19
    • 2021-12-26
    相关资源
    最近更新 更多