[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: hg repo corruption -- anyone have a backup?
From: |
Daniel J Sebald |
Subject: |
Re: hg repo corruption -- anyone have a backup? |
Date: |
Fri, 31 Aug 2012 04:23:01 -0500 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Fedora/3.1.16-1.fc14 Thunderbird/3.1.16 |
On 08/31/2012 02:59 AM, John W. Eaton wrote:
On 30-Aug-2012, Judd Storrs wrote:
| I have a way old one:
|
| $ hg log | head
| changeset: 10952:18b0af0bbd6b
| tag: tip
| user: Ben Abbott<address@hidden>
| date: Wed Sep 08 08:17:48 2010 -0400
| summary: image.m: Fix axis limits for single dimension images, add demo.
|
| $ hg verify
| checking changesets
| checking manifests
| crosschecking files in changesets and manifests
| checking files
| 7772 files, 10953 changesets, 76766 total revisions
Thanks for checking. I also had one from February 2010 that was
clean.
I'm also able to generate an archive that is clean up to this changeset:
changeset: 13329:80f7564a3849
user: John W. Eaton<address@hidden>
date: Wed Oct 12 12:18:27 2011 -0400
summary: handle class objects in num2cell
from the current archive that seems to have problems. The next
changeset is
changeset: 13330:583c15dd487b
parent: -1:000000000000
user: Jacob Dawid<address@hidden>
date: Tue Apr 05 00:12:18 2011 +0200
summary: Initial commit.
The -v options adds this:
files: gui//Quint.pro gui//README gui//client.cpp gui//client.h
gui//clientmanager.cpp gui//clientmanager.h gui//main.cpp
gui//mainwindow.cpp gui//mainwindow.h gui//octaveterminal.cpp
gui//octaveterminal.h
and this is where things start to go bad for me. Note the strange
parent ID. Is that correct? I thought the gui branch was a clone of
Octave with the gui directory added? Is that not correct?
I saved the log to a file and searched for other instances of "-1:00"
and there are none. All other cases of "parent" list a previous
changeset. I'm not sure if the "-1:00" is bad. Being referenced to a
previous changeset probably would be cleaner, but it could be that some
kind of bad merge or improper branch was done. Since changeset
13330:583c15dd487b only adds files (instead of diffs), not referencing a
parent probably isn't a critical issue for Mercurial.
Here is another bit of information:
10649 files, 15271 changesets, 99682 total revisions
863 warnings encountered!
1654 integrity errors encountered!
(first damaged changeset appears to be 13495)
Changeset 13495 is the changeset that merged/pushed/added a bunch of
files for the GUI:
changeset: 13495:11e03a76d8c0
user: Jacob Dawid <address@hidden>
date: Fri Apr 29 23:51:33 2011 +0200
files: gui//Quint.pro gui//src/BrowserWidget.cpp
gui//src/BrowserWidget.h gui//src/MainWindow.cpp gui//src/MainWindow.h
gui//src/OctaveTerminal.cpp gui//src/OctaveTerminal.h
gui/src/BlockArray.cpp gui/src/BlockArray.h gui/src/BrowserWidget.cpp
gui/src/BrowserWidget.h
[snip maybe 40 to fifty files]
gui/src/kpty.cpp gui/src/kpty.h gui/src/kpty_export.h gui/src/kpty_p.h
gui/src/kptydevice.cpp gui/src/kptydevice.h gui/src/kptyprocess.cpp
gui/src/kptyprocess.h
description:
Added source files.
What is peculiar is that in some cases I see gui// associated with the
directory. Other times I see gui/ associated with the directory. And
it is like this throughout the verbose log. It's as though the ones
added early on have // and the later ones have /. I don't see any other
files having // in the log record other than those few "gui" files.
Here is a reference about what you noticed, i.e., the "nullid" -1:000...
http://selenic.com/pipermail/mercurial/2006-November/011634.html
which describes this as not a branch, but as a whole new tree, i.e., two
repositories within the same file. It says the two can be merged, but
it might be wise to not mix and match file commits from the gui files
and the conventional files for the time being.
I just noticed something else. The first complaint while doing a verify
is 13674:
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
gui//address@hidden: rev 1 points to unexpected changeset 13674
(expected 13357 13500)
gui//address@hidden: 291538499e53 not in manifests
gui//address@hidden: rev 37 points to unexpected changeset 13501
(expected 13330 13333 13347 13353 13356 13359 13360 13363 13365 13366
13367 13375 13377 13381 13382 13389 13390 13395 13401 13402 13407 13408
13412 13416 13440 13443 13445 13446 13453 13454 13459 13460 13468 13469
13483 13485 13495 13500)
and notice that HG is trying to find information on the gui//COPYING
file, i.e., the one with the two slashes //. But when I look at the
verbose log entry, the files are:
changeset: 13674:c0e66d6e3dc8
user: Jacob Dawid <address@hidden>
date: Sun Sep 25 10:52:42 2011 +0200
files: gui/COPYING gui/README gui/octave-gui.pro
gui/src/BrowserWidget.cpp gui/src/BrowserWidget.h
gui/src/CommandLineParser.cpp gui/src/CommandLineParser.h
gui/src/FileEditorMdiSubWindow.cpp gui/src/FileEditorMdiSubWindow.h
gui/src/Fi
i.e., gui/COPYING gui/README with a single slash. Recall above that
changeset 13330 has double slashes, gui//README.
There looks to be a couple issues.
1) There might be two separate repository trees in the data record.
2) It looks as though some changes were made to file names because of
redundant slashes, i.e., //. In an OS the // might be extraneous, but
perhaps it is meaningful inside the repository itself.
Given that, maybe it is possible a second tree is present that is
corrupt, and the tree most people have been working with is fine. I
don't know mercurial well enough to figure out merging or (if possible)
to strip one "tree" outside of the repository.
Dan
Re: hg repo corruption -- anyone have a backup?, Judd Storrs, 2012/08/30