identical change, different changesetid

Matt Mackall mpm at selenic.com
Thu May 5 22:18:39 UTC 2011


On Thu, 2011-05-05 at 21:57 +0000, Haszlakiewicz, Eric wrote:
> > -----Original Message-----
> > From: Matt Mackall [mailto:mpm at selenic.com]
> > On Thu, 2011-05-05 at 18:51 +0000, Haszlakiewicz, Eric wrote:
> > > > -----Original Message-----
> > > > From: Matt Mackall [mailto:mpm at selenic.com]
> > > >  hg debugdata .hg/store/00changelog.i <rev>
> > > >
> > > > on both repos. These must be byte-identical to get the same
> > changeset
> > > > hash.
> > >
> > > Ah, thanks.  I found that command but I couldn't figure out how to
> > use it.
> > > The first line is different:
> > >
> > > >cd X0
> > > X0>hg debugdata .hg/store/00changelog.i 5 > ../X0.txt
> > > X0>cd ../X1
> > > X1>hg debugdata .hg/store/00changelog.i 5 > ../X1.txt
> > > X1>cd ..
> > > >diff -u X0.txt X1.txt
> > > --- X0.txt      2011-05-05 13:49:36.806626600 -0500
> > > +++ X1.txt      2011-05-05 13:49:41.181486600 -0500
> > > @@ -1,4 +1,4 @@
> > > -a1f994465eb6fc082d7db05a59a38269993d0c60
> > > +8566b05d1c1fe370ce38a7186a381e2f7412a180
> > >  ehaszla
> > >  1265224283 21600
> > >  tucrs/code/scripts/etc/cibil-prod+ifxncr.cfg
> > >
> > > What does that mean?
> > 
> > That's the hash of the manifest revision, which implies that the
> > manifests are not byte-identical. You can do the same comparison on the
> > raw manifests with:
> > 
> >  hg debugdata .hg/store/00manifest.i
> > a1f994465eb6fc082d7db05a59a38269993d0c60
> >  hg debugdata .hg/store/00manifest.i
> > 8566b05d1c1fe370ce38a7186a381e2f7412a180
> > 
> 
> Yep, it's different:
> 
> >diff -ua X0.manifest.txt X1.manifest.txt
> --- X0.manifest.txt     2011-05-05 16:42:57.302484400 -0500
> +++ X1.manifest.txt     2011-05-05 16:43:08.739325600 -0500
> @@ -476,11 +476,11 @@
>  tucrs/code/scripts/etc/chennai-clustertest+ifx_sds.cfg 3fd34323103b4772dc126a23d5ebd1d2f714f31dx
>  tucrs/code/scripts/etc/cibil-prod+ifx.cfg 0a5b435ca9e1549ba2a6973b1c2299606c32432cx
>  tucrs/code/scripts/etc/cibil-prod+ifxdat.cfg 32d02f35a23f622897b05f5519dd971a780a6b1ex
> -tucrs/code/scripts/etc/cibil-prod+ifxncr.cfg 9e44b9e257d9c355be9f65a41c9e879cff331ef8
> +tucrs/code/scripts/etc/cibil-prod+ifxncr.cfg d48eeed3315fe10c0346085b926cb6772da92012
> ...snip...
> 
> So then I grabbed the info for those files in each repository:
> 
> X1>hg debugdata .hg/store/data/tucrs/code/scripts/etc/cibil-pr
> od+ifxncr.cfg.i d48eeed3315fe10c0346085b926cb6772da92012 > ../X1.file1.txt
> X1>cd ../X0
> X0>hg debugdata .hg/store/data/tucrs/code/scripts/etc/cibil-pr
> od+ifxncr.cfg.i 9e44b9e257d9c355be9f65a41c9e879cff331ef8 > ../X0.file1.txt
> X0>cd ..
> 
> And like Benoit suggested, it looks like the metadata is in a different order:
> 
> >diff -u X0.file1.txt X1.file1.txt
> --- X0.file1.txt        2011-05-05 16:48:05.378547200 -0500
> +++ X1.file1.txt        2011-05-05 16:47:43.989095300 -0500
> @@ -1,6 +1,6 @@
> 
> -copyrev: 894848012450b80a7405b3c0425293c8e95637d8
>  copy: tucrs/code/tables/cibil-prod+ifxncr.cfg
> +copyrev: 894848012450b80a7405b3c0425293c8e95637d8
> 
>  m4_include(`default.cfg_inc')m4_dnl
>  LVL=prod
> 
> 
> Horray, I finally know why it's different.  Wow, that was a bit of a trial to figure out.  Thanks!
> 
> But, is there any way to get convert to maintain the same order for the metadata?
> I'd prefer to avoid needing to coordinate having everyone remove all of their clones and start with fresh ones.

You can hack the sort() out of the relevant function in filelog.py and
probably get the old behavior and still work with old and new hg
clients.

The new behavior has the advantage of being stable across Python
versions and implementations.

-- 
Mathematics is the supreme nostalgia of our time.





More information about the Mercurial mailing list