diff --git a/hgext/shelve.py b/hgext/shelve.py index abcf500d527c5f0a82a7363f9a48f4e7482f3566_aGdleHQvc2hlbHZlLnB5..905b66681004d63d53061d06e15a719cc672bb60_aGdleHQvc2hlbHZlLnB5 100644 --- a/hgext/shelve.py +++ b/hgext/shelve.py @@ -594,6 +594,6 @@ for chunk, label in patch.diffstatui(difflines, width=width): ui.write(chunk, label=label) -def patchcmds(ui, repo, pats, opts, subcommand): +def patchcmds(ui, repo, pats, opts): """subcommand that displays shelves""" if len(pats) == 0: @@ -598,6 +598,11 @@ """subcommand that displays shelves""" if len(pats) == 0: - raise error.Abort(_("--%s expects at least one shelf") % subcommand) + shelves = listshelves(repo) + if not shelves: + raise error.Abort(_("there are no shelves to show")) + mtime, name = shelves[0] + sname = util.split(name)[1] + pats = [sname] for shelfname in pats: if not shelvedfile(repo, shelfname, patchextension).exists(): @@ -1082,10 +1087,8 @@ return deletecmd(ui, repo, pats) elif checkopt('list'): return listcmd(ui, repo, pats, opts) - elif checkopt('patch'): - return patchcmds(ui, repo, pats, opts, subcommand='patch') - elif checkopt('stat'): - return patchcmds(ui, repo, pats, opts, subcommand='stat') + elif checkopt('patch') or checkopt('stat'): + return patchcmds(ui, repo, pats, opts) else: return createcmd(ui, repo, pats, opts) diff --git a/tests/test-shelve.t b/tests/test-shelve.t index abcf500d527c5f0a82a7363f9a48f4e7482f3566_dGVzdHMvdGVzdC1zaGVsdmUudA==..905b66681004d63d53061d06e15a719cc672bb60_dGVzdHMvdGVzdC1zaGVsdmUudA== 100644 --- a/tests/test-shelve.t +++ b/tests/test-shelve.t @@ -1057,4 +1057,8 @@ $ hg shelve --patch default nonexistentshelf abort: cannot find shelf nonexistentshelf [255] + +when the user asks for a patch, we assume they want the most recent shelve if +they don't provide a shelve name + $ hg shelve --patch @@ -1060,5 +1064,26 @@ $ hg shelve --patch - abort: --patch expects at least one shelf + default-01 (*)* changes to: create conflict (glob) + + diff --git a/shelf-patch-b b/shelf-patch-b + new file mode 100644 + --- /dev/null + +++ b/shelf-patch-b + @@ -0,0 +1,1 @@ + +patch b + + $ cd .. + +you shouldn't be able to ask for the patch/stats of the most recent shelve if +there are no shelves + + $ hg init noshelves + $ cd noshelves + + $ hg shelve --patch + abort: there are no shelves to show + [255] + $ hg shelve --stat + abort: there are no shelves to show [255] $ cd ..