diff --git a/hgext3rd/absorb/__init__.py b/hgext3rd/absorb/__init__.py --- a/hgext3rd/absorb/__init__.py +++ b/hgext3rd/absorb/__init__.py @@ -803,7 +803,10 @@ True): extra['absorb_source'] = ctx.hex() mctx = overlaycontext(memworkingcopy, ctx, parents, extra=extra) - return mctx.commit() + # preserve phase + with mctx.repo().ui.configoverride({ + ('phases', 'new-commit'): ctx.phase()}): + return mctx.commit() @util.propertycache def _useobsolete(self): diff --git a/tests/test-absorb-phase.t b/tests/test-absorb-phase.t new file mode 100644 --- /dev/null +++ b/tests/test-absorb-phase.t @@ -0,0 +1,30 @@ + $ cat >> $HGRCPATH << EOF + > [extensions] + > absorb=$TESTDIR/../hgext3rd/absorb + > drawdag=$RUNTESTDIR/drawdag.py + > EOF + + $ hg init + $ hg debugdrawdag <<'EOS' + > C + > | + > B + > | + > A + > EOS + + $ hg phase -r A --public -q + $ hg phase -r C --secret --force -q + + $ hg update C -q + $ printf B1 > B + + $ hg absorb -q + + $ hg log -G -T '{desc} {phase}' + @ C secret + | + o B draft + | + o A public +