changeset 4853:6dc0094c0827

archive: abort on empty repository. Fixes #624.
author Brendan Cully <brendan@kublai.com>
date Tue, 10 Jul 2007 10:06:24 -0700
parents cba10652a901
children fc389dcc33f5
files mercurial/commands.py tests/test-archive tests/test-archive.out
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -142,7 +142,10 @@ def archive(ui, repo, dest, **opts):
     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
+++ b/tests/test-archive
@@ -63,3 +63,9 @@ hg archive -t zip -r 2 test.zip
 unzip -t test.zip
 
 hg archive -t tar - | tar tf - | sed "s/$QTIP/TIP/"
+
+echo '% empty repo'
+hg init ../empty
+cd ../empty
+hg archive ../test-empty
+exit 0
\ No newline at end of file
--- a/tests/test-archive.out
+++ b/tests/test-archive.out
@@ -38,3 +38,5 @@ test-TIP/.hg_archival.txt
 test-TIP/bar
 test-TIP/baz/bletch
 test-TIP/foo
+% empty repo
+abort: repository has no revisions