hgext/mq.py
changeset 2694 0fb28dbf0dc7
parent 2682 4e2dc5c16e61
child 2696 be273f6074de
equal deleted inserted replaced
2693:8342c0286184 2694:0fb28dbf0dc7
   440         p.close()
   440         p.close()
   441         wlock = None
   441         wlock = None
   442         r = self.qrepo()
   442         r = self.qrepo()
   443         if r: r.add([patch])
   443         if r: r.add([patch])
   444         if commitfiles:
   444         if commitfiles:
   445             self.refresh(repo, short=True)
   445             self.refresh(repo, msg=None, short=True)
   446 
   446 
   447     def strip(self, repo, rev, update=True, backup="all", wlock=None):
   447     def strip(self, repo, rev, update=True, backup="all", wlock=None):
   448         def limitheads(chlog, stop):
   448         def limitheads(chlog, stop):
   449             """return the list of all nodes that have no children"""
   449             """return the list of all nodes that have no children"""
   450             p = {}
   450             p = {}
   737             self.ui.write("No patches applied\n")
   737             self.ui.write("No patches applied\n")
   738             return
   738             return
   739         qp = self.qparents(repo, top)
   739         qp = self.qparents(repo, top)
   740         commands.dodiff(sys.stdout, self.ui, repo, qp, None, files)
   740         commands.dodiff(sys.stdout, self.ui, repo, qp, None, files)
   741 
   741 
   742     def refresh(self, repo, short=False):
   742     def refresh(self, repo, msg=None, short=False):
   743         if len(self.applied) == 0:
   743         if len(self.applied) == 0:
   744             self.ui.write("No patches applied\n")
   744             self.ui.write("No patches applied\n")
   745             return
   745             return
   746         wlock = repo.wlock()
   746         wlock = repo.wlock()
   747         self.check_toppatch(repo)
   747         self.check_toppatch(repo)
   820             repo.dirstate.update(a, 'a')
   820             repo.dirstate.update(a, 'a')
   821             repo.dirstate.update(r, 'r')
   821             repo.dirstate.update(r, 'r')
   822             repo.dirstate.update(c, 'n')
   822             repo.dirstate.update(c, 'n')
   823             repo.dirstate.forget(forget)
   823             repo.dirstate.forget(forget)
   824 
   824 
   825             if not message:
   825             if not msg:
   826                 message = "patch queue: %s\n" % patch
   826                 if not message:
       
   827                     message = "patch queue: %s\n" % patch
       
   828                 else:
       
   829                     message = "\n".join(message)
   827             else:
   830             else:
   828                 message = "\n".join(message)
   831                 message = msg
       
   832 
   829             self.strip(repo, top, update=False, backup='strip', wlock=wlock)
   833             self.strip(repo, top, update=False, backup='strip', wlock=wlock)
   830             n = repo.commit(filelist, message, changes[1], force=1, wlock=wlock)
   834             n = repo.commit(filelist, message, changes[1], force=1, wlock=wlock)
   831             self.applied[-1] = revlog.hex(n) + ':' + patch
   835             self.applied[-1] = revlog.hex(n) + ':' + patch
   832             self.applied_dirty = 1
   836             self.applied_dirty = 1
   833         else:
   837         else:
  1142     return 0
  1146     return 0
  1143 
  1147 
  1144 def new(ui, repo, patch, **opts):
  1148 def new(ui, repo, patch, **opts):
  1145     """create a new patch"""
  1149     """create a new patch"""
  1146     q = repomap[repo]
  1150     q = repomap[repo]
  1147     q.new(repo, patch, msg=opts['message'], force=opts['force'])
  1151     message=commands.logmessage(**opts)
       
  1152     q.new(repo, patch, msg=message, force=opts['force'])
  1148     q.save_dirty()
  1153     q.save_dirty()
  1149     return 0
  1154     return 0
  1150 
  1155 
  1151 def refresh(ui, repo, **opts):
  1156 def refresh(ui, repo, **opts):
  1152     """update the current patch"""
  1157     """update the current patch"""
  1153     q = repomap[repo]
  1158     q = repomap[repo]
  1154     q.refresh(repo, short=opts['short'])
  1159     message=commands.logmessage(**opts)
       
  1160     q.refresh(repo, msg=message, short=opts['short'])
  1155     q.save_dirty()
  1161     q.save_dirty()
  1156     return 0
  1162     return 0
  1157 
  1163 
  1158 def diff(ui, repo, *files, **opts):
  1164 def diff(ui, repo, *files, **opts):
  1159     """diff of the current patch"""
  1165     """diff of the current patch"""
  1232     return 0
  1238     return 0
  1233 
  1239 
  1234 def save(ui, repo, **opts):
  1240 def save(ui, repo, **opts):
  1235     """save current queue state"""
  1241     """save current queue state"""
  1236     q = repomap[repo]
  1242     q = repomap[repo]
  1237     ret = q.save(repo, msg=opts['message'])
  1243     message=commands.logmessage(**opts)
       
  1244     ret = q.save(repo, msg=message)
  1238     if ret:
  1245     if ret:
  1239         return ret
  1246         return ret
  1240     q.save_dirty()
  1247     q.save_dirty()
  1241     if opts['copy']:
  1248     if opts['copy']:
  1242         path = q.path
  1249         path = q.path
  1323         (init,
  1330         (init,
  1324          [('c', 'create-repo', None, 'create queue repository')],
  1331          [('c', 'create-repo', None, 'create queue repository')],
  1325          'hg qinit [-c]'),
  1332          'hg qinit [-c]'),
  1326     "qnew":
  1333     "qnew":
  1327         (new,
  1334         (new,
  1328          [('m', 'message', '', 'commit message'),
  1335          [('m', 'message', '', _('use <text> as commit message')),
       
  1336           ('l', 'logfile', '', _('read the commit message from <file>')),
  1329           ('f', 'force', None, 'force')],
  1337           ('f', 'force', None, 'force')],
  1330          'hg qnew [-m TEXT] [-f] PATCH'),
  1338          'hg qnew [-m TEXT] [-l FILE] [-f] PATCH'),
  1331     "qnext": (next, [], 'hg qnext'),
  1339     "qnext": (next, [], 'hg qnext'),
  1332     "qprev": (prev, [], 'hg qprev'),
  1340     "qprev": (prev, [], 'hg qprev'),
  1333     "^qpop":
  1341     "^qpop":
  1334         (pop,
  1342         (pop,
  1335          [('a', 'all', None, 'pop all patches'),
  1343          [('a', 'all', None, 'pop all patches'),
  1344           ('m', 'merge', None, 'merge from another queue'),
  1352           ('m', 'merge', None, 'merge from another queue'),
  1345           ('n', 'name', '', 'merge queue name')],
  1353           ('n', 'name', '', 'merge queue name')],
  1346          'hg qpush [-f] [-l] [-a] [-m] [-n NAME] [PATCH | INDEX]'),
  1354          'hg qpush [-f] [-l] [-a] [-m] [-n NAME] [PATCH | INDEX]'),
  1347     "^qrefresh":
  1355     "^qrefresh":
  1348         (refresh,
  1356         (refresh,
  1349          [('s', 'short', None, 'short refresh')],
  1357          [('m', 'message', '', _('change commit message with <text>')),
  1350          'hg qrefresh [-s]'),
  1358           ('l', 'logfile', '', _('change commit message with <file> content')),
       
  1359           ('s', 'short', None, 'short refresh')],
       
  1360          'hg qrefresh [-m TEXT] [-l FILE] [-s]'),
  1351     "qrestore":
  1361     "qrestore":
  1352         (restore,
  1362         (restore,
  1353          [('d', 'delete', None, 'delete save entry'),
  1363          [('d', 'delete', None, 'delete save entry'),
  1354           ('u', 'update', None, 'update queue working dir')],
  1364           ('u', 'update', None, 'update queue working dir')],
  1355          'hg qrestore [-d] [-u] REV'),
  1365          'hg qrestore [-d] [-u] REV'),
  1356     "qsave":
  1366     "qsave":
  1357         (save,
  1367         (save,
  1358          [('m', 'message', '', 'commit message'),
  1368          [('m', 'message', '', _('use <text> as commit message')),
       
  1369           ('l', 'logfile', '', _('read the commit message from <file>')),
  1359           ('c', 'copy', None, 'copy patch directory'),
  1370           ('c', 'copy', None, 'copy patch directory'),
  1360           ('n', 'name', '', 'copy directory name'),
  1371           ('n', 'name', '', 'copy directory name'),
  1361           ('e', 'empty', None, 'clear queue status file'),
  1372           ('e', 'empty', None, 'clear queue status file'),
  1362           ('f', 'force', None, 'force copy')],
  1373           ('f', 'force', None, 'force copy')],
  1363          'hg qsave [-m TEXT] [-c] [-n NAME] [-e] [-f]'),
  1374          'hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]'),
  1364     "qseries":
  1375     "qseries":
  1365         (series,
  1376         (series,
  1366          [('m', 'missing', None, 'print patches not in series')],
  1377          [('m', 'missing', None, 'print patches not in series')],
  1367          'hg qseries [-m]'),
  1378          'hg qseries [-m]'),
  1368     "^strip":
  1379     "^strip":