Skip to content

Latest commit

 

History

History
91 lines (60 loc) · 3.07 KB

File metadata and controls

91 lines (60 loc) · 3.07 KB

Github 100MByte Limit Hook v1.3.5 MIT License Windows 10|11

Github 100MByte Limit Hook

Git(ローカル)リポジトリに100MBを超えるファイルをコミットしようとした際に、自動的にエラーメッセージを表示し、コミットをキャンセルする拡張機能です。

この拡張機能は、該当するリポジトリのフォルダをVSCodeで開いた際に自動的に設定されます。
これにより、誤って100Mを超える巨大なファイルをコミットしてしまうことを防ぎ、
「Github(サーバー)へのプッシュ時に巨大ファイルをコミットしていたことに気づき一大事」といったことを事前に防止できます。

動作環境

  • MS-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
for file in $(git diff --cached --name-only); do
    file_size=$(stat -c %s "$file")
    if [ $file_size -gt $limit ]; then
        echo "Error: Cannot commit a file larger than 100 MB. Abort commit."
        exit 1
    fi
done

マーケットプレイス

github100mbyteslimithook で公開されています。

Change Log

1.3.5

説明文の修正

1.3.4

pre-commitファイルについて、「カレントディレクトリ」が「リポジトリのルート」でなくても機能するように対応

1.3.3

リポジトリのアドレスの変更

1.3.2

アイコン作成

1.2.0

Readme.mdで改行されていなかっため改修

1.1.0

マーケットプレイスへの公開版

1.1.0

試験的な初版