Both tools merge with git merge-tree --write-tree, which needs git 2.38,
and pr_overlap's pairwise merges also pass --merge-base, which needs
git 2.40. On an older git, such as 2.34 on Ubuntu 22.04, they stopped
with git's merge-tree usage text and nothing said what was wrong. A
failing merge now reports the version it needs and the one found when
git is older; on a recent enough git the error is unchanged.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
After the fetch, a --branch run probed about 1,300 pull requests for about 28 s without output, and --out merged every pull request into the base. Report every 100 pull requests and at the end how many were probed and how many of them share files or exports with the branch, and how many were merged into the base.
pr_overlap printed nothing until its report, which takes 54 to 81 s on Linux with about 1,300 open pull requests and took minutes on Windows, so a run looked stuck. Write progress lines to stderr: the number of open pull requests once they are listed, and the number of pull request heads fetched after each batch of 100. The report on stdout is unchanged.
pr_overlap --branch merged every open pull request against main, although a pull request can only appear in the report when it shares a file or an export with the branch, so on a repository with a thousand open pull requests the check did not finish in an hour. probe lists each pull request's files and exports from git diff base...head, without a merge, and scan_all merges only the ones that overlap the branch; the others get empty sets, which is what they would contribute to the report. --out is unchanged.
pr_overlap.py let a failed git or gh call escape as a bare
CalledProcessError traceback that names the command but drops the
error text, so a mistyped --base such as upstream/main (refs/heads/upstream/main
does not exist) read as an unexplained crash. The script now exits with
"pr_overlap: <command> failed with exit code N: <stderr>".
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Only the first 'Depends on:' was read. When it was empty, such as the template checklist line with its placeholder comment, a later 'Depends on: #N' was ignored and the dependent pull requests were reported as overlapping.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A -U0 hunk for an insertion before line 1 starts at line 0, so two PRs
inserting at the top of one file produced a link to the nonexistent
line L0. hunks now clamps the start to line 1 and derives the end from
the clamped start. A test covers the clash range and the rendered link.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
The --branch mode removed the branch's own open pull request only when its
head equalled the local branch exactly. Checking commits before pushing
left the branch ahead of its pull request, so the tool reported the user's
own pull request as overlapping. The filter is now a function that also
drops any pull request whose head is an ancestor of the branch.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq