archive: abort on empty repository. Fixes #624.
authorBrendan Cully <brendan@kublai.com>
Tue, 10 Jul 2007 10:06:24 -0700
changeset 5061 a49f2a4d5ff7
parent 5059 8d9bdcbb2b18
child 5062 3d35c8cb5eb4
child 5108 0f594cc36aed
archive: abort on empty repository. Fixes #624.
mercurial/commands.py
tests/test-archive
tests/test-archive.out
--- a/mercurial/commands.py	Thu Aug 02 12:29:10 2007 -0500
+++ b/mercurial/commands.py	Tue Jul 10 10:06:24 2007 -0700
@@ -133,7 +133,10 @@
     The default is the basename of the archive, with suffixes removed.
     '''
 
-    node = repo.changectx(opts['rev']).node()
+    ctx = repo.changectx(opts['rev'])
+    if not ctx:
+        raise util.Abort(_('repository has no revisions'))
+    node = ctx.node()
     dest = cmdutil.make_filename(repo, dest, node)
     if os.path.realpath(dest) == repo.root:
         raise util.Abort(_('repository root cannot be destination'))
--- a/tests/test-archive	Thu Aug 02 12:29:10 2007 -0500
+++ b/tests/test-archive	Tue Jul 10 10:06:24 2007 -0700
@@ -67,3 +67,9 @@
 if [ -f rev-0.tar ]; then
     echo 'rev-0.tar created'
 fi
+
+echo '% empty repo'
+hg init ../empty
+cd ../empty
+hg archive ../test-empty
+exit 0
--- a/tests/test-archive.out	Thu Aug 02 12:29:10 2007 -0500
+++ b/tests/test-archive.out	Tue Jul 10 10:06:24 2007 -0700
@@ -39,3 +39,5 @@
 test-TIP/baz/bletch
 test-TIP/foo
 rev-0.tar created
+% empty repo
+abort: repository has no revisions