Skip to content

Commit

Permalink
Allow display of custom message when no-commit-to-branch fails
Browse files Browse the repository at this point in the history
This change should make the failures of no-commit-to-branch easier
for people that might encounter it as maintainers can provide
information about allowed branch names. Current behavior just gives
an opaque error that is not very useful for people that do not have
a lot of knowledge about the project they are contributing to.
  • Loading branch information
ssbarnea committed Nov 4, 2024
1 parent e437b7e commit c03c398
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ Protect specific branches from direct checkins.
branches.
- `-p` / `--pattern` can be used to protect branches that match a supplied regex
(e.g. `--pattern, release/.*`). May be specified multiple times.
- `-m` / `--message` can be used to customize the error message in case of failure.

Note that `no-commit-to-branch` is configured by default to [`always_run`](https://pre-commit.com/#config-always_run).
As a result, it will ignore any setting of [`files`](https://pre-commit.com/#config-files),
Expand Down
11 changes: 10 additions & 1 deletion pre_commit_hooks/no_commit_to_branch.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,20 @@ def main(argv: Sequence[str] | None = None) -> int:
'may be specified multiple times'
),
)
parser.add_argument(
'-m', '--message', default='',
help=(
'What message to display if the the check fails'
),
)
args = parser.parse_args(argv)

protected = frozenset(args.branch or ('master', 'main'))
patterns = frozenset(args.pattern or ())
return int(is_on_branch(protected, patterns))
result = int(is_on_branch(protected, patterns))
if result:
print(args.message)
return result


if __name__ == '__main__':
Expand Down

0 comments on commit c03c398

Please sign in to comment.