Git,找出哪些文件的提交次数最多 [英] Git, find out which files have had the most commits

查看:206
本文介绍了Git,找出哪些文件的提交次数最多的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何搜索我的git日志以查看哪些文件具有最多的活动?

解决方案

哈!这是非常简单的事情之一,意外(?):

git rev-list --objects --all | awk'$ 2'| sort -k2 | uniq -cf1 | sort -rn | head




  1. 给我所有分支中所有修订版的所有对象

  2. 忽略没有路径的任何结果
  3. 按路径对它们进行排序
  4. 使它们唯一(忽略blob散列),包含重复计数的前缀行
  5. 按重复计数降序排列

  6. 显示最上面一行

输出类似于

  1058 fffcba193374a85fd6a3490f800c6901218a950b src 
715 ffffe0f08798e95b66cc4ad4ff22cf10734d045e src / lib
450 ffcfe596031a5985664e35937fff4ac9ff38dcca SRC / ZFS熔丝
367 ffc5d5340f95360fc9f7b739c5593dd3f92fced0 SRC / LIB / libzpool
202 ff92db000792044d45eec21c57a3cd21618631e7 SRC / LIB / libsolkerncompat
183 ff1a44edae3fd121ddd86864b589e5ab2f9ff99b SRC / LIB / libzfscommon
178 fec6b3a789e578983c2242b3aa5adf217cb8b887 SRC / lib中/ libzfs
168 ffeefc9e81222d7c471bdb0911d8b98f23cff050 src / cmd
167 fbd60bd34307 65863648c52db7ceb3ffa15d5e50 src / lib / libzfscommon / include
155 ff225f6b41f9557d683079c5f9276f497bcb06bd src / lib / libzfscommon / include / sys



<你可以从这里拿走它。


如果您只想查看文件blobs


$ b

  git rev-列表--objects --all | awk'$ 2'| sort -k2 | uniq -cf1 | sort -rn | 
,而读取频率样本路径
do
[blob==$(git cat-file -t $ sample)]&& echo -e$ frequency \t $ path;
完成

输出

  135 src / zfs-fuse / zfs_operations.c 
84 src / zfs-fuse / zfs_ioctl.c
79 src / zfs- fuse / zfs_vnops.c
73 src / lib / libzfs / libzfs_dataset.c
67 src / lib / libzpool / spa.c
66 src / zfs-fuse / zfs_vfsops.c
62 src / cmd / zdb / zdb.c
62更改
60 src / cmd / ztest / ztest.c
60 src / lib / libzpool / arc.c



您只能看到修订版的特定范围



您可以 rev-list 部分有一个球:

  git rev-list --after = 2011-01-01 --until ='two weeks ago'\ 
tag1 ... remote / hotfix ^ master

将仅使用指定日期范围内的修订,即 tag1 远程/修复程序并且在主服务器中 not

How can I search my git logs to see which files have had the most activity?

解决方案

Ha! that's one of these things that is very easy, accidentally (?):

git rev-list --objects --all | awk '$2' | sort -k2 | uniq -cf1 | sort -rn | head

  1. give me all objects from all revisions in all branches
  2. ignore any results without a path
  3. sort them by path
  4. make them unique (ignoring the blob hash), prefix lines with duplication count
  5. sort descending on duplication count
  6. show topmost lines

Output similar to

   1058 fffcba193374a85fd6a3490f800c6901218a950b src
    715 ffffe0f08798e95b66cc4ad4ff22cf10734d045e src/lib
    450 ffcfe596031a5985664e35937fff4ac9ff38dcca src/zfs-fuse
    367 ffc5d5340f95360fc9f7b739c5593dd3f92fced0 src/lib/libzpool
    202 ff92db000792044d45eec21c57a3cd21618631e7 src/lib/libsolkerncompat
    183 ff1a44edae3fd121ddd86864b589e5ab2f9ff99b src/lib/libzfscommon
    178 fec6b3a789e578983c2242b3aa5adf217cb8b887 src/lib/libzfs
    168 ffeefc9e81222d7c471bdb0911d8b98f23cff050 src/cmd
    167 fbd60bd3430765863648c52db7ceb3ffa15d5e50 src/lib/libzfscommon/include
    155 ff225f6b41f9557d683079c5f9276f497bcb06bd src/lib/libzfscommon/include/sys

You can take it from here.

E.g. if you wanted to see only file blobs:

git rev-list --objects --all | awk '$2' | sort -k2 | uniq -cf1 | sort -rn |
    while read frequency sample path
    do 
       [ "blob" == "$(git cat-file -t $sample)" ] && echo -e "$frequency\t$path";
    done

output:

135 src/zfs-fuse/zfs_operations.c
84  src/zfs-fuse/zfs_ioctl.c
79  src/zfs-fuse/zfs_vnops.c
73  src/lib/libzfs/libzfs_dataset.c
67  src/lib/libzpool/spa.c
66  src/zfs-fuse/zfs_vfsops.c
62  src/cmd/zdb/zdb.c
62  CHANGES
60  src/cmd/ztest/ztest.c
60  src/lib/libzpool/arc.c

You wanted to see only specifc range of revisions

You can have a ball with the rev-list part:

git rev-list --after=2011-01-01 --until='two weeks ago' \
     tag1...remote/hotfix ^master

Will use only revisions in the specified date range, that are in the symmetric set difference for tag1 and remote/hotfix and are not in master

这篇关于Git,找出哪些文件的提交次数最多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆