[PATCH] push: config option to control behavior when pushing to a publishing server
Yuya Nishihara
yuya at tcha.org
Sun Nov 25 03:35:17 UTC 2018
On Fri, 23 Nov 2018 13:23:43 +0800, Anton Shestakov wrote:
> # HG changeset patch
> # User Anton Shestakov <av6 at dwimlabs.net>
> # Date 1541397139 -28800
> # Mon Nov 05 13:52:19 2018 +0800
> # Node ID ea18d94ac7006faff7148cb2eca3b970655955b9
> # Parent efd0f79246e3e6633dfd06226464a48584f69b19
> # EXP-Topic push-publish
> push: config option to control behavior when pushing to a publishing server
> `hg push --publish` can be used to make push succeed even when auto-publish is
> set to 'abort'.
>
> diff --git a/mercurial/configitems.py b/mercurial/configitems.py
> --- a/mercurial/configitems.py
> +++ b/mercurial/configitems.py
> @@ -449,6 +449,9 @@ coreconfigitem('email', 'to',
> coreconfigitem('experimental', 'archivemetatemplate',
> default=dynamicdefault,
> )
> +coreconfigitem('experimental', 'auto-publish',
> + default='ignore',
auto-publish=ignore sounds like the push operation will never promote the
changesets to public. Perhaps, it can be renamed to 'allow'?
> --- a/mercurial/exchange.py
> +++ b/mercurial/exchange.py
> @@ -334,6 +334,30 @@ def _computeoutgoing(repo, heads, common
> heads = cl.heads()
> return discovery.outgoing(repo, common, heads)
>
> +def _checkpublish(pushop):
> + repo = pushop.repo
> + ui = repo.ui
> + behavior = ui.config('experimental', 'auto-publish')
> + if pushop.publish or behavior not in ('warn', 'abort'):
> + return
> + remotephases = listkeys(pushop.remote, 'phases')
> + if not remotephases.get('publishing', False):
> + return
> +
> + if pushop.revs is None:
> + published = repo.filtered('served').revs('not public()')
> + else:
> + published = repo.revs('::%ln - public()', pushop.revs)
> + if published:
> + if behavior == 'warn':
> + ui.warn(_('%i changesets about to be published\n')
> + % len(published))
I don't think 'warn' is useful unless there's a reliable way to interrupt
the push operation.
> + elif behavior == 'abort':
> + msg = _('push would publish %i changesets') % len(published)
> + hint = _("behavior controlled by 'experimental.auto-publish'"
> + " config")
Shouldn't we instead suggest "hg push --publish"?
More information about the Mercurial-devel
mailing list