[issue2520] Impossible to transition from a bad .hgsubstate

Thomas Sewell bugs at mercurial.selenic.com
Wed Nov 24 05:09:28 UTC 2010


New submission from Thomas Sewell <thomas.sewell at nicta.com.au>:

There seem to be a couple of ways to commit a bad .hgsubstate. In this case
it was caused by performing an hg merge/hg push which worked fine in the
containing repository but would have created new remote heads in the subrepo.

The next changeset in the repository fixes the issue, but if anyone checks
out the bad changeset they get a local .hgsubstate which calls for a subrepo
state that doesn't exist. It is then impossible to transition away from this
state (even with update -C).

This is a huge nuisance, because our automatic regression test script's
simple update/test cycle is stuck at that state and speedily recording the
fact that all future states are pathologically broken. I haven't tested
this, but I suspect that if an hg bisect hits this revision we'll get the
same issue.

I have two recommendations:
  1. hg update -C ignores consistency checks on the current subrepo state.
  2. hg update in general might try to avoid saving the .hgsubstate if it
would be impossible to get to consistently.

----------
messages: 14518
nosy: tsewell
priority: bug
status: unread
title: Impossible to transition from a bad .hgsubstate

____________________________________________________
Mercurial issue tracker <bugs at mercurial.selenic.com>
<http://mercurial.selenic.com/bts/issue2520>
____________________________________________________


More information about the Mercurial-devel mailing list