diff --git a/mercurial/verify.py b/mercurial/verify.py --- a/mercurial/verify.py +++ b/mercurial/verify.py @@ -28,6 +28,9 @@ def _verify(repo): cl = repo.changelog mf = repo.manifest + if not repo.cancopy(): + raise util.Abort(_("cannot verify bundle or remote repos")) + def err(linkrev, msg, filename=None): if linkrev != None: badrevs[linkrev] = True diff --git a/tests/test-bundle b/tests/test-bundle --- a/tests/test-bundle +++ b/tests/test-bundle @@ -129,3 +129,14 @@ hg bundle ../bundle.hg ../orig cd ../orig hg incoming ../bundle.hg cd .. + +# test for http://www.selenic.com/mercurial/bts/issue1144 +echo "===== test that verify bundle does not traceback" +# partial history bundle, fails w/ unkown parent +hg -R bundle.hg verify +# full history bundle, refuses to verify non-local repo +hg -R all.hg verify +# but, regular verify must continue to work +hg -R orig verify + + diff --git a/tests/test-bundle.out b/tests/test-bundle.out --- a/tests/test-bundle.out +++ b/tests/test-bundle.out @@ -309,3 +309,11 @@ user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: change foo +===== test that verify bundle does not traceback +abort: 00changelog.i@bbd179dfa0a7: unknown parent! +abort: cannot verify bundle or remote repos +checking changesets +checking manifests +crosschecking files in changesets and manifests +checking files +2 files, 2 changesets, 2 total revisions