Jed Brown writes: > On Wed, Mar 6, 2013 at 7:08 PM, Sean Farley <sean at mcs.anl.gov> wrote: > >> Jed Brown writes: >> >> > On Wed, Mar 6, 2013 at 6:34 PM, Sean Farley <sean at mcs.anl.gov> wrote: >> > >> >> > Run 'hg export de73c9a7d341d846b5e16a8d61a48'. Note how they do not >> exist >> >> > in the formatted patch. Why are they written into the commit? >> >> >> >> I don't see this. I see contents for both of Barry's merges. You'll have >> >> to provide a test case where this happens to rule out gitifyhg. >> > >> > >> > Look for changes to src/mat/impls/aij/seq/ftn-kernels/*.h. >> > >> > This all happened before I was involved. >> >> You'll have to provide a test case. Also, all the petsc devs might as >> well use this time to upgrade their mercurial to the latest (2.5.2 at >> the time of this writing). > > > I gave you instructions above, but here it is more verbosely. > > $ hg log -vr de73c9a7d341d846b5e16a8d61a48 |grep fsolvebaij.h > files: src/contrib/style/checks/PetscFunctionBegin.sh > src/contrib/style/checks/PetscFunctionBegin2.sh > src/contrib/style/checks/PetscFunctionReturn.sh > src/dm/impls/composite/pack.c src/dm/impls/plex/f90-custom/zplexf90.c > src/dm/impls/plex/ftn-custom/zplex.c src/dm/impls/plex/plexcreate.c > src/ksp/pc/impls/bjacobi/bjacobi.c src/ksp/pc/impls/fieldsplit/fieldsplit.c > src/ksp/pc/impls/gamg/gamg.c src/ksp/pc/impls/openmp/hpc.c > src/mat/impls/aij/mpi/mpiaij.c src/mat/impls/aij/mpi/mpiaij.h > src/mat/impls/aij/seq/aij.h > src/mat/impls/aij/seq/crl/ftn-kernels/fmultcrl.h > src/mat/impls/aij/seq/ftn-kernels/fmult.h > src/mat/impls/aij/seq/ftn-kernels/fmultadd.h > src/mat/impls/aij/seq/ftn-kernels/frelax.h > src/mat/impls/aij/seq/ftn-kernels/fsolve.h src/mat/impls/baij/seq/baij.h > src/mat/impls/baij/seq/ftn-kernels/fsolvebaij.h > src/mat/impls/dense/seq/dense.h src/mat/impls/fft/fft.h > src/mat/impls/maij/maij.h src/mat/impls/mffd/mffd.c > src/mat/impls/sbaij/seq/sbaij.h src/mat/utils/zerodiag.c > src/snes/mf/snesmfj.c src/vec/vec/impls/dvecimpl.h > src/vec/vec/impls/seq/seqcusp/cuspvecimpl.h > $ hg export de73c9a7d341d846b5e16a8d61a48 |grep fsolvebaij.h > $ > > So fsolvebaij.h (and 9 other files) are not affected by the commit, but are > named anyway. > > Recall that this is a commit that Barry made on his own, before I had > anything to do with that branch. There was no rebase and no gitifyhg > involved. If you strip that commit and 'hg import' what you just exported, > you will get a different hash because those files that are named in the > commit, but not affected by the commit, are no longer present. > > Please show me in the hg specification for commits where it is allowed for > a commit to name files that are unrelated to the commit and do not appear > in 'hg export', but whose file names are part of the SHA1. > > > > > Editorializing, I believe that diffs are a cruddy way to archive state > because it relies on the diff being normalized. The above conflict would be > impossible with git because the sha1 represents content (not a diff). The > sha1 cannot be different without the content being different. With hg, we > have multiple ways to represent semantically identical commits because the > binary diff representation is not normalized (it's possible for it to name > files that are not affected by the commit). That is, a bug in Hg can create > a commit like this (based on non-normalized diff), but a bug in Git cannot > create a commit based on a non-normalized representation because the only > representation is the content itself.
Responding to this paragraph more in depth now; your information above is at best misinformed and at worse complete bs. Both mercurial and git store the sha1 representation with a binary-safe "diff" algorithm. Git's seems to be like xdiff and mercurial's is mdiff. Let's look again at your original request, 'hg export de73c9a | grep fsolvebaij' shows no output. Well, that's because you're diffing against the wrong parent. Running 'hg export --switch-parent de73c9a | grep fsolvebaij' gives: diff --git a/src/mat/impls/baij/seq/ftn-kernels/fsolvebaij.h b/src/mat/impls/baij/seq/ftn-kernels/fsolvebaij.h --- a/src/mat/impls/baij/seq/ftn-kernels/fsolvebaij.h +++ b/src/mat/impls/baij/seq/ftn-kernels/fsolvebaij.h I seem to remember someone once saying, "This is a visualization issue." [1] Editorializing, I believe that you are wasting everyone's time with your constant (and mostly vacuous) complaining about mercurial. No one has a problem with this merge except for you. And, judging from your earlier emails, it was a problem for you after you ran it through gitifyhg. So, again, I say that this is a bug with your extension. If you could not muck up the petsc repository with these erroneous commits, I would much appreciate it. [1] - http://lists.mcs.anl.gov/pipermail/petsc-dev/2012-February/007490.html