# HG changeset patch # User Brendan Cully # Date 1182795207 25200 # Node ID c29ee52e0b68e7a272802b5788ecfdf55b2aeb31 # Parent f49fcbb325bc9bcc1b71c89df7bb56aa108c31c6 mq: support qnew -I/-X and file name lists diff -r f49fcbb325bc -r c29ee52e0b68 hgext/mq.py --- a/hgext/mq.py Mon Jun 25 10:34:53 2007 -0700 +++ b/hgext/mq.py Mon Jun 25 11:13:27 2007 -0700 @@ -596,10 +596,17 @@ else: raise util.Abort(_("local changes found")) return m, a, r, d - def new(self, repo, patch, msg=None, force=None): + + def new(self, repo, patch, *pats, **opts): + msg = opts.get('msg') + force = opts.get('force') if os.path.exists(self.join(patch)): raise util.Abort(_('patch "%s" already exists') % patch) - m, a, r, d = self.check_localchanges(repo, force) + if opts.get('include') or opts.get('exclude') or pats: + fns, match, anypats = cmdutil.matchpats(repo, pats, opts) + m, a, r, d = repo.status(files=fns, match=match)[:4] + else: + m, a, r, d = self.check_localchanges(repo, force) commitfiles = m + a + r self.check_toppatch(repo) wlock = repo.wlock() @@ -1546,13 +1553,15 @@ return q.qseries(repo, start=l-2, length=1, status='A', summary=opts.get('summary')) -def new(ui, repo, patch, **opts): +def new(ui, repo, patch, *args, **opts): """create a new patch qnew creates a new patch on top of the currently-applied patch (if any). It will refuse to run if there are any outstanding changes unless -f is specified, in which case the patch will - be initialised with them. + be initialised with them. You may also use -I, -X, and/or a list of + files after the patch name to add only changes to matching files + to the new patch, leaving the rest as uncommitted modifications. -e, -m or -l set the patch header as well as the commit message. If none is specified, the patch header is empty and the @@ -1561,7 +1570,8 @@ message = cmdutil.logmessage(opts) if opts['edit']: message = ui.edit(message, ui.username()) - q.new(repo, patch, msg=message, force=opts['force']) + opts['msg'] = message + q.new(repo, patch, *args, **opts) q.save_dirty() return 0 @@ -2124,9 +2134,11 @@ "qnew": (new, [('e', 'edit', None, _('edit commit message')), - ('f', 'force', None, _('import uncommitted changes into patch')) + ('f', 'force', None, _('import uncommitted changes into patch')), + ('I', 'include', [], _('include names matching the given patterns')), + ('X', 'exclude', [], _('exclude names matching the given patterns')) ] + commands.commitopts, - 'hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH'), + 'hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH [FILE]...'), "qnext": (next, [] + seriesopts, 'hg qnext [-s]'), "qprev": (prev, [] + seriesopts, 'hg qprev [-s]'), "^qpop":