export: catch exporting empty revsets (issue3353) stable
authorThomas Arendsen Hein <thomas@intevation.de>
Wed, 04 Apr 2012 12:31:31 +0200
branchstable
changeset 16357 8ca7187d479f
parent 16355 cb1475e7e5a2
child 16372 709924be3d04
export: catch exporting empty revsets (issue3353) Additionally add tests for empty revsets and unknown revisions.
mercurial/commands.py
tests/test-export.t
--- a/mercurial/commands.py	Wed Apr 04 11:18:42 2012 +0200
+++ b/mercurial/commands.py	Wed Apr 04 12:31:31 2012 +0200
@@ -2413,9 +2413,9 @@
     Returns 0 on success.
     """
     changesets += tuple(opts.get('rev', []))
-    if not changesets:
+    revs = scmutil.revrange(repo, changesets)
+    if not revs:
         raise util.Abort(_("export requires at least one changeset"))
-    revs = scmutil.revrange(repo, changesets)
     if len(revs) > 1:
         ui.note(_('exporting patches:\n'))
     else:
--- a/tests/test-export.t	Wed Apr 04 11:18:42 2012 +0200
+++ b/tests/test-export.t	Wed Apr 04 12:31:31 2012 +0200
@@ -129,3 +129,17 @@
   exporting patch:
   ____________0123456789_______ABCDEFGHIJKLMNOPQRSTUVWXYZ______abcdefghijklmnopqrstuvwxyz____.patch
 
+Catch exporting unknown revisions (especially empty revsets, see issue3353)
+
+  $ hg export
+  abort: export requires at least one changeset
+  [255]
+  $ hg export ""
+  hg: parse error: empty query
+  [255]
+  $ hg export 999
+  abort: unknown revision '999'!
+  [255]
+  $ hg export "not all()"
+  abort: export requires at least one changeset
+  [255]