846 parents = p1 and (p1, node.nullid) |
846 parents = p1 and (p1, node.nullid) |
847 extra = ctx.extra() |
847 extra = ctx.extra() |
848 if self._useobsolete and self.ui.configbool('absorb', 'add-noise'): |
848 if self._useobsolete and self.ui.configbool('absorb', 'add-noise'): |
849 extra['absorb_source'] = ctx.hex() |
849 extra['absorb_source'] = ctx.hex() |
850 mctx = overlaycontext(memworkingcopy, ctx, parents, extra=extra) |
850 mctx = overlaycontext(memworkingcopy, ctx, parents, extra=extra) |
851 # preserve phase |
851 return mctx.commit() |
852 with mctx.repo().ui.configoverride({ |
|
853 ('phases', 'new-commit'): ctx.phase()}): |
|
854 return mctx.commit() |
|
855 |
852 |
856 @util.propertycache |
853 @util.propertycache |
857 def _useobsolete(self): |
854 def _useobsolete(self): |
858 """() -> bool""" |
855 """() -> bool""" |
859 return obsolete.isenabled(self.repo, obsolete.createmarkersopt) |
856 return obsolete.isenabled(self.repo, obsolete.createmarkersopt) |
860 |
857 |
861 def _cleanupoldcommits(self): |
858 def _cleanupoldcommits(self): |
862 replacements = {k: ([v] if v is not None else []) |
859 replacements = {k: ([v] if v is not None else []) |
863 for k, v in self.replacemap.iteritems()} |
860 for k, v in self.replacemap.iteritems()} |
864 if replacements: |
861 if replacements: |
865 scmutil.cleanupnodes(self.repo, replacements, operation='absorb') |
862 scmutil.cleanupnodes(self.repo, replacements, operation='absorb', |
|
863 fixphase=True) |
866 |
864 |
867 def _parsechunk(hunk): |
865 def _parsechunk(hunk): |
868 """(crecord.uihunk or patch.recordhunk) -> (path, (a1, a2, [bline]))""" |
866 """(crecord.uihunk or patch.recordhunk) -> (path, (a1, a2, [bline]))""" |
869 if type(hunk) not in (crecord.uihunk, patch.recordhunk): |
867 if type(hunk) not in (crecord.uihunk, patch.recordhunk): |
870 return None, None |
868 return None, None |