diff --git a/mercurial/verify.py b/mercurial/verify.py --- a/mercurial/verify.py +++ b/mercurial/verify.py @@ -199,7 +199,7 @@ def _verify(repo): for f, f2, size in repo.store.datafiles(): if not f: err(None, _("cannot decode filename '%s'") % f2) - elif size > 0: + elif size > 0 or not revlogv1: storefiles.add(f) files = sorted(set(filenodes) | set(filelinkrevs)) diff --git a/tests/revlog-formatv0.py b/tests/revlog-formatv0.py new file mode 100755 --- /dev/null +++ b/tests/revlog-formatv0.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# Copyright 2010 Intevation GmbH +# Author(s): +# Thomas Arendsen Hein +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. + +"""Create a Mercurial repository in revlog format 0 + +changeset: 0:a1ef0b125355 +tag: tip +user: user +date: Thu Jan 01 00:00:00 1970 +0000 +files: empty +description: +empty file +""" + +import os, sys + +files = [ + ('formatv0/.hg/00changelog.i', + '000000000000004400000000000000000000000000000000000000' + '000000000000000000000000000000000000000000000000000000' + '0000a1ef0b125355d27765928be600cfe85784284ab3'), + ('formatv0/.hg/00changelog.d', + '756163613935613961356635353036303562366138343738336237' + '61623536363738616436356635380a757365720a3020300a656d70' + '74790a0a656d7074792066696c65'), + ('formatv0/.hg/00manifest.i', + '000000000000003000000000000000000000000000000000000000' + '000000000000000000000000000000000000000000000000000000' + '0000aca95a9a5f550605b6a84783b7ab56678ad65f58'), + ('formatv0/.hg/00manifest.d', + '75656d707479006238306465356431333837353835343163356630' + '35323635616431343461623966613836643164620a'), + ('formatv0/.hg/data/empty.i', + '000000000000000000000000000000000000000000000000000000' + '000000000000000000000000000000000000000000000000000000' + '0000b80de5d138758541c5f05265ad144ab9fa86d1db'), + ('formatv0/.hg/data/empty.d', + ''), +] + +def makedirs(name): + """recursive directory creation""" + parent = os.path.dirname(name) + if parent: + makedirs(parent) + os.mkdir(name) + +makedirs(os.path.join(*'formatv0/.hg/data'.split('/'))) + +for name, data in files: + f = open(name, 'wb') + f.write(data.decode('hex')) + f.close() + +sys.exit(0) diff --git a/tests/test-verify.t b/tests/test-verify.t --- a/tests/test-verify.t +++ b/tests/test-verify.t @@ -84,4 +84,18 @@ test revlog corruption 1 integrity errors encountered! (first damaged changeset appears to be 0) + $ cd .. + +test revlog format 0 + + $ "$TESTDIR/revlog-formatv0.py" + $ cd formatv0 + $ hg verify + repository uses revlog format 0 + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 1 files, 1 changesets, 1 total revisions + $ exit 0