Pushing obsolescence markers

Xavier Zwirtz me at xavierzwirtz.com
Sat Jul 9 19:51:12 UTC 2016


In my experiments, hg push does as expected in almost all cases, ie it pushes obsolescence markers. It will not do that though, if the remote contains a a change to branch foo that client has marked obsolete, and you are trying to push a new branch at the same time. It does not detect that at the end of the transaction there will not be two heads.

I created a powershell script that reproduces the situation:

hg init client
hg init server
"[phases]`npublish = false" | sc .\server\.hg\hgrc
cd client
echo 'hello world' > file.txt
hg add .\file.txt
hg commit -m first
echo 'hello world mod' > file.txt
hg commit -m second

hg branch foo
echo 'hello world foo first' > file.txt
hg commit -m "foo first"
hg push ../server

hg update 1
hg branch foo --force
echo 'hello world foo second' > file.txt
hg commit -m "foo second"
hg prune 2

hg push ../server

Apologies for receiving two emails Faheem, I am new to mailing lists.
On 7/9/2016 2:19:33 PM, Faheem Mitha <faheem at faheem.info> wrote:

On Sat, 9 Jul 2016, Xavier Zwirtz wrote:

> I am attempting to push changes that were rebased to a local mercurial
> repository. I get an error about duplicate heads though, unless I run
> `hg push --hidden`. I would expect mercurial to automatically
> push obsolescence markers, even without the --hidden flag.

Can you provide a test script?

Regards, Faheem Mitha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-evolve-testers/attachments/20160709/d6562d7b/attachment-0002.html>


More information about the Evolve-testers mailing list