equal
deleted
inserted
replaced
265 except IOError: |
265 except IOError: |
266 curpath = os.path.join(path, 'patches') |
266 curpath = os.path.join(path, 'patches') |
267 self.path = patchdir or curpath |
267 self.path = patchdir or curpath |
268 self.opener = scmutil.opener(self.path) |
268 self.opener = scmutil.opener(self.path) |
269 self.ui = ui |
269 self.ui = ui |
270 self.applied_dirty = 0 |
270 self.applieddirty = 0 |
271 self.series_dirty = 0 |
271 self.series_dirty = 0 |
272 self.added = [] |
272 self.added = [] |
273 self.seriespath = "series" |
273 self.seriespath = "series" |
274 self.statuspath = "status" |
274 self.statuspath = "status" |
275 self.guardspath = "guards" |
275 self.guardspath = "guards" |
319 |
319 |
320 def invalidate(self): |
320 def invalidate(self): |
321 for a in 'applied fullseries series seriesguards'.split(): |
321 for a in 'applied fullseries series seriesguards'.split(): |
322 if a in self.__dict__: |
322 if a in self.__dict__: |
323 delattr(self, a) |
323 delattr(self, a) |
324 self.applied_dirty = 0 |
324 self.applieddirty = 0 |
325 self.series_dirty = 0 |
325 self.series_dirty = 0 |
326 self.guardsdirty = False |
326 self.guardsdirty = False |
327 self.activeguards = None |
327 self.activeguards = None |
328 |
328 |
329 def diffopts(self, opts={}, patchfn=None): |
329 def diffopts(self, opts={}, patchfn=None): |
493 def write_list(items, path): |
493 def write_list(items, path): |
494 fp = self.opener(path, 'w') |
494 fp = self.opener(path, 'w') |
495 for i in items: |
495 for i in items: |
496 fp.write("%s\n" % i) |
496 fp.write("%s\n" % i) |
497 fp.close() |
497 fp.close() |
498 if self.applied_dirty: |
498 if self.applieddirty: |
499 write_list(map(str, self.applied), self.statuspath) |
499 write_list(map(str, self.applied), self.statuspath) |
500 if self.series_dirty: |
500 if self.series_dirty: |
501 write_list(self.fullseries, self.seriespath) |
501 write_list(self.fullseries, self.seriespath) |
502 if self.guardsdirty: |
502 if self.guardsdirty: |
503 write_list(self.activeguards, self.guardspath) |
503 write_list(self.activeguards, self.guardspath) |
585 # |
585 # |
586 pname = ".hg.patches.merge.marker" |
586 pname = ".hg.patches.merge.marker" |
587 n = repo.commit('[mq]: merge marker', force=True) |
587 n = repo.commit('[mq]: merge marker', force=True) |
588 self.removeundo(repo) |
588 self.removeundo(repo) |
589 self.applied.append(statusentry(n, pname)) |
589 self.applied.append(statusentry(n, pname)) |
590 self.applied_dirty = 1 |
590 self.applieddirty = 1 |
591 |
591 |
592 head = self.qparents(repo) |
592 head = self.qparents(repo) |
593 |
593 |
594 for patch in series: |
594 for patch in series: |
595 patch = mergeq.lookup(patch, strict=True) |
595 patch = mergeq.lookup(patch, strict=True) |
606 return (1, None) |
606 return (1, None) |
607 rev = info[1] |
607 rev = info[1] |
608 err, head = self.mergeone(repo, mergeq, head, patch, rev, diffopts) |
608 err, head = self.mergeone(repo, mergeq, head, patch, rev, diffopts) |
609 if head: |
609 if head: |
610 self.applied.append(statusentry(head, patch)) |
610 self.applied.append(statusentry(head, patch)) |
611 self.applied_dirty = 1 |
611 self.applieddirty = 1 |
612 if err: |
612 if err: |
613 return (err, head) |
613 return (err, head) |
614 self.savedirty() |
614 self.savedirty() |
615 return (0, head) |
615 return (0, head) |
616 |
616 |
740 os.unlink(self.join(p)) |
740 os.unlink(self.join(p)) |
741 |
741 |
742 if numrevs: |
742 if numrevs: |
743 qfinished = self.applied[:numrevs] |
743 qfinished = self.applied[:numrevs] |
744 del self.applied[:numrevs] |
744 del self.applied[:numrevs] |
745 self.applied_dirty = 1 |
745 self.applieddirty = 1 |
746 |
746 |
747 unknown = [] |
747 unknown = [] |
748 |
748 |
749 for (i, p) in sorted([(self.findseries(p), p) for p in patches], |
749 for (i, p) in sorted([(self.findseries(p), p) for p in patches], |
750 reverse=True): |
750 reverse=True): |
947 try: |
947 try: |
948 self.fullseries[insert:insert] = [patchfn] |
948 self.fullseries[insert:insert] = [patchfn] |
949 self.applied.append(statusentry(n, patchfn)) |
949 self.applied.append(statusentry(n, patchfn)) |
950 self.parseseries() |
950 self.parseseries() |
951 self.series_dirty = 1 |
951 self.series_dirty = 1 |
952 self.applied_dirty = 1 |
952 self.applieddirty = 1 |
953 if msg: |
953 if msg: |
954 msg = msg + "\n\n" |
954 msg = msg + "\n\n" |
955 p.write(msg) |
955 p.write(msg) |
956 if commitfiles: |
956 if commitfiles: |
957 parent = self.qparents(repo, n) |
957 parent = self.qparents(repo, n) |
1160 del self.fullseries[index] |
1160 del self.fullseries[index] |
1161 self.fullseries.insert(start, fullpatch) |
1161 self.fullseries.insert(start, fullpatch) |
1162 self.parseseries() |
1162 self.parseseries() |
1163 self.series_dirty = 1 |
1163 self.series_dirty = 1 |
1164 |
1164 |
1165 self.applied_dirty = 1 |
1165 self.applieddirty = 1 |
1166 if start > 0: |
1166 if start > 0: |
1167 self.checktoppatch(repo) |
1167 self.checktoppatch(repo) |
1168 if not patch: |
1168 if not patch: |
1169 patch = self.series[start] |
1169 patch = self.series[start] |
1170 end = start + 1 |
1170 end = start + 1 |
1263 if entry.node in parents: |
1263 if entry.node in parents: |
1264 needupdate = True |
1264 needupdate = True |
1265 break |
1265 break |
1266 update = needupdate |
1266 update = needupdate |
1267 |
1267 |
1268 self.applied_dirty = 1 |
1268 self.applieddirty = 1 |
1269 end = len(self.applied) |
1269 end = len(self.applied) |
1270 rev = self.applied[start].node |
1270 rev = self.applied[start].node |
1271 if update: |
1271 if update: |
1272 top = self.checktoppatch(repo)[0] |
1272 top = self.checktoppatch(repo)[0] |
1273 |
1273 |
1492 user = ph.user or changes[1] |
1492 user = ph.user or changes[1] |
1493 |
1493 |
1494 # assumes strip can roll itself back if interrupted |
1494 # assumes strip can roll itself back if interrupted |
1495 repo.dirstate.setparents(*cparents) |
1495 repo.dirstate.setparents(*cparents) |
1496 self.applied.pop() |
1496 self.applied.pop() |
1497 self.applied_dirty = 1 |
1497 self.applieddirty = 1 |
1498 self.strip(repo, [top], update=False, |
1498 self.strip(repo, [top], update=False, |
1499 backup='strip') |
1499 backup='strip') |
1500 except: |
1500 except: |
1501 repo.dirstate.invalidate() |
1501 repo.dirstate.invalidate() |
1502 raise |
1502 raise |
1640 self.ui.warn(_("restoring status: %s\n") % lines[0]) |
1640 self.ui.warn(_("restoring status: %s\n") % lines[0]) |
1641 self.fullseries = series |
1641 self.fullseries = series |
1642 self.applied = applied |
1642 self.applied = applied |
1643 self.parseseries() |
1643 self.parseseries() |
1644 self.series_dirty = 1 |
1644 self.series_dirty = 1 |
1645 self.applied_dirty = 1 |
1645 self.applieddirty = 1 |
1646 heads = repo.changelog.heads() |
1646 heads = repo.changelog.heads() |
1647 if delete: |
1647 if delete: |
1648 if rev not in heads: |
1648 if rev not in heads: |
1649 self.ui.warn(_("save entry has children, leaving it alone\n")) |
1649 self.ui.warn(_("save entry has children, leaving it alone\n")) |
1650 else: |
1650 else: |
1688 n = repo.commit(msg, force=True) |
1688 n = repo.commit(msg, force=True) |
1689 if not n: |
1689 if not n: |
1690 self.ui.warn(_("repo commit failed\n")) |
1690 self.ui.warn(_("repo commit failed\n")) |
1691 return 1 |
1691 return 1 |
1692 self.applied.append(statusentry(n, '.hg.patches.save.line')) |
1692 self.applied.append(statusentry(n, '.hg.patches.save.line')) |
1693 self.applied_dirty = 1 |
1693 self.applieddirty = 1 |
1694 self.removeundo(repo) |
1694 self.removeundo(repo) |
1695 |
1695 |
1696 def fullseriesend(self): |
1696 def fullseriesend(self): |
1697 if self.applied: |
1697 if self.applied: |
1698 p = self.applied[-1].name |
1698 p = self.applied[-1].name |
1799 self.applied.insert(0, se) |
1799 self.applied.insert(0, se) |
1800 |
1800 |
1801 self.added.append(patchname) |
1801 self.added.append(patchname) |
1802 patchname = None |
1802 patchname = None |
1803 self.parseseries() |
1803 self.parseseries() |
1804 self.applied_dirty = 1 |
1804 self.applieddirty = 1 |
1805 self.series_dirty = True |
1805 self.series_dirty = True |
1806 |
1806 |
1807 for i, filename in enumerate(files): |
1807 for i, filename in enumerate(files): |
1808 if existing: |
1808 if existing: |
1809 if filename == '-': |
1809 if filename == '-': |
2600 q.series_dirty = 1 |
2600 q.series_dirty = 1 |
2601 |
2601 |
2602 info = q.isapplied(patch) |
2602 info = q.isapplied(patch) |
2603 if info: |
2603 if info: |
2604 q.applied[info[0]] = statusentry(info[1], name) |
2604 q.applied[info[0]] = statusentry(info[1], name) |
2605 q.applied_dirty = 1 |
2605 q.applieddirty = 1 |
2606 |
2606 |
2607 destdir = os.path.dirname(absdest) |
2607 destdir = os.path.dirname(absdest) |
2608 if not os.path.isdir(destdir): |
2608 if not os.path.isdir(destdir): |
2609 os.makedirs(destdir) |
2609 os.makedirs(destdir) |
2610 util.rename(q.join(patch), absdest) |
2610 util.rename(q.join(patch), absdest) |
2743 q = repo.mq |
2743 q = repo.mq |
2744 if q.applied: |
2744 if q.applied: |
2745 # refresh queue state if we're about to strip |
2745 # refresh queue state if we're about to strip |
2746 # applied patches |
2746 # applied patches |
2747 if cl.rev(repo.lookup('qtip')) in strippedrevs: |
2747 if cl.rev(repo.lookup('qtip')) in strippedrevs: |
2748 q.applied_dirty = True |
2748 q.applieddirty = True |
2749 start = 0 |
2749 start = 0 |
2750 end = len(q.applied) |
2750 end = len(q.applied) |
2751 for i, statusentry in enumerate(q.applied): |
2751 for i, statusentry in enumerate(q.applied): |
2752 if statusentry.node in rootnodes: |
2752 if statusentry.node in rootnodes: |
2753 # if one of the stripped roots is an applied |
2753 # if one of the stripped roots is an applied |