[PATCH 7 of 7] strip: strip obsmarkers exclusive to the stripped changeset
Jun Wu
quark at fb.com
Sat Jun 3 04:41:16 EDT 2017
I don't think this is correct in a distributed world. It could potentially
break divergence detection.
Excerpts from Pierre-Yves David's message of 2017-06-01 15:39:50 +0200:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at octobus.net>
> # Date 1495289999 -7200
> # Sat May 20 16:19:59 2017 +0200
> # Node ID fb16a4d85cf46afbc12bb61f8d22784cef31d1dc
> # Parent 2c44bd45fdeeb3a8bf1762af4a81af3914fadc29
> # EXP-Topic obsstrip
> # Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
> # hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r fb16a4d85cf4
> strip: strip obsmarkers exclusive to the stripped changeset
>
> This is it, `hg strip --rev X` will now also remove obsolescence markers
> exclusive to X. Since a previous changeset, the obsmarkers has been backed up
> in the strip backup bundle, so it is possible to restore them.
>
> Note: stripping obsmarkers means the precursors of the stripped changeset might no
> longer be obsolete after the strip.
>
> Stripping changeset without obsmarkers can be useful when building test case. So
> It is possible to disable the stripping of obsmarkers using the
> 'devel.strip-obsmarkers' config option.
>
> Test change have been carefully validated.
>
> diff --git a/mercurial/repair.py b/mercurial/repair.py
> --- a/mercurial/repair.py
> +++ b/mercurial/repair.py
> @@ -122,6 +122,13 @@ def strip(ui, repo, nodelist, backup=Tru
> savebases = [cl.node(r) for r in saverevs]
> stripbases = [cl.node(r) for r in tostrip]
>
> + stripobsidx = obsmarkers = ()
> + if repo.ui.configbool('devel', 'strip-obsmarkers', True):
> + obsmarkers = obsolete.exclusivemarkers(repo, stripbases)
> + if obsmarkers:
> + stripobsidx = [i for i, m in enumerate(repo.obsstore)
> + if m in obsmarkers]
> +
> # For a set s, max(parents(s) - s) is the same as max(heads(::s - s)), but
> # is much faster
> newbmtarget = repo.revs('max(parents(%ld) - (%ld))', tostrip, tostrip)
> @@ -185,6 +192,9 @@ def strip(ui, repo, nodelist, backup=Tru
> if troffset == 0:
> repo.store.markremoved(file)
>
> + deleteobsmarkers(repo.obsstore, stripobsidx)
> + del repo.obsstore
> +
> if tmpbundlefile:
> ui.note(_("adding branch\n"))
> f = vfs.open(tmpbundlefile, "rb")
> diff --git a/tests/test-obsolete-bundle-strip.t b/tests/test-obsolete-bundle-strip.t
> --- a/tests/test-obsolete-bundle-strip.t
> +++ b/tests/test-obsolete-bundle-strip.t
> @@ -80,13 +80,25 @@ obsmarkers. It also check the obsmarkers
> > if [ $orphan -eq 0 ];
> > then
> > printf "# stripping: "
> + > prestripfile="${prefix}-pre-strip.txt"
> + > poststripfile="${prefix}-post-strip.txt"
> + > strippedfile="${prefix}-stripped-markers.txt"
> + > hg debugobsolete --hidden | sort | sed 's/^/ /' > "${prestripfile}"
> > hg strip --hidden --rev "${revs}"
> + > hg debugobsolete --hidden | sort | sed 's/^/ /' > "${poststripfile}"
> > hg debugbundle .hg/strip-backup/* | grep "obsmarkers --" -A 100 | sed 1,2d > "${stripcontentfile}"
> > echo '### Backup markers ###'
> > cat "${stripcontentfile}"
> > echo '### diff <relevant> <backed-up> ###'
> > cmp "${markersfile}" "${stripcontentfile}" || diff -u "${markersfile}" "${stripcontentfile}"
> > echo '#################################'
> + > cat "${prestripfile}" "${poststripfile}" | sort | uniq -u > "${strippedfile}"
> + > echo '### Stripped markers ###'
> + > cat "${strippedfile}"
> + > echo '### diff <exclusive> <stripped> ###'
> + > cmp "${exclufile}" "${strippedfile}" || diff -u "${exclufile}" "${strippedfile}"
> + > echo '#################################'
> + > # restore and clean up repo for the next test
> > hg unbundle .hg/strip-backup/* | sed 's/^/# unbundling: /'
> > # clean up directory for the next test
> > rm .hg/strip-backup/*
> @@ -150,6 +162,9 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> @@ -180,10 +195,16 @@ Actual testing
> a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 84fcb0dfe17b256ebae52e05572993b9194c018a a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files (+1 heads)
> + # unbundling: 2 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> $ testrevs 'desc("C-A")'
> @@ -212,10 +233,17 @@ Actual testing
> a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 84fcb0dfe17b256ebae52e05572993b9194c018a a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 2 changesets with 2 changes to 2 files (+1 heads)
> + # unbundling: 3 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> chain with prune children
> @@ -295,10 +323,15 @@ problematic)
> 29f93b1df87baee1824e014080d8adf145f81783 0 {84fcb0dfe17b256ebae52e05572993b9194c018a} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 29f93b1df87baee1824e014080d8adf145f81783 0 {84fcb0dfe17b256ebae52e05572993b9194c018a} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files
> + # unbundling: 1 new obsolescence markers
> # unbundling: (run 'hg update' to get a working copy)
>
> $ testrevs 'desc("C-A1")'
> @@ -324,10 +357,15 @@ problematic)
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 84fcb0dfe17b256ebae52e05572993b9194c018a cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files (+1 heads)
> + # unbundling: 1 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> bundling multiple revisions
> @@ -378,10 +416,17 @@ bundling multiple revisions
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 29f93b1df87baee1824e014080d8adf145f81783 0 {84fcb0dfe17b256ebae52e05572993b9194c018a} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 84fcb0dfe17b256ebae52e05572993b9194c018a cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 3 changesets with 3 changes to 3 files (+1 heads)
> + # unbundling: 3 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> chain with precursors also pruned
> @@ -440,6 +485,9 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> @@ -469,10 +517,15 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 84fcb0dfe17b256ebae52e05572993b9194c018a cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files (+1 heads)
> + # unbundling: 1 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> $ testrevs 'desc("C-A")'
> @@ -501,10 +554,17 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 84fcb0dfe17b256ebae52e05572993b9194c018a 0 {ea207398892eb49e06441f10dda2a731f0450f20} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 84fcb0dfe17b256ebae52e05572993b9194c018a cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 2 changesets with 2 changes to 2 files (+1 heads)
> + # unbundling: 3 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> chain with missing prune
> @@ -532,7 +592,7 @@ setup
>
> (it is annoying to create prune with parent data without the changeset, so we strip it after the fact)
>
> - $ hg strip --hidden --rev 'desc("C-A0")::' --no-backup
> + $ hg strip --hidden --rev 'desc("C-A0")::' --no-backup --config devel.strip-obsmarkers=no
>
> $ hg up 'desc("ROOT")'
> 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> @@ -574,10 +634,17 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 29f93b1df87baee1824e014080d8adf145f81783 0 {84fcb0dfe17b256ebae52e05572993b9194c018a} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 84fcb0dfe17b256ebae52e05572993b9194c018a cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files
> + # unbundling: 3 new obsolescence markers
> # unbundling: (run 'hg update' to get a working copy)
>
> chain with precursors also pruned
> @@ -603,7 +670,7 @@ setup
>
> (it is annoying to create prune with parent data without the changeset, so we strip it after the fact)
>
> - $ hg strip --hidden --rev 'desc("C-A0")::' --no-backup
> + $ hg strip --hidden --rev 'desc("C-A0")::' --no-backup --config devel.strip-obsmarkers=no
>
> $ hg up 'desc("ROOT")'
> 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> @@ -645,10 +712,17 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 84fcb0dfe17b256ebae52e05572993b9194c018a 0 {ea207398892eb49e06441f10dda2a731f0450f20} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 84fcb0dfe17b256ebae52e05572993b9194c018a cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files
> + # unbundling: 3 new obsolescence markers
> # unbundling: (run 'hg update' to get a working copy)
>
> Chain with fold and split
> @@ -730,6 +804,9 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> @@ -755,6 +832,9 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> @@ -780,6 +860,9 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> @@ -805,6 +888,9 @@ Actual testing
> a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> @@ -857,10 +943,20 @@ Actual testing
> c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 06dc9da25ef03e1ff7864dded5fcba42eff2a3f0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 27ec657ca21dd27c36c99fa75586f72ff0d442f1 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a9b9da38ed96f8c6c14f429441f625a344eb4696 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files (+1 heads)
> + # unbundling: 6 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> Bundle multiple revisions
> @@ -1050,10 +1146,23 @@ Bundle multiple revisions
> c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + 06dc9da25ef03e1ff7864dded5fcba42eff2a3f0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 27ec657ca21dd27c36c99fa75586f72ff0d442f1 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c 06dc9da25ef03e1ff7864dded5fcba42eff2a3f0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c a9b9da38ed96f8c6c14f429441f625a344eb4696 27ec657ca21dd27c36c99fa75586f72ff0d442f1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 9ac430e15fca923b0ba027ca85d4d75c5c9cb73c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + a9b9da38ed96f8c6c14f429441f625a344eb4696 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0 2f20ff6509f0e013e90c5c8efd996131c918b0ca 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 5 changesets with 5 changes to 5 files (+4 heads)
> + # unbundling: 9 new obsolescence markers
> # unbundling: (run 'hg heads' to see heads)
>
> changeset pruned on its own
> @@ -1117,10 +1226,15 @@ Actual testing
> cefb651fc2fdc7bb75e588781de5e432c134e8a5 0 {9ac430e15fca923b0ba027ca85d4d75c5c9cb73c} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + cefb651fc2fdc7bb75e588781de5e432c134e8a5 0 {9ac430e15fca923b0ba027ca85d4d75c5c9cb73c} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 1 changesets with 1 changes to 1 files
> + # unbundling: 1 new obsolescence markers
> # unbundling: (run 'hg update' to get a working copy)
> $ testrevs 'desc("C-")'
> ### Matched revisions###
> @@ -1140,8 +1254,13 @@ Actual testing
> cefb651fc2fdc7bb75e588781de5e432c134e8a5 0 {9ac430e15fca923b0ba027ca85d4d75c5c9cb73c} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> ### diff <relevant> <backed-up> ###
> #################################
> + ### Stripped markers ###
> + cefb651fc2fdc7bb75e588781de5e432c134e8a5 0 {9ac430e15fca923b0ba027ca85d4d75c5c9cb73c} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> + ### diff <exclusive> <stripped> ###
> + #################################
> # unbundling: adding changesets
> # unbundling: adding manifests
> # unbundling: adding file changes
> # unbundling: added 2 changesets with 2 changes to 2 files
> + # unbundling: 1 new obsolescence markers
> # unbundling: (run 'hg update' to get a working copy)
> diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
> --- a/tests/test-obsolete.t
> +++ b/tests/test-obsolete.t
> @@ -1211,35 +1211,88 @@ Test ability to pull changeset with loca
> o 0:a78f55e5508c (draft) [ ] 0
>
>
> + $ hg strip --hidden -r 2 --config extensions.strip= --config devel.strip-obsmarkers=no
> + saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e008cf283490-39c978dc-backup.hg (glob)
> + $ hg debugobsolete
> + e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (*) {'user': 'test'} (glob)
> + f27abbcc1f77fb409cf9160482fe619541e2d605 0 {e008cf2834908e5d6b0f792a9d4b0e2272260fb8} (*) {'user': 'test'} (glob)
> + $ hg log -G
> + @ 2:b0551702f918 (draft) [tip ] 2
> + |
> + o 1:e016b03fd86f (draft) [ ] 1
> + |
> + o 0:a78f55e5508c (draft) [ ] 0
> +
> + $ hg log -G --hidden
> + @ 2:b0551702f918 (draft) [tip ] 2
> + |
> + o 1:e016b03fd86f (draft) [ ] 1
> + |
> + o 0:a78f55e5508c (draft) [ ] 0
> +
> + $ hg debugbundle .hg/strip-backup/e008cf283490-*-backup.hg
> + Stream params: sortdict([('Compression', 'BZ')])
> + changegroup -- "sortdict([('version', '02'), ('nbchanges', '2')])"
> + e008cf2834908e5d6b0f792a9d4b0e2272260fb8
> + f27abbcc1f77fb409cf9160482fe619541e2d605
> + obsmarkers -- 'sortdict()'
> + version: 1 (70 bytes)
> + f27abbcc1f77fb409cf9160482fe619541e2d605 0 {e008cf2834908e5d6b0f792a9d4b0e2272260fb8} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
> +
> + $ hg pull .hg/strip-backup/e008cf283490-*-backup.hg
> + pulling from .hg/strip-backup/e008cf283490-39c978dc-backup.hg
> + searching for changes
> + no changes found
> + $ hg debugobsolete
> + e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (*) {'user': 'test'} (glob)
> + f27abbcc1f77fb409cf9160482fe619541e2d605 0 {e008cf2834908e5d6b0f792a9d4b0e2272260fb8} (*) {'user': 'test'} (glob)
> + $ hg log -G
> + @ 2:b0551702f918 (draft) [tip ] 2
> + |
> + o 1:e016b03fd86f (draft) [ ] 1
> + |
> + o 0:a78f55e5508c (draft) [ ] 0
> +
> + $ hg log -G --hidden
> + @ 2:b0551702f918 (draft) [tip ] 2
> + |
> + o 1:e016b03fd86f (draft) [ ] 1
> + |
> + o 0:a78f55e5508c (draft) [ ] 0
> +
> +
> +Testing that strip remove markers:
> +
> $ hg strip -r 1 --config extensions.strip=
> 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
> - saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e016b03fd86f-c41c6bcc-backup.hg (glob)
> + saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e016b03fd86f-65ede734-backup.hg (glob)
> + $ hg debugobsolete
> $ hg log -G
> @ 0:a78f55e5508c (draft) [tip ] 0
>
> $ hg log -G --hidden
> @ 0:a78f55e5508c (draft) [tip ] 0
>
> - $ hg debugbundle .hg/strip-backup/e016b03fd86f-c41c6bcc-backup.hg
> + $ hg debugbundle .hg/strip-backup/e016b03fd86f-*-backup.hg
> Stream params: sortdict([('Compression', 'BZ')])
> - changegroup -- "sortdict([('version', '02'), ('nbchanges', '4')])"
> + changegroup -- "sortdict([('version', '02'), ('nbchanges', '2')])"
> e016b03fd86fcccc54817d120b90b751aaf367d6
> - e008cf2834908e5d6b0f792a9d4b0e2272260fb8
> - f27abbcc1f77fb409cf9160482fe619541e2d605
> b0551702f918510f01ae838ab03a463054c67b46
> obsmarkers -- 'sortdict()'
> 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'}
>
> - $ hg pull .hg/strip-backup/*
> - pulling from .hg/strip-backup/e016b03fd86f-c41c6bcc-backup.hg
> - searching for changes
> + $ hg unbundle .hg/strip-backup/e016b03fd86f-*-backup.hg
> adding changesets
> adding manifests
> adding file changes
> added 2 changesets with 2 changes to 2 files
> + 2 new obsolescence markers
> (run 'hg update' to get a working copy)
> + $ hg debugobsolete | sort
> + e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (*) {'user': 'test'} (glob)
> + f27abbcc1f77fb409cf9160482fe619541e2d605 0 {e008cf2834908e5d6b0f792a9d4b0e2272260fb8} (*) {'user': 'test'} (glob)
> $ hg log -G
> o 2:b0551702f918 (draft) [tip ] 2
> |
> diff --git a/tests/test-subrepo-missing.t b/tests/test-subrepo-missing.t
> --- a/tests/test-subrepo-missing.t
> +++ b/tests/test-subrepo-missing.t
> @@ -108,7 +108,7 @@ check that --hidden is propagated to the
> verify will warn if locked-in subrepo revisions are hidden or missing
>
> $ hg ci -m "amended subrepo (again)"
> - $ hg --config extensions.strip= --hidden strip -R subrepo -qr 'tip'
> + $ hg --config extensions.strip= --hidden strip -R subrepo -qr 'tip' --config devel.strip-obsmarkers=no
> $ hg verify
> checking changesets
> checking manifests
> diff --git a/tests/testlib/exchange-obsmarker-util.sh b/tests/testlib/exchange-obsmarker-util.sh
> --- a/tests/testlib/exchange-obsmarker-util.sh
> +++ b/tests/testlib/exchange-obsmarker-util.sh
> @@ -32,6 +32,9 @@ evolution=all
> # we need to strip some changeset for some test cases
> hgext.strip=
>
> +[devel]
> +strip-obsmarkers = no
> +
> [alias]
> # fix date used to create obsolete markers.
> debugobsolete=debugobsolete -d '0 0'
More information about the Mercurial-devel
mailing list