Merge pull request #405 from cubxxw/feat/githook

pull/408/head
Xinwei Xiong 2 years ago committed by GitHub
commit bbccc71da5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -67,6 +67,6 @@ test "" = "$(grep '^Signed-off-by: ' "$1" |
if [ $? -ne 0 ] if [ $? -ne 0 ]
then then
printError "Please fix your commit message to match OpenIM coding standards" printError "Please fix your commit message to match OpenIM coding standards"
printError "https://OpenIM.gitbook.io/docs/essential-documentation/contribute-to-OpenIM/software-contributions/submitting-code/code-submission-guidelines#commit-message-guidelines" printError "https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694"
exit 1 exit 1
fi fi

@ -46,7 +46,9 @@ printMessage "Running local OpenIM pre-commit hook."
# flutter format . # flutter format .
# https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694 # https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694
# TODO! GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB" # TODO! GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB"
limit=$(( 2 * 2**20 )) # 2MB # Maximum file size limit in bytes
limit=${GIT_FILE_SIZE_LIMIT:-2000000} # Default 2MB
limitInMB=$(( $limit / 1000000 ))
function file_too_large(){ function file_too_large(){
filename=$0 filename=$0
@ -57,22 +59,41 @@ function file_too_large(){
File $filename is $filesize MB, which is larger than github's maximum File $filename is $filesize MB, which is larger than github's maximum
file size (2 MB). We will not be able to push this file to GitHub. file size (2 MB). We will not be able to push this file to GitHub.
Commit aborted Commit aborted
HEREDOC HEREDOC
git status
} }
# Move to the repo root so git files paths make sense
repo_root=$( git rev-parse --show-toplevel )
cd $repo_root
empty_tree=$( git hash-object -t tree /dev/null ) empty_tree=$( git hash-object -t tree /dev/null )
if git rev-parse --verify HEAD > /dev/null 2>&1 if git rev-parse --verify HEAD > /dev/null 2>&1
then then
against=HEAD against=HEAD
else else
against=empty_tree against="$empty_tree"
fi fi
# Set split so that for loop below can handle spaces in file names by splitting on line breaks
IFS='
'
shouldFail=false
for file in $( git diff-index --cached --name-only $against ); do for file in $( git diff-index --cached --name-only $against ); do
file_size=$( ls -la $file | awk '{ print $5 }') file_size=$(([ ! -f $file ] && echo 0) || (ls -la $file | awk '{ print $5 }'))
if [ "$file_size" -gt "$limit" ]; then if [ "$file_size" -gt "$limit" ]; then
file_too_large $filename $file_size printError "File $file is $(( $file_size / 10**6 )) MB, which is larger than our configured limit of $limitInMB MB"
exit 1; shouldFail=true
fi fi
done done
if $shouldFail
then
printMessage "If you really need to commit this file, you can override the size limit by setting the GIT_FILE_SIZE_LIMIT environment variable, e.g. GIT_FILE_SIZE_LIMIT=42000000 for 42MB. Or, commit with the --no-verify switch to skip the check entirely."
printError "Commit aborted"
exit 1;
fi
Loading…
Cancel
Save