# HG changeset patch # User Danny Hooper # Date 1531775088 25200 # Node ID 905b66681004d63d53061d06e15a719cc672bb60 # Parent abcf500d527c5f0a82a7363f9a48f4e7482f3566 shelve: pick the most recent shelve if none specified for --patch/--stat Differential Revision: https://phab.mercurial-scm.org/D3950 diff -r abcf500d527c -r 905b66681004 hgext/shelve.py --- a/hgext/shelve.py Fri Jul 13 13:48:56 2018 -0700 +++ b/hgext/shelve.py Mon Jul 16 14:04:48 2018 -0700 @@ -594,10 +594,15 @@ 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: - 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 -r abcf500d527c -r 905b66681004 tests/test-shelve.t --- a/tests/test-shelve.t Fri Jul 13 13:48:56 2018 -0700 +++ b/tests/test-shelve.t Mon Jul 16 14:04:48 2018 -0700 @@ -1057,8 +1057,33 @@ $ 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 - 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 ..