Mercurial > hg
changeset 5552:edfbbb225653
Merge with mpm.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Mon, 26 Nov 2007 12:25:55 -0800 |
parents | dccc127bfc07 (current diff) 92991422a847 (diff) |
children | 86405ff6d74b |
files | |
diffstat | 5 files changed, 65 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Sun Nov 25 12:42:06 2007 +0100 +++ b/mercurial/commands.py Mon Nov 26 12:25:55 2007 -0800 @@ -1629,7 +1629,7 @@ if opts.get('exact'): if hex(n) != nodeid: repo.rollback() - raise util.Abort(_('patch is damaged' + + raise util.Abort(_('patch is damaged' ' or loses information')) finally: os.unlink(tmpname) @@ -1937,7 +1937,7 @@ if len(heads) == 1: msg = _('there is nothing to merge') if parent != repo.lookup(repo.workingctx().branch()): - msg = _('%s - use "hg update" instead' % msg) + msg = _('%s - use "hg update" instead') % msg raise util.Abort(msg) if parent not in heads:
--- a/mercurial/dispatch.py Sun Nov 25 12:42:06 2007 +0100 +++ b/mercurial/dispatch.py Mon Nov 26 12:25:55 2007 -0800 @@ -125,7 +125,7 @@ ui.warn("\n%r\n" % util.ellipsis(inst[1])) except ImportError, inst: m = str(inst).split()[-1] - ui.warn(_("abort: could not import module %s!\n" % m)) + ui.warn(_("abort: could not import module %s!\n") % m) if m in "mpatch bdiff".split(): ui.warn(_("(did you forget to compile extensions?)\n")) elif m in "zlib".split():
--- a/mercurial/localrepo.py Sun Nov 25 12:42:06 2007 +0100 +++ b/mercurial/localrepo.py Mon Nov 26 12:25:55 2007 -0800 @@ -1710,6 +1710,8 @@ # Go through all our files in order sorted by name. for fname in changedfiles: filerevlog = self.file(fname) + if filerevlog.count() == 0: + raise util.abort(_("empty or missing revlog for %s") % fname) # Toss out the filenodes that the recipient isn't really # missing. if msng_filenode_set.has_key(fname): @@ -1794,6 +1796,8 @@ for fname in changedfiles: filerevlog = self.file(fname) + if filerevlog.count() == 0: + raise util.abort(_("empty or missing revlog for %s") % fname) nodeiter = gennodelst(filerevlog) nodeiter = list(nodeiter) if nodeiter:
--- a/mercurial/revlog.py Sun Nov 25 12:42:06 2007 +0100 +++ b/mercurial/revlog.py Mon Nov 26 12:25:55 2007 -0800 @@ -321,7 +321,7 @@ e = _unpack(indexformatv0, cur) # transform to revlogv1 format e2 = (offset_type(e[0], 0), e[1], -1, e[2], e[3], - nodemap[e[4]], nodemap[e[5]], e[6]) + nodemap.get(e[4], nullrev), nodemap.get(e[5], nullrev), e[6]) index.append(e2) nodemap[e[6]] = n n += 1
--- a/mercurial/verify.py Sun Nov 25 12:42:06 2007 +0100 +++ b/mercurial/verify.py Mon Nov 26 12:25:55 2007 -0800 @@ -62,9 +62,14 @@ repo.ui.status(_("repository uses revlog format %d\n") % (revlogv1 and 1 or 0)) + havecl = havemf = 1 seen = {} repo.ui.status(_("checking changesets\n")) - checksize(repo.changelog, "changelog") + if repo.changelog.count() == 0 and repo.manifest.count() > 1: + havecl = 0 + err(0, _("empty or missing 00changelog.i")) + else: + checksize(repo.changelog, "changelog") for i in xrange(repo.changelog.count()): changesets += 1 @@ -96,14 +101,18 @@ seen = {} repo.ui.status(_("checking manifests\n")) - checkversion(repo.manifest, "manifest") - checksize(repo.manifest, "manifest") + if repo.changelog.count() > 0 and repo.manifest.count() == 0: + havemf = 0 + err(0, _("empty or missing 00manifest.i")) + else: + checkversion(repo.manifest, "manifest") + checksize(repo.manifest, "manifest") for i in xrange(repo.manifest.count()): n = repo.manifest.node(i) l = repo.manifest.linkrev(n) - if l < 0 or l >= repo.changelog.count(): + if l < 0 or (havecl and l >= repo.changelog.count()): err(None, _("bad link (%d) at manifest revision %d") % (l, i)) if n in neededmanifests: @@ -132,38 +141,51 @@ repo.ui.status(_("crosschecking files in changesets and manifests\n")) - nm = neededmanifests.items() - nm.sort() - for m, c in nm: - err(m, _("changeset refers to unknown manifest %s") % short(c)) - del neededmanifests, nm + if havemf > 0: + nm = [(c, m) for m, c in neededmanifests.items()] + nm.sort() + for c, m in nm: + err(c, _("changeset refers to unknown manifest %s") % short(m)) + del neededmanifests, nm - for f in filenodes: - if f not in filelinkrevs: - lrs = [repo.manifest.linkrev(n) for n in filenodes[f]] - lrs.sort() - err(lrs[0], _("in manifest but not in changeset"), f) + if havecl: + fl = filenodes.keys() + fl.sort() + for f in fl: + if f not in filelinkrevs: + lrs = [repo.manifest.linkrev(n) for n in filenodes[f]] + lrs.sort() + err(lrs[0], _("in manifest but not in changeset"), f) + del fl - for f in filelinkrevs: - if f not in filenodes: - lr = filelinkrevs[f][0] - err(lr, _("in changeset but not in manifest"), f) + if havemf: + fl = filelinkrevs.keys() + fl.sort() + for f in fl: + if f not in filenodes: + lr = filelinkrevs[f][0] + err(lr, _("in changeset but not in manifest"), f) + del fl repo.ui.status(_("checking files\n")) - ff = filenodes.keys() + ff = dict.fromkeys(filenodes.keys() + filelinkrevs.keys()).keys() ff.sort() for f in ff: if f == "/dev/null": continue files += 1 if not f: - lr = repo.manifest.linkrev(filenodes[f][0]) - err(lr, _("file without name in manifest %s") % short(ff[n])) + lr = filelinkrevs[f][0] + err(lr, _("file without name in manifest")) continue fl = repo.file(f) checkversion(fl, f) checksize(fl, f) + if fl.count() == 0: + err(filelinkrevs[f][0], _("empty or missing revlog"), f) + continue + seen = {} nodes = {nullid: 1} for i in xrange(fl.count()): @@ -171,7 +193,7 @@ n = fl.node(i) flr = fl.linkrev(n) - if flr not in filelinkrevs.get(f, []): + if flr < 0 or (havecl and flr not in filelinkrevs.get(f, [])): if flr < 0 or flr >= repo.changelog.count(): err(None, _("rev %d point to nonexistent changeset %d") % (i, flr), f) @@ -182,14 +204,16 @@ warn(_(" (expected %s)") % filelinkrevs[f][0]) flr = None # can't be trusted else: - filelinkrevs[f].remove(flr) + if havecl: + filelinkrevs[f].remove(flr) if n in seen: err(flr, _("duplicate revision %d") % i, f) - if n not in filenodes[f]: - err(flr, _("%s not in manifests") % (short(n)), f) - else: - del filenodes[f][n] + if f in filenodes: + if havemf and n not in filenodes[f]: + err(flr, _("%s not in manifests") % (short(n)), f) + else: + del filenodes[f][n] # verify contents try: @@ -230,11 +254,12 @@ (short(n), inst), f) # cross-check - fns = [(repo.manifest.linkrev(filenodes[f][n]), n) - for n in filenodes[f]] - fns.sort() - for lr, node in fns: - err(lr, _("%s in manifests not found") % short(node), f) + if f in filenodes: + fns = [(repo.manifest.linkrev(filenodes[f][n]), n) + for n in filenodes[f]] + fns.sort() + for lr, node in fns: + err(lr, _("%s in manifests not found") % short(node), f) repo.ui.status(_("%d files, %d changesets, %d total revisions\n") % (files, changesets, revisions)) @@ -247,4 +272,3 @@ repo.ui.warn(_("(first damaged changeset appears to be %d)\n") % firstbad[0]) return 1 -