【发布时间】:2023-02-16 18:03:53
【问题描述】:
我有一个 bash 脚本,用于检查要提交的文件是否符合大小限制。但是,当存在大量文件时,脚本可能需要很长时间才能完成,即使没有超过限制的文件也是如此。
这是原始脚本:
result=0
for file in $( git diff-index --ignore-submodules=all --cached --diff-filter=ACMRTUXB --name-only HEAD )
do
echo $file
if [[ -f "$file" ]]
then
file_size=$( git cat-file -s :"$file" )
if [ "$file_size" -gt "$max_allowed_packed_size" ]
then
echo File $file is $(( $file_size / 2**20 )) MB after compressing, which is larger than our configured limit of $(( $max_allowed_packed_size / 2**20 )) MB.
result=1
fi
fi
done
fi
exit $result
您有什么想法可以提高检查暂存文件的性能吗?
【问题讨论】:
-
由于这个原因,这可能很慢:
git cat-file为什么这样做而不是使用例如wc -c或stat?通常,这听起来像是解决不应该存在的问题的方法:为什么要这样做——大文件无意中被添加到存储库的用例是什么?
标签: bash git pre-commit-hook