hgext/mq.py
changeset 4713 c29ee52e0b68
parent 4712 f49fcbb325bc
child 4722 487943b52a6c
equal deleted inserted replaced
4712:f49fcbb325bc 4713:c29ee52e0b68
   594                 if refresh:
   594                 if refresh:
   595                     raise util.Abort(_("local changes found, refresh first"))
   595                     raise util.Abort(_("local changes found, refresh first"))
   596                 else:
   596                 else:
   597                     raise util.Abort(_("local changes found"))
   597                     raise util.Abort(_("local changes found"))
   598         return m, a, r, d
   598         return m, a, r, d
   599     def new(self, repo, patch, msg=None, force=None):
   599 
       
   600     def new(self, repo, patch, *pats, **opts):
       
   601         msg = opts.get('msg')
       
   602         force = opts.get('force')
   600         if os.path.exists(self.join(patch)):
   603         if os.path.exists(self.join(patch)):
   601             raise util.Abort(_('patch "%s" already exists') % patch)
   604             raise util.Abort(_('patch "%s" already exists') % patch)
   602         m, a, r, d = self.check_localchanges(repo, force)
   605         if opts.get('include') or opts.get('exclude') or pats:
       
   606             fns, match, anypats = cmdutil.matchpats(repo, pats, opts)
       
   607             m, a, r, d = repo.status(files=fns, match=match)[:4]
       
   608         else:
       
   609             m, a, r, d = self.check_localchanges(repo, force)
   603         commitfiles = m + a + r
   610         commitfiles = m + a + r
   604         self.check_toppatch(repo)
   611         self.check_toppatch(repo)
   605         wlock = repo.wlock()
   612         wlock = repo.wlock()
   606         insert = self.full_series_end()
   613         insert = self.full_series_end()
   607         if msg:
   614         if msg:
  1544         ui.write("No patches applied\n")
  1551         ui.write("No patches applied\n")
  1545         return 1
  1552         return 1
  1546     return q.qseries(repo, start=l-2, length=1, status='A',
  1553     return q.qseries(repo, start=l-2, length=1, status='A',
  1547                      summary=opts.get('summary'))
  1554                      summary=opts.get('summary'))
  1548 
  1555 
  1549 def new(ui, repo, patch, **opts):
  1556 def new(ui, repo, patch, *args, **opts):
  1550     """create a new patch
  1557     """create a new patch
  1551 
  1558 
  1552     qnew creates a new patch on top of the currently-applied patch
  1559     qnew creates a new patch on top of the currently-applied patch
  1553     (if any). It will refuse to run if there are any outstanding
  1560     (if any). It will refuse to run if there are any outstanding
  1554     changes unless -f is specified, in which case the patch will
  1561     changes unless -f is specified, in which case the patch will
  1555     be initialised with them.
  1562     be initialised with them. You may also use -I, -X, and/or a list of
       
  1563     files after the patch name to add only changes to matching files
       
  1564     to the new patch, leaving the rest as uncommitted modifications.
  1556 
  1565 
  1557     -e, -m or -l set the patch header as well as the commit message.
  1566     -e, -m or -l set the patch header as well as the commit message.
  1558     If none is specified, the patch header is empty and the
  1567     If none is specified, the patch header is empty and the
  1559     commit message is 'New patch: PATCH'"""
  1568     commit message is 'New patch: PATCH'"""
  1560     q = repo.mq
  1569     q = repo.mq
  1561     message = cmdutil.logmessage(opts)
  1570     message = cmdutil.logmessage(opts)
  1562     if opts['edit']:
  1571     if opts['edit']:
  1563         message = ui.edit(message, ui.username())
  1572         message = ui.edit(message, ui.username())
  1564     q.new(repo, patch, msg=message, force=opts['force'])
  1573     opts['msg'] = message
       
  1574     q.new(repo, patch, *args, **opts)
  1565     q.save_dirty()
  1575     q.save_dirty()
  1566     return 0
  1576     return 0
  1567 
  1577 
  1568 def refresh(ui, repo, *pats, **opts):
  1578 def refresh(ui, repo, *pats, **opts):
  1569     """update the current patch
  1579     """update the current patch
  2122          [('c', 'create-repo', None, 'create queue repository')],
  2132          [('c', 'create-repo', None, 'create queue repository')],
  2123          'hg qinit [-c]'),
  2133          'hg qinit [-c]'),
  2124     "qnew":
  2134     "qnew":
  2125         (new,
  2135         (new,
  2126          [('e', 'edit', None, _('edit commit message')),
  2136          [('e', 'edit', None, _('edit commit message')),
  2127           ('f', 'force', None, _('import uncommitted changes into patch'))
  2137           ('f', 'force', None, _('import uncommitted changes into patch')),
       
  2138           ('I', 'include', [], _('include names matching the given patterns')),
       
  2139           ('X', 'exclude', [], _('exclude names matching the given patterns'))
  2128           ] + commands.commitopts,
  2140           ] + commands.commitopts,
  2129          'hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH'),
  2141          'hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH [FILE]...'),
  2130     "qnext": (next, [] + seriesopts, 'hg qnext [-s]'),
  2142     "qnext": (next, [] + seriesopts, 'hg qnext [-s]'),
  2131     "qprev": (prev, [] + seriesopts, 'hg qprev [-s]'),
  2143     "qprev": (prev, [] + seriesopts, 'hg qprev [-s]'),
  2132     "^qpop":
  2144     "^qpop":
  2133         (pop,
  2145         (pop,
  2134          [('a', 'all', None, 'pop all patches'),
  2146          [('a', 'all', None, 'pop all patches'),