# HG changeset patch # User Vadim Gelfer # Date 1146201045 25200 # Node ID b7225adb2e0beef53ba425ba01bbead66197942b # Parent eb1ed410aa342f645ed151f0371709303bb1bb12# Parent 3053fc33f5450b333a2666505c5a1c6e7a92ef99 merge with crew. diff --git a/mercurial/changelog.py b/mercurial/changelog.py --- a/mercurial/changelog.py +++ b/mercurial/changelog.py @@ -11,7 +11,7 @@ from demandload import demandload demandload(globals(), "os time util") class changelog(revlog): - def __init__(self, opener, defversion=0): + def __init__(self, opener, defversion=REVLOGV0): revlog.__init__(self, opener, "00changelog.i", "00changelog.d", defversion) diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2978,7 +2978,7 @@ table = { ('a', 'text', None, _('treat all files as text')), ('', 'switch-parent', None, _('diff against the second parent'))], _('hg export [-a] [-o OUTFILESPEC] REV...')), - "forget": + "debugforget|forget": (forget, [('I', 'include', [], _('include names matching the given patterns')), ('X', 'exclude', [], _('exclude names matching the given patterns'))], diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -42,7 +42,7 @@ class localrepository(object): pass v = self.ui.revlogopts - self.revlogversion = int(v.get('format', 0)) + self.revlogversion = int(v.get('format', revlog.REVLOGV0)) flags = 0 for x in v.get('flags', "").split(): flags |= revlog.flagstr(x) @@ -1803,12 +1803,17 @@ class localrepository(object): filenodes = {} changesets = revisions = files = 0 errors = [0] + warnings = [0] neededmanifests = {} def err(msg): self.ui.warn(msg + "\n") errors[0] += 1 + def warn(msg): + self.ui.warn(msg + "\n") + warnings[0] += 1 + def checksize(obj, name): d = obj.checksize() if d[0]: @@ -1816,6 +1821,17 @@ class localrepository(object): if d[1]: err(_("%s index contains %d extra bytes") % (name, d[1])) + def checkversion(obj, name): + if obj.version != revlog.REVLOGV0: + if not revlogv1: + warn(_("warning: `%s' uses revlog format 1") % name) + elif revlogv1: + warn(_("warning: `%s' uses revlog format 0") % name) + + revlogv1 = self.revlogversion != revlog.REVLOGV0 + self.ui.status(_("repository uses revlog format %d\n") % + (revlogv1 and 1 or 0)) + seen = {} self.ui.status(_("checking changesets\n")) checksize(self.changelog, "changelog") @@ -1850,6 +1866,7 @@ class localrepository(object): seen = {} self.ui.status(_("checking manifests\n")) + checkversion(self.manifest, "manifest") checksize(self.manifest, "manifest") for i in range(self.manifest.count()): @@ -1914,6 +1931,7 @@ class localrepository(object): err(_("file without name in manifest %s") % short(n)) continue fl = self.file(f) + checkversion(fl, f) checksize(fl, f) nodes = {nullid: 1} @@ -1962,6 +1980,8 @@ class localrepository(object): self.ui.status(_("%d files, %d changesets, %d total revisions\n") % (files, changesets, revisions)) + if warnings[0]: + self.ui.warn(_("%d warnings encountered!\n") % warnings[0]) if errors[0]: self.ui.warn(_("%d integrity errors encountered!\n") % errors[0]) return 1 diff --git a/mercurial/manifest.py b/mercurial/manifest.py --- a/mercurial/manifest.py +++ b/mercurial/manifest.py @@ -12,7 +12,7 @@ from demandload import * demandload(globals(), "bisect array") class manifest(revlog): - def __init__(self, opener, defversion=0): + def __init__(self, opener, defversion=REVLOGV0): self.mapcache = None self.listcache = None revlog.__init__(self, opener, "00manifest.i", "00manifest.d", diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -293,7 +293,7 @@ class revlog(object): remove data, and can use some simple techniques to avoid the need for locking while reading. """ - def __init__(self, opener, indexfile, datafile, defversion=0): + def __init__(self, opener, indexfile, datafile, defversion=REVLOGV0): """ create a revlog object @@ -337,7 +337,7 @@ class revlog(object): v = struct.unpack(versionformat, i)[0] flags = v & ~0xFFFF fmt = v & 0xFFFF - if fmt == 0: + if fmt == REVLOGV0: if flags: raise RevlogError(_("index %s invalid flags %x for format v0" % (self.indexfile, flags))) @@ -349,7 +349,7 @@ class revlog(object): raise RevlogError(_("index %s invalid format %d" % (self.indexfile, fmt))) self.version = v - if v == 0: + if v == REVLOGV0: self.indexformat = indexformatv0 shaoffset = v0shaoffset else: @@ -369,7 +369,7 @@ class revlog(object): # we've already got the entire data file read in, save it # in the chunk data self.chunkcache = (0, i) - if self.version != 0: + if self.version != REVLOGV0: e = list(self.index[0]) type = self.ngtype(e[0]) e[0] = self.offset_type(0, type) @@ -399,7 +399,7 @@ class revlog(object): def ngoffset(self, q): if q & 0xFFFF: raise RevlogError(_('%s: incompatible revision flag %x') % - (self.indexfile, type)) + (self.indexfile, q)) return long(q >> 16) def ngtype(self, q): @@ -441,13 +441,13 @@ class revlog(object): if node == nullid: return (nullid, nullid) r = self.rev(node) d = self.index[r][-3:-1] - if self.version == 0: + if self.version == REVLOGV0: return d return [ self.node(x) for x in d ] def start(self, rev): if rev < 0: return -1 - if self.version != 0: + if self.version != REVLOGV0: return self.ngoffset(self.index[rev][0]) return self.index[rev][0] @@ -456,7 +456,7 @@ class revlog(object): def size(self, rev): """return the length of the uncompressed text for a given revision""" l = -1 - if self.version != 0: + if self.version != REVLOGV0: l = self.index[rev][2] if l >= 0: return l @@ -911,7 +911,7 @@ class revlog(object): if t >= 0: offset = self.end(t) - if self.version == 0: + if self.version == REVLOGV0: e = (offset, l, base, link, p1, p2, node) else: e = (self.offset_type(offset, 0), l, len(text), @@ -935,7 +935,7 @@ class revlog(object): f.seek(0, 2) transaction.add(self.indexfile, f.tell(), self.count() - 1) - if len(self.index) == 1 and self.version != 0: + if len(self.index) == 1 and self.version != REVLOGV0: l = struct.pack(versionformat, self.version) f.write(l) entry = entry[4:] @@ -1135,7 +1135,7 @@ class revlog(object): raise RevlogError(_("consistency error adding group")) textlen = len(text) else: - if self.version == 0: + if self.version == REVLOGV0: e = (end, len(cdelta), base, link, p1, p2, node) else: e = (self.offset_type(end, 0), len(cdelta), textlen, base, diff --git a/tests/test-basic.out b/tests/test-basic.out --- a/tests/test-basic.out +++ b/tests/test-basic.out @@ -6,6 +6,7 @@ summary: test b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a a +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-clone-pull-corruption.out b/tests/test-clone-pull-corruption.out --- a/tests/test-clone-pull-corruption.out +++ b/tests/test-clone-pull-corruption.out @@ -8,6 +8,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files (run 'hg update' to get a working copy) +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-clone-r.out b/tests/test-clone-r.out --- a/tests/test-clone-r.out +++ b/tests/test-clone-r.out @@ -17,6 +17,7 @@ 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000 +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -27,6 +28,7 @@ adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -37,6 +39,7 @@ adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -47,6 +50,7 @@ adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -57,6 +61,7 @@ adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -67,6 +72,7 @@ adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -77,6 +83,7 @@ adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -87,6 +94,7 @@ adding changesets adding manifests adding file changes added 4 changesets with 5 changes to 2 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -97,6 +105,7 @@ adding changesets adding manifests adding file changes added 5 changesets with 6 changes to 3 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -107,6 +116,7 @@ adding changesets adding manifests adding file changes added 5 changesets with 5 changes to 2 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -119,6 +129,7 @@ adding manifests adding file changes added 4 changesets with 2 changes to 3 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge) +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-clone.out b/tests/test-clone.out --- a/tests/test-clone.out +++ b/tests/test-clone.out @@ -1,10 +1,12 @@ a +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests checking files 1 files, 1 changesets, 1 total revisions a not present +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-copy.out b/tests/test-copy.out --- a/tests/test-copy.out +++ b/tests/test-copy.out @@ -44,6 +44,7 @@ copy: a 566e338d09a089ba737c21e0d3759980 .hg/data/b.d 60b725f10c9c85c70d97880dfe8191b3 bsum 60b725f10c9c85c70d97880dfe8191b3 asum +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-empty.out b/tests/test-empty.out --- a/tests/test-empty.out +++ b/tests/test-empty.out @@ -1,3 +1,4 @@ +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-excessive-merge.out b/tests/test-excessive-merge.out --- a/tests/test-excessive-merge.out +++ b/tests/test-excessive-merge.out @@ -52,6 +52,7 @@ 79d7492df40aa0fa093ec4209be78043c181f094 rev offset length base linkrev nodeid p1 p2 0 0 5 0 0 2ed2a3912a0b 000000000000 000000000000 1 5 6 1 1 79d7492df40a 2ed2a3912a0b 000000000000 +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-filebranch.out b/tests/test-filebranch.out --- a/tests/test-filebranch.out +++ b/tests/test-filebranch.out @@ -65,6 +65,7 @@ 2ffeddde1b65b4827f6746174a145474129fa2ce aa27919ee4303cfd575e1fb932dd64d75aa08be4 644 foo 6128c0f33108e8cfbb4e0824d13ae48b466d7280 644 quux everything should be clean now +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-help.out b/tests/test-help.out --- a/tests/test-help.out +++ b/tests/test-help.out @@ -49,7 +49,6 @@ list of commands (use "hg help -v" to sh copy mark files as copied for the next commit diff diff repository (or selected files) export dump the header and diffs for one or more changesets - forget don't add the specified files on the next commit (DEPRECATED) grep search for a pattern in specified files and revisions heads show current repository heads help show help for a given command or all commands @@ -92,7 +91,6 @@ list of commands (use "hg help -v" to sh copy mark files as copied for the next commit diff diff repository (or selected files) export dump the header and diffs for one or more changesets - forget don't add the specified files on the next commit (DEPRECATED) grep search for a pattern in specified files and revisions heads show current repository heads help show help for a given command or all commands diff --git a/tests/test-nested-repo.out b/tests/test-nested-repo.out --- a/tests/test-nested-repo.out +++ b/tests/test-nested-repo.out @@ -4,6 +4,5 @@ # should print A b/x A b/x # should forget b/x -(the forget command is deprecated; use revert instead) forgetting b/x # should print nothing diff --git a/tests/test-permissions.out b/tests/test-permissions.out --- a/tests/test-permissions.out +++ b/tests/test-permissions.out @@ -1,13 +1,16 @@ +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests checking files 1 files, 1 changesets, 1 total revisions +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests checking files verify failed +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-pull-permission.out b/tests/test-pull-permission.out --- a/tests/test-pull-permission.out +++ b/tests/test-pull-permission.out @@ -3,6 +3,7 @@ adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-pull-pull-corruption.out b/tests/test-pull-pull-corruption.out --- a/tests/test-pull-pull-corruption.out +++ b/tests/test-pull-pull-corruption.out @@ -17,6 +17,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge) +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-pull-pull-corruption2.out b/tests/test-pull-pull-corruption2.out --- a/tests/test-pull-pull-corruption2.out +++ b/tests/test-pull-pull-corruption2.out @@ -10,11 +10,13 @@ adding changesets adding manifests adding file changes added 10 changesets with 10 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests checking files 1 files, 10 changesets, 10 total revisions +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-pull.out b/tests/test-pull.out --- a/tests/test-pull.out +++ b/tests/test-pull.out @@ -1,4 +1,5 @@ adding foo +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -9,6 +10,7 @@ adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-push-r.out b/tests/test-push-r.out --- a/tests/test-push-r.out +++ b/tests/test-push-r.out @@ -17,6 +17,7 @@ 4 192 58 3 6 de68e904d169 626a32663c2f 000000000000 5 250 68 3 7 3b45cc2ab868 de68e904d169 000000000000 6 318 54 6 8 24d86153a002 f54c32f13478 000000000000 +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -28,6 +29,7 @@ adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -39,6 +41,7 @@ adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -50,6 +53,7 @@ adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -61,6 +65,7 @@ adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -72,6 +77,7 @@ adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -83,6 +89,7 @@ adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -94,6 +101,7 @@ adding changesets adding manifests adding file changes added 4 changesets with 5 changes to 2 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -105,6 +113,7 @@ adding changesets adding manifests adding file changes added 5 changesets with 6 changes to 3 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -116,6 +125,7 @@ adding changesets adding manifests adding file changes added 5 changesets with 5 changes to 2 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -128,6 +138,7 @@ adding manifests adding file changes added 4 changesets with 2 changes to 3 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge) +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-simple-update.out b/tests/test-simple-update.out --- a/tests/test-simple-update.out +++ b/tests/test-simple-update.out @@ -1,4 +1,5 @@ adding foo +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -11,6 +12,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files (run 'hg update' to get a working copy) +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-ssh.out b/tests/test-ssh.out --- a/tests/test-ssh.out +++ b/tests/test-ssh.out @@ -6,6 +6,7 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files # verify +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -48,6 +49,7 @@ user: test date: Mon Jan 12 13:46:40 1970 +0000 summary: add +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-static-http.out b/tests/test-static-http.out --- a/tests/test-static-http.out +++ b/tests/test-static-http.out @@ -12,6 +12,7 @@ adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests diff --git a/tests/test-undo.out b/tests/test-undo.out --- a/tests/test-undo.out +++ b/tests/test-undo.out @@ -1,3 +1,4 @@ +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests @@ -10,6 +11,7 @@ date: Mon Jan 12 13:46:40 1970 +0 summary: test rolling back last transaction +repository uses revlog format 0 checking changesets checking manifests crosschecking files in changesets and manifests