Skip to content

Commit

Permalink
docs: describe the unusual behaviour of ** in glob option (#941)
Browse files Browse the repository at this point in the history
  • Loading branch information
jamiecobbett authored Feb 4, 2025
1 parent 2f59812 commit d87b8d4
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
21 changes: 21 additions & 0 deletions docs/mdbook/configuration/glob.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,27 @@ pre-commit:

For patterns that you can use see [this](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm) reference. We use [glob](https://github.com/gobwas/glob) library.

***When using `root:`***

Globs are still calculated from the actual root of the git repo, `root` is ignored.

***Behaviour of `**`***

Note that the behaviour of `**` is different from typical glob implementations, like `ls` or tools like `lint-staged` in that a double-asterisk matches 1+ directories deep, not zero or more directories.
If you want to match *both* files at the top level and nested, then rather than:

```yaml
glob: "src/**/*.js"
```

You'll need:

```yaml
glob: "src/*.js"
```

***Using `glob` without a files template in`run`***

If you've specified `glob` but don't have a files template in [`run`](./run.md) option, lefthook will check `{staged_files}` for `pre-commit` hook and `{push_files}` for `pre-push` hook and apply filtering. If no files left, the command will be skipped.

```yml
Expand Down
6 changes: 6 additions & 0 deletions docs/mdbook/configuration/root.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,9 @@ pre-commit:
glob: "*.{js,ts}"
run: yarn eslint --fix {staged_files} && git add {staged_files}
```
**Notes**
***When using `root:`***

Globs are still calculated from the actual root of the git repo, `root` is ignored.

0 comments on commit d87b8d4

Please sign in to comment.