如何在git仓库中找到N个最大的文件? [英] How to find the N largest files in a git repository?

查看:91
本文介绍了如何在git仓库中找到N个最大的文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的资料库中找到10个最大的文件。我提出的脚本如下:

  REP_HOME_DIR =<顶级git目录> 
max_huge_files = 10

cd $ {REP_HOME_DIR}
git verify-pack -v $ {REP_HOME_DIR} / .git / objects / pack / pack - *。idx | \
grep blob | \
sort -r -k 3 -n | \
头 - $ {max_huge_files} | \
awk'{system(printf \% - 80s \`git rev-list --objects --all | grep$ 1| cut -d\\-f2 `); printf大小:%5d MB文件大小:%5d MB \ n,$ 3/1048576,$ 4/1048576; }'
cd -

有没有更好的/更优雅的方法来做同样的事情?

文件是指已经检入存储库的文件。

解决方案

我找到了另一种方式来做到这一点:


  git ls-tree -r -t -l  - 完整名称HEAD | sort -n -k 4 | tail -n 10 


引用自: SO:git find fat commit


I wanted to find the 10 largest files in my repository. The script I came up with is as follows:

REP_HOME_DIR=<top level git directory>
max_huge_files=10

cd ${REP_HOME_DIR}
git verify-pack -v ${REP_HOME_DIR}/.git/objects/pack/pack-*.idx | \
  grep blob | \
  sort -r -k 3 -n | \
  head -${max_huge_files} | \
  awk '{ system("printf \"%-80s \" `git rev-list --objects --all | grep " $1 " | cut -d\" \" -f2`"); printf "Size:%5d MB Size in pack file:%5d MB\n", $3/1048576,  $4/1048576; }'
cd -

Is there a better/more elegant way to do the same?

By "files" I mean the files that have been checked into the repository.

解决方案

I found another way to do it:

git ls-tree -r -t -l --full-name HEAD | sort -n -k 4 | tail -n 10

Quoted from: SO: git find fat commit

这篇关于如何在git仓库中找到N个最大的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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