[PATCH 2 of 2 RESENT] rewriting: add an option for rewrite commands to use the archived phase
Boris FELD
lothiraldan at gmail.com
Thu Feb 21 04:17:57 EST 2019
What can we do to make this series go forward?
On 13/02/2019 15:38, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1546394872 -3600
> # Wed Jan 02 03:07:52 2019 +0100
> # Node ID 9939d8e412e3e440f3b564fb96c187745d7a008c
> # Parent 61ec4a834e2c88056ff47c0d3a7ff3bcb0f0d912
> # EXP-Topic archived-phase-UX
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 9939d8e412e3
> rewriting: add an option for rewrite commands to use the archived phase
>
> Using the archived phase for cleanup provide the same effect than stripping,
> but in a faster, append-only way.
>
> We keep the feature experimental for now until it gets a bit more testing.
>
> diff --git a/mercurial/configitems.py b/mercurial/configitems.py
> --- a/mercurial/configitems.py
> +++ b/mercurial/configitems.py
> @@ -470,6 +470,9 @@ coreconfigitem('experimental', 'bundleco
> coreconfigitem('experimental', 'changegroup3',
> default=False,
> )
> +coreconfigitem('experimental', 'cleanup-as-archived',
> + default=False,
> +)
> coreconfigitem('experimental', 'clientcompressionengines',
> default=list,
> )
> diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
> --- a/mercurial/scmutil.py
> +++ b/mercurial/scmutil.py
> @@ -1014,6 +1014,7 @@ def cleanupnodes(repo, replacements, ope
> for phase, nodes in toadvance.items():
> phases.advanceboundary(repo, tr, phase, nodes)
>
> + mayusearchived = repo.ui.config('experimental', 'cleanup-as-archived')
> # Obsolete or strip nodes
> if obsolete.isenabled(repo, obsolete.createmarkersopt):
> # If a node is already obsoleted, and we want to obsolete it
> @@ -1031,6 +1032,17 @@ def cleanupnodes(repo, replacements, ope
> if rels:
> obsolete.createmarkers(repo, rels, operation=operation,
> metadata=metadata)
> + elif phases.supportinternal(repo) and mayusearchived:
> + # this assume we do not have "unstable" nodes above the cleaned ones
> + allreplaced = set()
> + for ns in replacements.keys():
> + allreplaced.update(ns)
> + if backup:
> + from . import repair # avoid import cycle
> + node = min(allreplaced, key=repo.changelog.rev)
> + repair.backupbundle(repo, allreplaced, allreplaced, node,
> + operation)
> + phases.retractboundary(repo, tr, phases.archived, allreplaced)
> else:
> from . import repair # avoid import cycle
> tostrip = list(n for ns in replacements for n in ns)
> diff --git a/tests/test-phase-archived.t b/tests/test-phase-archived.t
> --- a/tests/test-phase-archived.t
> +++ b/tests/test-phase-archived.t
> @@ -75,3 +75,69 @@ Test that bundle can unarchive a changes
> date: Thu Jan 01 00:00:00 1970 +0000
> summary: root
>
> +
> +Test that history rewriting command can use the archived phase when allowed to
> +------------------------------------------------------------------------------
> +
> + $ hg up 'desc(unbundletesting)'
> + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> + $ echo bar >> a
> + $ hg commit --amend --config experimental.cleanup-as-archived=yes
> + $ hg log -G
> + @ changeset: 2:d1e73e428f29
> + | tag: tip
> + | parent: 0:c1863a3840c6
> + | user: test
> + | date: Thu Jan 01 00:00:00 1970 +0000
> + | summary: unbundletesting
> + |
> + o changeset: 0:c1863a3840c6
> + user: test
> + date: Thu Jan 01 00:00:00 1970 +0000
> + summary: root
> +
> + $ hg log -G --hidden
> + @ changeset: 2:d1e73e428f29
> + | tag: tip
> + | parent: 0:c1863a3840c6
> + | user: test
> + | date: Thu Jan 01 00:00:00 1970 +0000
> + | summary: unbundletesting
> + |
> + | o changeset: 1:883aadbbf309
> + |/ user: test
> + | date: Thu Jan 01 00:00:00 1970 +0000
> + | summary: unbundletesting
> + |
> + o changeset: 0:c1863a3840c6
> + user: test
> + date: Thu Jan 01 00:00:00 1970 +0000
> + summary: root
> +
> + $ ls -1 .hg/strip-backup/
> + 883aadbbf309-efc55adc-amend.hg
> + 883aadbbf309-efc55adc-backup.hg
> + $ hg unbundle .hg/strip-backup/883aadbbf309*amend.hg
> + adding changesets
> + adding manifests
> + adding file changes
> + added 0 changesets with 0 changes to 1 files
> + (run 'hg update' to get a working copy)
> + $ hg log -G
> + @ changeset: 2:d1e73e428f29
> + | tag: tip
> + | parent: 0:c1863a3840c6
> + | user: test
> + | date: Thu Jan 01 00:00:00 1970 +0000
> + | summary: unbundletesting
> + |
> + | o changeset: 1:883aadbbf309
> + |/ user: test
> + | date: Thu Jan 01 00:00:00 1970 +0000
> + | summary: unbundletesting
> + |
> + o changeset: 0:c1863a3840c6
> + user: test
> + date: Thu Jan 01 00:00:00 1970 +0000
> + summary: root
> +
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list