-`mergeBase(mergeCommit^1, headSha)` is still the commit the branches diverged from, since both the squashed commit's parent and the last rebased commit's parent descend from the base tip.
-`mergeable` still reports whether the two tips merge. A rebase can conflict where the merge does not, one commit at a time; that surfaces as a 409 naming the paths of the first commit that failed, and nothing is written but loose objects.
- The method is the merger's choice on each request, not a repository setting: every writer may use all three.
`
(the default),
`
squash
`
or
`
rebase
`
. All three build their result in the base cache and land it through
`
commitPush
`
, exactly as
[
0016
]
(
0016-a-pull-request-spans-two-logs.md
)
describes for the merge commit.
`
merge-tree
`
, then a commit with the base tip and the head tip as parents.
`
merge-tree
`
result, committed with the base tip as its only parent. The subject defaults to
`
<title> (#<number>)
`
and the body to the head's commit messages; the request's detail carries both as
`
squash
`
, and the merger may rewrite either before merging. The author is the request's author and the committer is whoever pressed the button.
`
mergeBase..head
`
onto the base tip, one
`
merge-tree --merge-base=<commit>^
`
per commit. Each copy keeps its author, author date and message; the committer is whoever pressed the button. Merge commits are dropped, the way
`
git rebase
`
linearizes a branch.
(
0016-a-pull-request-spans-two-logs.md
)
). A merge commit makes the head reachable, so its objects were already in the pack. A squash or a rebase leaves the head unreachable from the base, and for a fork its commits exist in no object the base log holds.
)
replays every entry with
`
index-pack
`
, which keeps everything in the pack.
**
does the rebase in one call, but it is marked experimental, its output for a raw sha range is empty unless a ref is involved, and writing a scratch ref into a shared cache is what
[
0016
]
(
0016-a-pull-request-spans-two-logs.md
)
already rejects.
`
baseSha..mergeCommitSha
`
instead. It loses the original commits for a squash and every review comment's line for both, and needs a migration for a value the pack already answers.