Scenario: diverged-then-pulled
Both sides changed different files, then upstream's change was pulled in.
The local change is still waiting to be pushed. b adds local.txt,
l adds upstream.txt, and the pull, e, merged cleanly.
The pull's folder differs from l, the commit it records: it contains
local.txt. So B stays at the clone, and the push rebuilds the pull as
a merge, and the local commit keeps its own identity upstream.
Output
setup.bash builds this state:
$ build_scenario scenario_diverged_then_pulled
$ git splice status
On branch main
ahead 2 vendor/a
$ git splice log
=== vendor/a (main)
< 1c41ddd splice: pull vendor/a from main at 9887ec6 (Test <test@example.com>)
< c013d32 local change (Test <test@example.com>)
$ git splice push vendor/a
ok vendor/a: pushed 1c41ddd to main
$ git -C "$UPSTREAM" log --graph --format=%s main
* splice: pull vendor/a from main at 9887ec6
|\
| * upstream change
* | local change
|/
* seed