Open 0xjac opened 1 month ago
@0xjac , let me suggest you an option for that.
useful-hooks.yml
file e.g. in your home directory (/home/user/useful-hooks.yml
) and describe all the hooks you want there..lefthook.yml
file to every repo you want useful hooks to work with the following content:
extends:
- /home/user/useful-hooks.yml
.lefthook.yml
to ~/.gitignore
, so you don't have to commit it.Lefthook supports different config names, so you can use some of them as "local" and add to global gitignore. You can also use extends
to configure this only once. So, the only thing you'll have to do is to copy the .lefthook.yml
to your repo and run lefthook install
.
Does this approach work for you?
@mrexox Thanks that is a start, but it has a couple issues. Namely:
.lefthook.yml
in a lot of repository and remember to do so each time I create a new repo..lefthook.yml
and at the very least force add it if it is being used. And if the repo uses a lefthook.yaml
then my hooks or the repo hooks will be ignored.I'm happy to use such a setup but it should:
lefthook-local.yaml
file, ideally in the $GIT_DIR
so I can sync my git repos and keep their tree clean .lefthook-local.yaml
file implicitly and without an explicit lefthook.yaml
But I'm not sure if such an implementation is easier than a simple implicit lookup to extend a lefthook file (whether it is present or not) with a global config?
:zap: Summary
I am not sure lefthook or even git hooks are the right tools but I have the following problem:
I have a set of private generic hooks (think commitlint, spell check, etc.) which I would like to run on every git repo and:
pre-commit.com
).Value
It allows to automate part of my workflow and ensures I don't forget to run some checks.
Behavior and configuration changes
This might be related to #29 (symlinks won't work in my case). But a couple options are:
lefthook-local.yaml
without alefthook.yaml
being present.This would allow running lefthook privately without a shared config (kind of how git hooks originally work)
GIT_DIR
(default:.git
). This would allow syncing a base configuration to all repos withgit init
and a git template.$XDG_CONFIG_HOME/lefthook.yaml
) which would act as a base configuration and could be overwritten by any configuration file within the repository.