本文介绍了Git,找出哪些文件的提交次数最多的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何搜索我的git日志以查看哪些文件具有最多的活动?
解决方案
哈!这是非常简单的事情之一,意外(?):
git rev-list --objects --all | awk'$ 2'| sort -k2 | uniq -cf1 | sort -rn | head
- 给我所有分支中所有修订版的所有对象
- 忽略没有路径的任何结果
- 按路径对它们进行排序
- 使它们唯一(忽略blob散列),包含重复计数的前缀行
- 按重复计数降序排列
- 显示最上面一行
输出类似于
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
give me all objects from all revisions in all branches
ignore any results without a path
sort them by path
make them unique (ignoring the blob hash), prefix lines with duplication count
sort descending on duplication count
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,找出哪些文件的提交次数最多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!