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']: |