# HG changeset patch # User Peter Rowlands # Date 1607660687 -32400 # Fri Dec 11 13:24:47 2020 +0900 # Node ID 17ea193054b5d9489856746bcf8454d63f24b750 # Parent a3ce2c3589312dd0cf2bfa2fc0f4cc84306f6e9a commit: add no_verify flag to skip pre-commit hooks diff --git a/dulwich/porcelain.py b/dulwich/porcelain.py --- a/dulwich/porcelain.py +++ b/dulwich/porcelain.py @@ -323,7 +323,8 @@ repo_obj.refs.set_symbolic_ref(b'HEAD', ref_path) -def commit(repo=".", message=None, author=None, committer=None, encoding=None): +def commit(repo=".", message=None, author=None, committer=None, encoding=None, + no_verify=False): """Create a new commit. Args: @@ -331,6 +332,7 @@ message: Optional commit message author: Optional author name and email committer: Optional committer name and email + no_verify: Skip pre-commit and commit-msg hooks Returns: SHA1 of the new commit """ # FIXME: Support --all argument @@ -344,7 +346,7 @@ with open_repo_closing(repo) as r: return r.do_commit( message=message, author=author, committer=committer, - encoding=encoding) + encoding=encoding, no_verify=no_verify) def commit_tree(repo, tree, message=None, author=None, committer=None): diff --git a/dulwich/repo.py b/dulwich/repo.py --- a/dulwich/repo.py +++ b/dulwich/repo.py @@ -822,7 +822,7 @@ author=None, commit_timestamp=None, commit_timezone=None, author_timestamp=None, author_timezone=None, tree=None, encoding=None, - ref=b'HEAD', merge_heads=None): + ref=b'HEAD', merge_heads=None, no_verify=False): """Create a new commit. If not specified, `committer` and `author` default to @@ -844,6 +844,7 @@ encoding: Encoding ref: Optional ref to commit to (defaults to current branch) merge_heads: Merge heads (defaults to .git/MERGE_HEADS) + no_verify: Skip pre-commit and commit-msg hooks Returns: New commit SHA1 @@ -859,7 +860,8 @@ c.tree = tree try: - self.hooks['pre-commit'].execute() + if not no_verify: + self.hooks['pre-commit'].execute() except HookError as e: raise CommitError(e) except KeyError: # no hook defined, silent fallthrough @@ -903,9 +905,12 @@ raise ValueError("No commit message specified") try: - c.message = self.hooks['commit-msg'].execute(message) - if c.message is None: + if no_verify: c.message = message + else: + c.message = self.hooks['commit-msg'].execute(message) + if c.message is None: + c.message = message except HookError as e: raise CommitError(e) except KeyError: # no hook defined, message not modified