repro script should be:
hg init t1
cd t1
echo a > a
hg ci -Am m
cd ..
hg clone t1 t2
cd t2
echo b > b
hg branch foo
hg ci -Am m
hg up default
echo c > c
hg ci -Am m
hg merge foo
hg ci -m m
echo cc > c
hg ci -Am m
hg out
hg push # should require --force
hg out -r 3
hg push -r 3 # shouldn't work without --force, since it adds a new branch
the reason this happens is because prepush computes the bases and
topological heads that are outgoing (the missing changelog entries are
discarded), and when revs is specified, it uses a special way to compute the
branch heads by restricting it to the set of outgoing heads. We need some
(sane) way to compute the set of branch heads that are outgoing as opposed
to the topological heads. |