feat: add AWS media resource management
This commit is contained in:
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
limit_bytes="${GIT_MAX_FILE_SIZE_BYTES:-52428800}"
|
||||
limit_mb=$((limit_bytes / 1024 / 1024))
|
||||
failed=0
|
||||
|
||||
format_size() {
|
||||
local bytes="$1"
|
||||
awk -v bytes="$bytes" 'BEGIN {
|
||||
if (bytes >= 1073741824) {
|
||||
printf "%.1fGB", bytes / 1073741824
|
||||
} else if (bytes >= 1048576) {
|
||||
printf "%.1fMB", bytes / 1048576
|
||||
} else if (bytes >= 1024) {
|
||||
printf "%.1fKB", bytes / 1024
|
||||
} else {
|
||||
printf "%dB", bytes
|
||||
}
|
||||
}'
|
||||
}
|
||||
|
||||
while IFS= read -r -d '' path; do
|
||||
size="$(git cat-file -s ":$path" 2>/dev/null || printf '0')"
|
||||
if [ "$size" -gt "$limit_bytes" ]; then
|
||||
if [ "$failed" -eq 0 ]; then
|
||||
printf '\nLarge files are not allowed in git. Limit: %sMB\n\n' "$limit_mb" >&2
|
||||
fi
|
||||
printf ' %s %s\n' "$(format_size "$size")" "$path" >&2
|
||||
failed=1
|
||||
fi
|
||||
done < <(git diff --cached --name-only -z --diff-filter=ACMR)
|
||||
|
||||
if [ "$failed" -ne 0 ]; then
|
||||
cat >&2 <<'EOF'
|
||||
|
||||
Move large files to S3/CDN or local storage, then commit only the URL/metadata.
|
||||
To override the limit locally for one commit, set GIT_MAX_FILE_SIZE_BYTES, but avoid doing that for media/archive files.
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user