evolve error - abort: base of divergent changeset not found

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Jun 23 22:34:55 UTC 2015



On 06/16/2015 01:21 AM, John Jefferies wrote:
>
> I am using Ubuntu 14.04 with hg v3.3.2, and the current tip of the
> evolve extension from https://bitbucket.org/marmoute/mutable-history.

(it would be useful to indicate the hash of such tip for future reference)

> I was organising a pile of local changesets, getting them into a state
> suitable for pushing. I have done similar stuff many times, but this
> time I must have stumbled on a bug. After one of the rebase commands I
> had two (unexpected) troubled changesets, the tip and the child of rev 0
> (it wasn't rev 1 because of hidden changesets).

I think you got divergence from the rebase. you use rebase -s or rebase 
-b and this automatically included an obsolete changesets that got 
rebased. This created (or registered arbitrarily) another successors of 
the already obsolete changesets, creating divergence.

This is a shortcoming of the current collaboration of evolve and rebase, 
we will get is improved eventually


> I tried using evolve to cure the top changeset, but got this:
> -----------------
> $ hg evolve
> abort: base of divergent changeset 256dd9b32794 not found
> (this case is not yet handled)

This was a bug in the base computation, it should be fixed in the new 
evolve version I just pushed 5.1.5

> -----------------
>
> I tried several other things, including using touch, cloning the repo,
> and updating to the tip of the evolve project,  but nothing worked; the
> clone still had the same troubled changesets. The repo was ok according
> to verify.

Having some graph of the situation would help. When trying to solve 
divergence issue, hg prune and/or hg touch --duplicate are usually helpful.

> I did find a cure:
> - disable the evolve extension
> - make a trivial change to the tip (which was one of the troubled
> changesets)
> - hg commit --amend
> - re-enable the evolve extension

By changing the hash (amend) without creating an obsmarker, you broke 
the tracking of what is a replacement of what from evolution, dropping 
the divergence in the process.

This could have been achieved with

hg touch --duplicate tip

hg prune OLDHASHOFTIP

This is not a magic recipe, as divergence usually want's to be cured.

-- 
Pierre-Yves David



More information about the Mercurial mailing list