filename:hash points to unexpected changeset

Matt Mackall mpm at selenic.com
Mon Aug 6 13:26:29 CDT 2007


On Mon, Aug 06, 2007 at 08:02:29AM -0400, Norman Walsh wrote:
> / Matt Mackall <mpm at selenic.com> was heard to say:
> | On Sun, Aug 05, 2007 at 04:17:52PM -0400, Norman Walsh wrote:
> |> Concerned by the problems I'm having with one repository, I decided to
> |> run hg verify on each of them. On another, I encountered the following
> |> problems:
> |> 
> |> $ hg verify
> |> checking changesets
> |> checking manifests
> |> crosschecking files in changesets and manifests
> |> checking files
> |> 2000/06/edinburgh.xml:5bfc5b1e7250 points to unexpected changeset 1366
> |> 2001/03/belchertown.xml:47c3592e607d points to unexpected changeset 1366
> |> ...
> |> 2004/10/08/fountains.xml:f3c6af10778b points to unexpected changeset 1366
> |> 6777 files, 1406 changesets, 13917 total revisions
> |> 36 integrity errors encountered!
> |
> | Never seen that before either. This message says that changeset 1366
> | didn't mention this change, but when we stored the file change, we
> | recorded it as part of 1366.
> |
> | This should be harmless, but it's a bit of a mystery how this could
> | happen.
> |
> | Please try again with this patch:
> |
> | diff -r bac4fe4c6316 mercurial/verify.py
> | --- a/mercurial/verify.py       Thu Aug 02 23:41:16 2007 -0500
> | +++ b/mercurial/verify.py       Sun Aug 05 17:20:18 2007 -0500
> | @@ -164,6 +164,7 @@ def _verify(repo):
> |              if flr not in filelinkrevs.get(f, []):
> |                  err(_("%s:%s points to unexpected changeset %d")
> |                          % (f, short(n), flr))
> | +                err(_("expecting one of %s" % filelinkrevs.get(f, [])))
> |              else:
> |                  filelinkrevs[f].remove(flr)
> 
> 2000/06/edinburgh.xml:5bfc5b1e7250 points to unexpected changeset 1366
> expecting one of [1371]

Thanks. Have you looked at revs 1366 and 1371? Was this file touched
in the latter and not in the former?

Can you do:

hg manifest --debug 1366 | grep edinburgh

It will show the file hash present in rev 1366, if any.

I expect this is related to your other problem. That is, we somehow
recorded this file version earlier in the file log, but the changelog
entry never got finalized.

Both of these problems are very unusual.
-- 
Mathematics is the supreme nostalgia of our time.


More information about the Mercurial mailing list