🔖

大規模プロジェクトgit reset操作の高速化 / Git操作小ネタ

2023/09/05に公開

概要

  • 大規模なgitプロジェクトを使っているとgit resetコマンドが遅くなりがち
  • ビルドや環境で内部ファイルを削除したり、切り替えする際にはgit resetが数分かかったりすることもあった
  • git reset並列化コマンドがあったので試してみた

やり方

https://matheustavares.gitlab.io/posts/parallel-checkout

# local checkout の並列数を記載
git config --local checkout.workers <N>

# local checkout の並列数を4に設定
git config --local checkout.workers 4

# 0以下に設定すると並列数を最善に
git config --local checkout.workers 0

実験と結果

git管理下にリポジトリに対して以下のファイル操作を実行。数回実行してみてその平均時間を記載

git config --local checkout.workers <N>
rm -rf ./<path to a Assets Dir>
time git reset --hard 
オプション 時間
N = 1 (デフォルト) 1:04.60s
N = 4 41.726s
N = 0 16.462s

git reset --hardgit checkout . で違いがないか確認。

N = 0でのコマンド 時間
git reset --hard 16.462s
git checkout . 24.496s

N=0で確実に効果が出ていることがわかった。効果はマシンの性能によりけりだと思われます。

また git reset でも checkout でもファイルを戻すワーカーに効果がある。

副作用がどこまであるか不明だが、git reset処理に時間がかかっている場合は有効にする価値がありそう。

Discussion