def validate_merge_bases_with_default_branch( cli: CLIUX, repo: Repo, active_branch_name: str, default_branch_name: str) -> Commit: merge_bases = repo.merge_base(default_branch_name, active_branch_name) merge_bases_csv = ", ".join(map(lambda c: c.hexsha[0:8], merge_bases)) cli.debug(f"merge_bases: {merge_bases_csv}") num_merge_bases = len(merge_bases) if (num_merge_bases == 0): raise UnhandledSituationException( 'No merge-base commit found', f"""No merge-base commits between branches {format_branch_name(default_branch_name) } and { format_branch_name(active_branch_name) } could be found, so validation could not be performed.""" ) if (num_merge_bases > 1): description = " ".join([ f"Multiple ({format_integer(num_merge_bases)}) merge-base commits between branches", format_branch_name(default_branch_name), "and", format_branch_name(active_branch_name), "were found:" ]) commits_description = reduce(lambda a, b: f"{a}\n- {b}", map(format_commit, merge_bases), "") raise UnhandledSituationException('Multiple merge-base commits found', description + commits_description) return merge_bases[0]