equal
deleted
inserted
replaced
71 import sys |
71 import sys |
72 from mercurial.i18n import _ |
72 from mercurial.i18n import _ |
73 from mercurial.node import ( |
73 from mercurial.node import ( |
74 bin, |
74 bin, |
75 hex, |
75 hex, |
76 nullid, |
|
77 nullrev, |
76 nullrev, |
78 short, |
77 short, |
79 ) |
78 ) |
80 from mercurial.pycompat import ( |
79 from mercurial.pycompat import ( |
81 delattr, |
80 delattr, |
906 |
905 |
907 If no parent are managed by mq, p1 is returned. |
906 If no parent are managed by mq, p1 is returned. |
908 """ |
907 """ |
909 if rev is None: |
908 if rev is None: |
910 (p1, p2) = repo.dirstate.parents() |
909 (p1, p2) = repo.dirstate.parents() |
911 if p2 == nullid: |
910 if p2 == repo.nullid: |
912 return p1 |
911 return p1 |
913 if not self.applied: |
912 if not self.applied: |
914 return None |
913 return None |
915 return self.applied[-1].node |
914 return self.applied[-1].node |
916 p1, p2 = repo.changelog.parents(rev) |
915 p1, p2 = repo.changelog.parents(rev) |
917 if p2 != nullid and p2 in [x.node for x in self.applied]: |
916 if p2 != repo.nullid and p2 in [x.node for x in self.applied]: |
918 return p2 |
917 return p2 |
919 return p1 |
918 return p1 |
920 |
919 |
921 def mergepatch(self, repo, mergeq, series, diffopts): |
920 def mergepatch(self, repo, mergeq, series, diffopts): |
922 if not self.applied: |
921 if not self.applied: |
1589 with repo.wlock(): |
1588 with repo.wlock(): |
1590 heads = [] |
1589 heads = [] |
1591 for hs in repo.branchmap().iterheads(): |
1590 for hs in repo.branchmap().iterheads(): |
1592 heads.extend(hs) |
1591 heads.extend(hs) |
1593 if not heads: |
1592 if not heads: |
1594 heads = [nullid] |
1593 heads = [repo.nullid] |
1595 if repo.dirstate.p1() not in heads and not exact: |
1594 if repo.dirstate.p1() not in heads and not exact: |
1596 self.ui.status(_(b"(working directory not at a head)\n")) |
1595 self.ui.status(_(b"(working directory not at a head)\n")) |
1597 |
1596 |
1598 if not self.series: |
1597 if not self.series: |
1599 self.ui.warn(_(b'no patches in series\n')) |
1598 self.ui.warn(_(b'no patches in series\n')) |
1855 repo.dirstate.drop(f) |
1854 repo.dirstate.drop(f) |
1856 for f in m + r: |
1855 for f in m + r: |
1857 fctx = ctx[f] |
1856 fctx = ctx[f] |
1858 repo.wwrite(f, fctx.data(), fctx.flags()) |
1857 repo.wwrite(f, fctx.data(), fctx.flags()) |
1859 repo.dirstate.normal(f) |
1858 repo.dirstate.normal(f) |
1860 repo.setparents(qp, nullid) |
1859 repo.setparents(qp, repo.nullid) |
1861 for patch in reversed(self.applied[start:end]): |
1860 for patch in reversed(self.applied[start:end]): |
1862 self.ui.status(_(b"popping %s\n") % patch.name) |
1861 self.ui.status(_(b"popping %s\n") % patch.name) |
1863 del self.applied[start:end] |
1862 del self.applied[start:end] |
1864 strip(self.ui, repo, [rev], update=False, backup=False) |
1863 strip(self.ui, repo, [rev], update=False, backup=False) |
1865 for s, state in repo[b'.'].substate.items(): |
1864 for s, state in repo[b'.'].substate.items(): |