@@ -183,6 +183,7 @@ def __init__(self, path: str, base_commit_sha: str | None = None):
183183 provider = "explicit base commit" ,
184184 base_ref = self .base_commit_sha ,
185185 head_ref = None ,
186+ use_merge_base = False ,
186187 )
187188 if detected :
188189 detection_source = "explicit-base-commit"
@@ -348,8 +349,9 @@ def _detect_pull_request_changes(
348349 provider : str ,
349350 base_ref : str ,
350351 head_ref : str | None ,
352+ use_merge_base : bool = True ,
351353 ) -> bool :
352- """Detect a full PR range locally, fetching only refs needed to complete it."""
354+ """Detect a base-to-head range locally, fetching only refs needed to complete it."""
353355 base_commit = self ._resolve_ref (base_ref )
354356 if base_commit is None :
355357 base_commit = self ._fetch_ref (base_ref , f"{ provider } pull-request base ref missing" )
@@ -358,7 +360,8 @@ def _detect_pull_request_changes(
358360 return False
359361
360362 head_commit = self .commit .hexsha
361- diff_range = f"{ base_commit } ...{ head_commit } "
363+ range_separator = "..." if use_merge_base else ".."
364+ diff_range = f"{ base_commit } { range_separator } { head_commit } "
362365 try :
363366 diff_files = self .repo .git .diff ("--name-only" , diff_range )
364367 self .show_files = diff_files .splitlines ()
@@ -384,7 +387,7 @@ def _detect_pull_request_changes(
384387 try :
385388 diff_files = self .repo .git .diff (
386389 "--name-only" ,
387- f"{ base_commit } ... { head_commit } " ,
390+ f"{ base_commit } { range_separator } { head_commit } " ,
388391 )
389392 self .show_files = diff_files .splitlines ()
390393 log .debug (
0 commit comments