two heads have no common ancestor
Matt Mackall
mpm at selenic.com
Fri Jan 31 04:37:28 UTC 2014
On Thu, 2014-01-30 at 15:38 -0500, D Wang wrote:
> Hello hg devs,
>
> I have a repo where the two heads have no common ancestor, which I
> thought was impossible. How could I have gotten myself into this
> state, and is there any clever way to merge these two heads short of
> manually examining each file?
>
> (Please cc dwang at janestreet.com on replies because I am not subscribed
> to the mailing list.)
>
> $ hg heads --template '{node|short} {date|isodate} ({parents}) {tags} \n'
> 520c0024b6e1 2014-01-30 14:30 -0500 () tip
> 76d5d232371f 2014-01-24 13:11 -0500 ()
> $ hg log -r 'ancestor(520c0024b6e1,76d5d232371f)'
> $ hg log -G -r 'ancestors(520c0024b6e1)' --template '{node|short}
> {date|isodate} ({parents}) {tags}\n'
> @ 520c0024b6e1 2014-01-30 14:30 -0500 () tip
> |
> o 1628b6cba1b6 2014-01-29 19:57 -0500 ()
> |
> o 061c697ef8e7 2014-01-28 20:29 -0500 ()
> |
> o 2c06ad30d497 2014-01-27 19:40 -0500 ()
> |
> o 02ab4c712c43 2014-01-26 20:00 -0500 ()
> |
> o 557d342a24c6 2014-01-25 20:09 -0500 ()
> |
> o 2b94d7ce938f 2014-01-24 20:07 -0500 ()
> |
> o 7c6911410f0b 2014-01-24 14:05 -0500 ()
> |
> o 0f7b23a5ddaa 2014-01-24 13:11 -0500 (-1:000000000000 )
>
> 0f7b23a5ddaa has exactly one parent, the all-zeroes revision:
>
> $ hg log -r 0f7b23a5ddaa --debug
> changeset: 671130:0f7b23a5ddaa899812f9163828a287ae8122630d
> parent: -1:0000000000000000000000000000000000000000
> parent: -1:0000000000000000000000000000000000000000
> manifest: 671129:d33e6dea36c0a404f162ed8f802f8d933f4d656c
> ...
Most likely way this happened is that your .hg/dirstate got nuked by
forces unknown:
$ hg sum
parent: 20467:a959f7167077 tip
clone: do not turn hidden changeset public on publishing clone
(issue3935)
branch: stable
bookmarks: *@
commit: 18 unknown (clean)
update: (current)
mq: 9 unapplied
$ mv .hg/dirstate{,-mangled}
$ hg sum
parent: -1:000000000000 (no revision checked out)
branch: stable
commit: 1054 unknown (new branch)
update: 20333 new changesets (update)
mq: 9 unapplied
A commit here is perfectly valid.
Also, if your dirstate gets corrupted, you might get a message like
this:
$ hg sum
warning: ignoring unknown working parent 7859f7167077!
parent: -1:000000000000 (no revision checked out)
branch: stable
commit: 18 unknown (new branch)
update: 20333 new changesets (update)
mq: 9 unapplied
This is only a warning, because people found that when it was a fatal
error, they were unable to recover without expert help because just
about every command failed.
> Unfortunately, the contents of this repo are machine-generated, so
> it's not easy to figure out the relationship between these revisions
> by reading the files.
..and an automated process might ignore that warning.
But if this is an automated process, you may be able repair the
situation with a rebase.
> Unfortunately, this is a repo where almost all the commits are made by
> an automated system, so I don't what commands were run and it's
> entirely possible we did something absurd.
You might want to checkout the blackbox extensions.
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial
mailing list