hgext/mq.py
changeset 10191 99d285ac5da4
parent 10190 9c2c94934f0d
child 10192 8161127a638f
equal deleted inserted replaced
10190:9c2c94934f0d 10191:99d285ac5da4
   769         self._cleanup(realpatches, numrevs, opts.get('keep'))
   769         self._cleanup(realpatches, numrevs, opts.get('keep'))
   770 
   770 
   771     def check_toppatch(self, repo):
   771     def check_toppatch(self, repo):
   772         if len(self.applied) > 0:
   772         if len(self.applied) > 0:
   773             top = bin(self.applied[-1].rev)
   773             top = bin(self.applied[-1].rev)
       
   774             patch = self.applied[-1].name
   774             pp = repo.dirstate.parents()
   775             pp = repo.dirstate.parents()
   775             if top not in pp:
   776             if top not in pp:
   776                 raise util.Abort(_("working directory revision is not qtip"))
   777                 raise util.Abort(_("working directory revision is not qtip"))
   777             return top
   778             return top, patch
   778         return None
   779         return None, None
       
   780 
   779     def check_localchanges(self, repo, force=False, refresh=True):
   781     def check_localchanges(self, repo, force=False, refresh=True):
   780         m, a, r, d = repo.status()[:4]
   782         m, a, r, d = repo.status()[:4]
   781         if m or a or r or d:
   783         if m or a or r or d:
   782             if not force:
   784             if not force:
   783                 if refresh:
   785                 if refresh:
  1123 
  1125 
  1124             self.applied_dirty = 1
  1126             self.applied_dirty = 1
  1125             end = len(self.applied)
  1127             end = len(self.applied)
  1126             rev = bin(self.applied[start].rev)
  1128             rev = bin(self.applied[start].rev)
  1127             if update:
  1129             if update:
  1128                 top = self.check_toppatch(repo)
  1130                 top = self.check_toppatch(repo)[0]
  1129 
  1131 
  1130             try:
  1132             try:
  1131                 heads = repo.changelog.heads(rev)
  1133                 heads = repo.changelog.heads(rev)
  1132             except error.LookupError:
  1134             except error.LookupError:
  1133                 node = short(rev)
  1135                 node = short(rev)
  1172                 self.ui.write(_("patch queue now empty\n"))
  1174                 self.ui.write(_("patch queue now empty\n"))
  1173         finally:
  1175         finally:
  1174             wlock.release()
  1176             wlock.release()
  1175 
  1177 
  1176     def diff(self, repo, pats, opts):
  1178     def diff(self, repo, pats, opts):
  1177         top = self.check_toppatch(repo)
  1179         top, patch = self.check_toppatch(repo)
  1178         if not top:
  1180         if not top:
  1179             self.ui.write(_("no patches applied\n"))
  1181             self.ui.write(_("no patches applied\n"))
  1180             return
  1182             return
  1181         qp = self.qparents(repo, top)
  1183         qp = self.qparents(repo, top)
  1182         if opts.get('reverse'):
  1184         if opts.get('reverse'):
  1183             node1, node2 = None, qp
  1185             node1, node2 = None, qp
  1184         else:
  1186         else:
  1185             node1, node2 = qp, None
  1187             node1, node2 = qp, None
  1186         diffopts = self.diffopts(opts)
  1188         diffopts = self.diffopts(opts, patch)
  1187         self.printdiff(repo, diffopts, node1, node2, files=pats, opts=opts)
  1189         self.printdiff(repo, diffopts, node1, node2, files=pats, opts=opts)
  1188 
  1190 
  1189     def refresh(self, repo, pats=None, **opts):
  1191     def refresh(self, repo, pats=None, **opts):
  1190         if len(self.applied) == 0:
  1192         if len(self.applied) == 0:
  1191             self.ui.write(_("no patches applied\n"))
  1193             self.ui.write(_("no patches applied\n"))
  2056 
  2058 
  2057     q = repo.mq
  2059     q = repo.mq
  2058 
  2060 
  2059     if not files:
  2061     if not files:
  2060         raise util.Abort(_('qfold requires at least one patch name'))
  2062         raise util.Abort(_('qfold requires at least one patch name'))
  2061     if not q.check_toppatch(repo):
  2063     if not q.check_toppatch(repo)[0]:
  2062         raise util.Abort(_('No patches applied'))
  2064         raise util.Abort(_('No patches applied'))
  2063     q.check_localchanges(repo)
  2065     q.check_localchanges(repo)
  2064 
  2066 
  2065     message = cmdutil.logmessage(opts)
  2067     message = cmdutil.logmessage(opts)
  2066     if opts['edit']:
  2068     if opts['edit']: