[Bug 3603] New: Unexplained repository corruption

bugzilla-daemon at bz.selenic.com bugzilla-daemon at bz.selenic.com
Fri Aug 31 08:13:02 CDT 2012


http://bz.selenic.com/show_bug.cgi?id=3603

          Priority: normal
            Bug ID: 3603
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: Unexplained repository corruption
          Severity: bug
    Classification: Unclassified
                OS: Mac OS
          Reporter: csutton at inf.ed.ac.uk
          Hardware: Macintosh
            Status: UNCONFIRMED
           Version: unspecified
         Component: Mercurial
           Product: Mercurial

I have a roughly ~800MB repo that I have used for about 3 years. I am the only
user, but I keep one clone on my Mac laptop and one clone on a remote Linux
machine. I pretty much do all my work on the Mac clone and push to the remote
clone. On Mac I am currently using hg version 2.3 and on Linux 2.1. (Didn't
realize the version mismatch until I prepared this bug report; maybe that's not
so good.)

I committed some changes that were intended to move some directories around the
repo. Then when I pushed I got:

pushing to ssh://csutton@staff.login.inf.ed.ac.uk/hg
csutton at staff.login.inf.ed.ac.uk's password: 
searching for changes
3 changesets found
abort: empty or missing revlog for reviews/.DS_Store
remote: ** unknown exception encountered, please report by visiting
remote: **  http://mercurial.selenic.com/wiki/BugTracker
remote: ** Python 2.6.6 (r266:84292, Jun 18 2012, 09:57:52) [GCC 4.4.6 20110731
(Red Hat 4.4.6-3)]
remote: ** Mercurial Distributed SCM (version 2.1)
remote: ** Extensions loaded: mq
remote: Traceback (most recent call last):
remote:   File "/usr/bin/hg", line 38, in <module>
remote:     mercurial.dispatch.run()
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
27, in run
remote:     sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
64, in dispatch
remote:     return _runcatch(req)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
87, in _runcatch
remote:     return _dispatch(req)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
683, in _dispatch
remote:     cmdpats, cmdoptions)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
465, in runcommand
remote:     ret = _runcommand(ui, options, cmd, d)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
737, in _runcommand
remote:     return checkargs()
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
691, in checkargs
remote:     return cmdfunc()
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line
680, in <lambda>
remote:     d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/util.py", line
456, in check
remote:     return func(*args, **kwargs)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/extensions.py",
line 139, in wrap
remote:     util.checksignature(origfn), *args, **kwargs)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/util.py", line
456, in check
remote:     return func(*args, **kwargs)
remote:   File "/usr/lib64/python2.6/site-packages/hgext/mq.py", line 3325, in
mqcommand
remote:     return orig(ui, repo, *args, **kwargs)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/util.py", line
456, in check
remote:     return func(*args, **kwargs)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/commands.py", line
5048, in serve
remote:     s.serve_forever()
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/sshserver.py",
line 93, in serve_forever
remote:     while self.serve_one():
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/sshserver.py",
line 111, in serve_one
remote:     rsp = wireproto.dispatch(self.repo, self, cmd)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/wireproto.py",
line 348, in dispatch
remote:     return func(repo, proto, *args)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/wireproto.py",
line 572, in unbundle
remote:     proto.getfile(fp)
remote:   File "/usr/lib64/python2.6/site-packages/mercurial/sshserver.py",
line 56, in getfile
remote:     count = int(self.fin.readline())
remote: ValueError: invalid literal for int() with base 10: ''

*******
I didn't intend to commit a .DS_Store file but it is possible that I did so
inadvertently. Some Googling led me to the verify command. On the Mac repo this
returns

[csutton hg] :; hg verify
repository uses revlog format 1
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
 html/pro/lfd.html at 292: 611d23e95315 in manifests not found
 html/pro/lfd.html at 293: 4a8d6040cc37 in manifests not found
 html/pro/lfd.html at 294: 980846e8949a in manifests not found
 html/pro/lfd.html at 295: 36059bd27667 in manifests not found
 html/pro/lfd.html at 296: 0992c0f1bfc8 in manifests not found
 html/pro/lfd.html at 297: 4807795a2029 in manifests not found
 html/pro/lfd.html at 298: 26e4e8ad89be in manifests not found
 data/reviews/.DS_Store.i at 56: missing revlog!
 56: empty or missing reviews/.DS_Store
 reviews/.DS_Store at 56: 0c388e950444 in manifests not found
 reviews/.DS_Store at 222: f76694eda0ed in manifests not found
 reviews/.DS_Store at 264: 693df18c0716 in manifests not found
 data/reviews/2010/.DS_Store.i at 56: missing revlog!
 56: empty or missing reviews/2010/.DS_Store
 reviews/2010/.DS_Store at 56: 5f5bff6bbfb5 in manifests not found
 reviews/2010/.DS_Store at 165: 72c7458b0b03 in manifests not found
 data/teaching/iaml/2010/R/.Rhistory.i at 198: missing revlog!
 198: empty or missing teaching/iaml/2010/R/.Rhistory
 teaching/iaml/2010/R/.Rhistory at 198: 092ad322e64d in manifests not found
1367 files, 317 changesets, 1849 total revisions
19 integrity errors encountered!
(first damaged changeset appears to be 56)

On the Linux repo I get

[rockefeller hg] :; hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
 html/pro/lfd.html at 292: 611d23e95315 in manifests not found
 html/pro/lfd.html at 293: 4a8d6040cc37 in manifests not found
 html/pro/lfd.html at 294: 980846e8949a in manifests not found
 html/pro/lfd.html at 295: 36059bd27667 in manifests not found
 html/pro/lfd.html at 296: 0992c0f1bfc8 in manifests not found
 html/pro/lfd.html at 297: 4807795a2029 in manifests not found
 html/pro/lfd.html at 298: 26e4e8ad89be in manifests not found
1298 files, 314 changesets, 1747 total revisions
7 integrity errors encountered!
(first damaged changeset appears to be 292)

*****

I am sending a bug report because the software asked me to do so. My questions
are: Did I do something wrong? Am I totally screwed? Is there any way to
recover? Thanks for any help that you're able to provide...

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list