0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHubの100MB制限はpre-commitのさらにcheck-added-large-filesを使おう。

Last updated at Posted at 2024-08-21

あっ、いつの間にかGitHubの容量制限に!!

…のようなケアレスミス憤死を防ぐための転ばぬ先の杖的なスクリプトを用意しました。が、調査が足りず作る必要のない実装してしまい、いわゆる車輪の再発明をしていました。

車輪の再発明

私はよくUnityを使うので100MBを超えるFBXファイルだのメディアファイルだのをコミットしてよくリポジトリを詰まらせています。なので事故防止に自分用のスクリプトを作りました。が、これは必要ありません。

pre-commit
#!/bin/bash

MAX_SIZE=$((100 * 1024 * 1024)) # 100MB in bytes
all_files_ok=true

lfs_files=$(git lfs ls-files -n)

for file in $(git diff --cached --name-only)
do
    if [ -f "$file" ]; then
        if echo "$lfs_files" | grep -q "^$file$"; then
            echo "Info: $file is managed by LFS. Skipping size check."
            continue
        fi

        file_size=$(stat -c%s "$file")
        if [ "$file_size" -gt "$MAX_SIZE" ]; then
            echo "Error: $file is larger than 100MB ($(du -h "$file" | cut -f1))."
            all_files_ok=false
        fi
    fi
done

if [ "$all_files_ok" = false ]; then
    exit 1
fi

exit 0

これが車輪の再発明です。
check-added-large-filesを使えば良いので
以下のように設定したらおしまいです。

.pre-commit-config.yaml
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0  # 最新バージョンに合わせてください
    hooks:
      - id: check-added-large-files
        args: ["--maxkb=102400"]  # 100MBをKBで指定

pre-commitについてはこちらも参考にしていただけると。
https://qiita.com/raki/items/5374a91dca4a3039094b

道理で誰も作ってないわけだわ。指摘に感謝します。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?