divergence using the convert extension

Yuya Nishihara yuya at tcha.org
Fri Jun 29 14:26:37 UTC 2018


On Thu, 28 Jun 2018 17:42:04 -0400, Matt Harbison wrote:
> > On Jun 24, 2018, at 4:02 PM, Augie Fackler <raf at durin42.com> wrote:
> >> On Fri, Jun 22, 2018 at 7:00 AM, Yuya Nishihara <yuya at tcha.org> wrote:
> >>> On Thu, 21 Jun 2018 21:02:31 -0400, Matt Harbison wrote:
> >>> On Thu, 21 Jun 2018 04:52:09 -0400, Benoit Fouletier <bennews at free.fr>
> >>>> Obviously since I'm gonna strip stuff anyway, I _will_ diverge from the
> >>>> original pretty early and will lose all hashes, that's fine, this is more
> >>>> out of curiosity and making sure nothing too fishy it going on.
> >>> 
> >>> I hit a similar issue last year helping someone recover from repo
> >>> corruption.  (Convert was involved in the recovery somehow.)  On the first
> >>> divergent commit, run `hg log -r $rev --debug` in both repos.  IIRC, the
> >>> manifest line was different.  It was reproducible, but I couldn't figure
> >>> out how to recreate it with a simple test case.
> >> 
> >> IIRC, there was a bug that hg would create new manifest node even if nothing
> >> changed. That's probably the reason of the hash change.
> > 
> > That's likely. I wouldn't sweat the difference.
> 
> I’m seeing something similar to the original report in one repo now.  I’ve
> simplified this down to an hg -> hg convert with 4.6.1, and at the same cset,
> it gets the same divergent hash.  The manifest value is the same before and
> after converting.
> 
> The really odd thing I noticed is with `hg log -vr $bad_rev`, it shows 2 more
> files in the post conversion repo.

So what's different is the list of files recorded in the changelog (in short,
ctx.files().)

> But if I `hg status —changed $bad_rev`, I get waaaay more files listed in
> both the before and after repo.

That's normal if the $bad_rev is a merge commit.

> My interest here is converting it to LFS, and silently slipping it onto the
> server for minimal disruption.  That won’t work if the hashes change.

I have no idea other than using a hacked hg to reproduce old ctx.files().



More information about the Mercurial mailing list