diff -r 3b97a93dc137 -r aad28ff87788 hgext/shelve.py --- a/hgext/shelve.py Wed Jul 09 12:30:12 2014 -0500 +++ b/hgext/shelve.py Fri Jun 20 16:15:38 2014 +0900 @@ -675,20 +675,31 @@ ''' cmdutil.checkunfinished(repo) - def checkopt(opt, incompatible): + allowables = [ + ('addremove', 'create'), # 'create' is pseudo action + ('cleanup', 'cleanup'), +# ('date', 'create'), # ignored for passing '--date "0 0"' in tests + ('delete', 'delete'), + ('list', 'list'), + ('message', 'create'), + ('name', 'create'), + ('patch', 'list'), + ('stat', 'list'), + ] + def checkopt(opt): if opts[opt]: - for i in incompatible.split(): - if opts[i]: + for i, allowable in allowables: + if opts[i] and opt != allowable: raise util.Abort(_("options '--%s' and '--%s' may not be " "used together") % (opt, i)) return True - if checkopt('cleanup', 'addremove delete list message name patch stat'): + if checkopt('cleanup'): if pats: raise util.Abort(_("cannot specify names when using '--cleanup'")) return cleanupcmd(ui, repo) - elif checkopt('delete', 'addremove cleanup list message name patch stat'): + elif checkopt('delete'): return deletecmd(ui, repo, pats) - elif checkopt('list', 'addremove cleanup delete message name'): + elif checkopt('list'): return listcmd(ui, repo, pats, opts) else: for i in ('patch', 'stat'):