【发布时间】:2016-05-25 23:22:20
【问题描述】:
我有 answered this question,建议使用 git hooks,但坦率地说,我对第二部分并不完全满意,因为创建一个临时文件只是为了获取提交的大小看起来既多余又丑陋。有没有办法直接获取大小?假设标准 git 实现。
正如@Cyrus 所建议的,git diff --cached | wc -c 是一个很好的近似值,但它依赖于编码。
我也尝试过进程替换 ls -l <(git diff --cached) | awk '{print $5}' 但返回 0。
编辑:基于@torek's answer我想出了这两个解决方案:
git ls-files --stage | cut -d' ' -f2 | xargs -L 1 git cat-file -s | awk '{s+=$1} END {print s}'
git diff --cached | awk -F. '/index/ {print $3}' | xargs -L 1 git cat-file -s | awk '{s+=$1} END {print s}'
后者也处理新文件。
【问题讨论】:
-
git diff --cached | wc -c? -
我想这是一个很好的近似值,但它依赖于编码。我也尝试过处理 sub
ls -l <(git diff --cached) | awk '{print $5}'但返回 0