我在 git 中有一些文件夹,里面有不同的文件(例如小图像)。图像的每次更改/插入都永远存储在 git 历史记录中。如果该文件夹增长太多,例如它将超过 50mb,则可能会给该 git 存储库的所有用户带来一些问题。
由于某些原因,我不能使用,git-lfs因为它会产生很大的问题。
所以问题是:如何计算历史记录中所有提交中选定目录中所有文件的大小?或者一些想法如何实现它?
作为@Mehrdad在提到答案的混帐回购协议的查找大小,下面的命令可以用来寻找混帐回购协议的大小:
git rev-list --objects --all | git cat-file --batch-check="%(objectsize) %(rest)" | cut -d" " -f1 | paste -s -d + - | bc
Run Code Online (Sandbox Code Playgroud)
rev-list将路径作为参数。因此,要foo/bar在 git repo(跨所有提交)中查找目录(例如:)的大小,您可以运行:
git rev-list --objects --all -- foo/bar | git cat-file --batch-check="%(objectsize) %(rest)" | cut -d" " -f1 | paste -s -d + - | bc
Run Code Online (Sandbox Code Playgroud)
然而,这将以字节为单位返回大小。您可以将输出通过管道传输到numfmtutil 以获得更易读的格式。
git rev-list --objects --all -- <relative-path-to-directory> | git cat-file --batch-check="%(objectsize) %(rest)" | cut -d" " -f1 | paste -s -d + - | bc | numfmt --to=si
Run Code Online (Sandbox Code Playgroud)
注意: --all包括所有修订,您可以指定分支或标签名称。
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |