diff --git a/mercurial/repair.py b/mercurial/repair.py --- a/mercurial/repair.py +++ b/mercurial/repair.py @@ -49,7 +49,11 @@ def _bundle(repo, bases, heads, node, su bundletype = "HG10UN" outgoing = discovery.outgoing(repo, missingroots=bases, missingheads=heads) - contentopts = {'cg.version': cgversion, 'obsolescence': obsolescence} + contentopts = { + 'cg.version': cgversion, + 'obsolescence': obsolescence, + 'phases': True, + } return bundle2.writenewbundle(repo.ui, repo, 'strip', name, bundletype, outgoing, contentopts, vfs, compression=comp) @@ -194,6 +198,7 @@ def strip(ui, repo, nodelist, backup=Tru deleteobsmarkers(repo.obsstore, stripobsidx) del repo.obsstore + repo._phasecache.filterunknown(repo) if tmpbundlefile: ui.note(_("adding branch\n")) f = vfs.open(tmpbundlefile, "rb") diff --git a/tests/test-bundle-phases.t b/tests/test-bundle-phases.t --- a/tests/test-bundle-phases.t +++ b/tests/test-bundle-phases.t @@ -170,6 +170,32 @@ to see that secret becomes draft, but pu | o A public +Unbundling change in the middle of a stack does not affect later changes + $ hg strip --no-backup E + $ hg phase --secret --force D + $ hg log -G -T '{desc} {phase}\n' + o D secret + | + o C draft + | + o B draft + | + o A public + + $ hg bundle --base A -r B bundle + 1 changesets found + $ hg unbundle -q bundle + $ rm bundle + $ hg log -G -T '{desc} {phase}\n' + o D secret + | + o C draft + | + o B draft + | + o A public + + $ cd .. Set up repo with non-linear history diff --git a/tests/test-generaldelta.t b/tests/test-generaldelta.t --- a/tests/test-generaldelta.t +++ b/tests/test-generaldelta.t @@ -157,5 +157,7 @@ Test that strip bundle use bundle2 Stream params: sortdict([('Compression', 'BZ')]) changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])" 1c5d4dc9a8b8d6e1750966d343e94db665e7a1e9 + phase-heads -- 'sortdict()' + 1c5d4dc9a8b8d6e1750966d343e94db665e7a1e9 draft $ cd .. diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -1239,6 +1239,8 @@ Test ability to pull changeset with loca obsmarkers -- 'sortdict()' version: 1 (70 bytes) f27abbcc1f77fb409cf9160482fe619541e2d605 0 {e008cf2834908e5d6b0f792a9d4b0e2272260fb8} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + phase-heads -- 'sortdict()' + f27abbcc1f77fb409cf9160482fe619541e2d605 draft $ hg pull .hg/strip-backup/e008cf283490-*-backup.hg pulling from .hg/strip-backup/e008cf283490-39c978dc-backup.hg @@ -1283,6 +1285,8 @@ Testing that strip remove markers: version: 1 (139 bytes) e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} f27abbcc1f77fb409cf9160482fe619541e2d605 0 {e008cf2834908e5d6b0f792a9d4b0e2272260fb8} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + phase-heads -- 'sortdict()' + b0551702f918510f01ae838ab03a463054c67b46 draft $ hg unbundle .hg/strip-backup/e016b03fd86f-*-backup.hg adding changesets diff --git a/tests/test-rebase-conflicts.t b/tests/test-rebase-conflicts.t --- a/tests/test-rebase-conflicts.t +++ b/tests/test-rebase-conflicts.t @@ -281,16 +281,18 @@ Check that the right ancestors is used w list of changesets: e31216eec445e44352c5f01588856059466a24c9 2f2496ddf49d69b5ef23ad8cf9fb2e0e4faf0ac2 - bundle2-output-bundle: "HG20", (1 params) 1 parts total + bundle2-output-bundle: "HG20", (1 params) 2 parts total bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output-part: "phase-heads" 24 bytes payload saved backup bundle to $TESTTMP/issue4041/.hg/strip-backup/e31216eec445-15f7a814-backup.hg (glob) 3 changesets found list of changesets: 4c9fbe56a16f30c0d5dcc40ec1a97bbe3325209c 19c888675e133ab5dff84516926a65672eaf04d9 2a7f09cac94c7f4b73ebd5cd1a62d3b2e8e336bf - bundle2-output-bundle: "HG20", 1 parts total + bundle2-output-bundle: "HG20", 2 parts total bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output-part: "phase-heads" 24 bytes payload adding branch bundle2-input-bundle: with-transaction bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported @@ -303,7 +305,9 @@ Check that the right ancestors is used w adding f1.txt revisions added 2 changesets with 2 changes to 1 files bundle2-input-part: total payload size 1686 - bundle2-input-bundle: 0 parts total + bundle2-input-part: "phase-heads" supported + bundle2-input-part: total payload size 24 + bundle2-input-bundle: 1 parts total updating the branch cache invalid branchheads cache (served): tip differs rebase completed diff --git a/tests/test-strip.t b/tests/test-strip.t --- a/tests/test-strip.t +++ b/tests/test-strip.t @@ -213,6 +213,8 @@ Stream params: sortdict([('Compression', 'BZ')]) changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])" 264128213d290d868c54642d13aeaa3675551a78 + phase-heads -- 'sortdict()' + 264128213d290d868c54642d13aeaa3675551a78 draft $ hg pull .hg/strip-backup/* pulling from .hg/strip-backup/264128213d29-0b39d6bf-backup.hg searching for changes @@ -839,8 +841,9 @@ check strip behavior list of changesets: 6625a516847449b6f0fa3737b9ba56e9f0f3032c d8db9d1372214336d2b5570f20ee468d2c72fa8b - bundle2-output-bundle: "HG20", (1 params) 1 parts total + bundle2-output-bundle: "HG20", (1 params) 2 parts total bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload + bundle2-output-part: "phase-heads" 24 bytes payload saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/6625a5168474-345bb43d-backup.hg (glob) updating the branch cache invalid branchheads cache (served): tip differs