最終更新日 2025-07-22
Github 100MByte Limit Hook
概要
Git(ローカル)リポジトリに100MBを超えるファイルをコミットしようとした際に、自動的にエラーメッセージを表示し、コミットをキャンセルする拡張機能です。
この拡張機能は、該当するリポジトリのフォルダをVSCodeで開いた際に自動的に設定されます。
これにより、誤って100Mを超える巨大なファイルをコミットしてしまうことを防ぎ、
「Github(サーバー)へのプッシュ時に巨大ファイルをコミットしていたことに気づき一大事」といったことを解消できます。
インストール
動作環境
- Windows
- 他の環境での動作は未チェック
使い方
拡張機能をインストールするだけで利用可能となります。
挙動内容
とても単純で
- gitリポジトリなのかどうなのかの判定
「現在開いているフォルダ」の「直下」に「.git/config」というファイルがあるかどうかチェック - LFS (Github Large File Storage) リポジトリなのかどうなのかの判定
.git/hooks 以下に「post-checkout」「post-commit」「post-merge」「pre-push」の「4ファイル全て」が存在する場合は、何もしない - pre-commit が既に存在するかどうかの判定
すでに「pre-commit」ファイルが存在する場合は、何もしない - pre-commit が存在しない場合
以下の内容で「.git/hooks/pre-commit」というファイルを作成
#!/bin/sh
toplevel=$(git rev-parse --show-toplevel)
if [ -z "$toplevel" ]; then
exit 0
fi
if [ -f "$toplevel/.git/hooks/post-checkout" ] &&
[ -f "$toplevel/.git/hooks/post-commit" ] &&
[ -f "$toplevel/.git/hooks/post-merge" ] &&
[ -f "$toplevel/.git/hooks/pre-push" ]; then
exit 0
fi
limit=104857600 # 100MB in bytes
git diff --cached --name-only -z | while IFS= read -r -d $'\0' file; do
file_size=$(stat -c %s "$file" 2>/dev/null)
if [ -n "$file_size" ]; then
if [ "$file_size" -gt "$limit" ]; then
echo "Error: Cannot commit a file larger than 100 MB. Abort commit."
exit 1
fi
fi
done
これにより、該当のgitリポジトリは、コミットする前に、コミットファイル群中に「100M以上」のファイルがあれば全体をキャンセルします。
ただし、lfsリポジトリであると判断されると、この制限は適用されません。
マーケットプレイス
github100mbyteslimithook で公開されています。
ライセンス
MITライセンス
リポジトリ
github で公開されています。