Push before moving a splice
The workaround for #4, in the same state: push the unpushed commit first, then move the splice. The local commit then reaches the upstream with its own message and author. The move changes no file inside the folder, so it doesn't reach the upstream at all.
Output
setup.bash builds this state:
$ build_scenario scenario_moved_with_unpushed_commits
$ git splice push vendor/a
ok vendor/a: pushed e859a6b to main
$ git mv vendor/a libs/a && git -c user.name=Mover -c user.email=mover@example.com commit -q -m "reorganize folders"
A move changes no file inside the folder, so after a fetch under the new path (#21), there is nothing left to push:
$ git splice fetch libs/a && git splice status
ok libs/a fetched
On branch main
up to date libs/a
$ git -C "$UPSTREAM" log --format='%s (%an)' main
local change (Test)
seed (Test)