The commits listed in the multiple heads message are bogus
Summary
Pushing a multi head topic correctly aborts the push, but the commits listed in the commit don't exist (obsolete or otherwise). E.g.
hg push -r . -f
pushing to https://foss.heptapod.net/octobus/mercurial-devel
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: rejecting multiple heads on branch "stable:windows-test-fixes"
remote: (2 heads: 393464663030 383666343239)
abort: push failed on remote
I tried reproducing this with hg serve
, but it yields the correct heads (and has additional output about rolling back the transaction)
$ hg push -r 86f429194d86 http://127.0.0.1:8000 -f --config experimental.enforce-single-head=yes
pushing to http://127.0.0.1:8000/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: transaction abort!
remote: rollback completed
remote: 2 heads on "stable:windows-test-fixes"
remote: (2487058ae888, 86f429194d86)
abort: push failed on remote
Steps to reproduce
Create a linear topic, and push to heptapod. Then rebase the tip into the middle of the topic (I was trying to remove some broken commits without pruning them) and push the new head.
What is the current bug behavior?
The commits listed as heads don't exist.
What is the expected correct behavior?
The commits listed should exist, at least in the local repo.
Possible fixes
I wonder if these are git hashes, though IDK how that would happen given that the code is all in hg or the evolve extension and both the hg tests and evolve tests have instances of this working.