Skip to content

Repository files navigation

git-hooks

自分のGitを使うときの自動化スクリプトをまとめたリポジトリです。 利用しなくなりデータも残っていないブランチを消したり、 commitlintの設定をまとめたりしています。

使い方

home-manager (Nix Flakes)

flake.nixのinputsに追加します。

{
  inputs = {
    git-hooks.url = "github:ncaq/git-hooks";
  };
}

home-managerのmodulesとして有効化します。

{
  imports = [ inputs.git-hooks.modules.homeManager.default ];
  programs.git-hooks.enable = true;
}

inputs経由でアクセスしないと無限再帰になりやすいです。

含まれるhooks

  • commit-msg: commitlintによるコミットメッセージの検証
  • post-checkout: git lfs post-checkoutへの委譲
  • post-commit: git lfs post-commitへの委譲
  • post-merge: git lfs post-mergeへの委譲とマージ済みブランチの自動削除
  • pre-push: git lfs pre-pushへの委譲

Git LFSとの関係

core.hooksPathを共通hooksへ固定すると、 git lfs install.git/hooksへ設置するhooksは実行されなくなります。 その代わりに上記のhooksが同名のgit lfsサブコマンドへ委譲することで、 LFSを使うリポジトリでも通常通り動作します。 hooksはgit-lfsをPATHに含めてラップされているため、 利用側で別途git-lfsをインストールする必要はありません。

LFSを使わないリポジトリではgit lfsのhookサブコマンドは即座に何もせず終了するので、 リポジトリごとの設定は不要です。

なおgit lfs installが行うもう1つの仕事であるfilter.lfs.*の設定は、 このリポジトリの管轄外です。 home-managerではprograms.git.lfs.enable = true;を設定してください。

About

My Git global hooks

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages