From e7959ecc5d9f72485d98827e6aaa7e1db9d907a3 Mon Sep 17 00:00:00 2001 From: Talia Stocks <928827+taliastocks@users.noreply.github.com> Date: Fri, 14 Mar 2025 12:03:45 -0400 Subject: [PATCH] Update hook_impl.py Attempt to fix https://github.com/pre-commit/pre-commit/issues/2424, which has incorrectly been marked as a duplicate of https://github.com/pre-commit/pre-commit/issues/860 --- pre_commit/commands/hook_impl.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pre_commit/commands/hook_impl.py b/pre_commit/commands/hook_impl.py index 49a80b7b..c5d20169 100644 --- a/pre_commit/commands/hook_impl.py +++ b/pre_commit/commands/hook_impl.py @@ -113,6 +113,10 @@ def _rev_exists(rev: str) -> bool: return not subprocess.call(('git', 'rev-list', '--quiet', rev)) +def _is_ancestor(ancestor: str, rev: str): + return not subprocess.call(('git', 'merge-base', '--is-ancestor', ancestor, rev)) + + def _pre_push_ns( color: bool, args: Sequence[str], @@ -126,7 +130,7 @@ def _pre_push_ns( local_branch, local_sha, remote_branch, remote_sha = parts if local_sha == Z40: continue - elif remote_sha != Z40 and _rev_exists(remote_sha): + elif remote_sha != Z40 and _rev_exists(remote_sha) and _is_ancestor(remote_sha, local_sha): return _ns( 'pre-push', color, from_ref=remote_sha, to_ref=local_sha,