11.08.2023 11:37, Josef 'Jeff' Sipek пишет:
On Fri, Aug 11, 2023 at 17:32:40 +0300, Mitchell Elutovich wrote:
As discussed, to turn off the auto publishing of changesets that are
pushed, the target repo needs to be defined with phases.publish=false.

We only partially want that behavior.

I haven't followed the discussion in detail, so maybe this wouldn't work for
some other reason, but couldn't you set up a hook on the server that changes
the phase to public based on whatever conditions you define in the hook?
Any unmached changes would stay drafts thanks to phases.publish=false.

This is what I'd do too, a hook on the main dev repo. However, I can't say how easy it is to make sure phase changes (draft->public on the production branch) also propagate to the source repo during the same push.

See hg help config.hooks for how to configure it and https://foss.heptapod.net/mercurial/mercurial-devel/-/tree/branch/default/hgext/hooklib for examples of python hooks. Shell hooks can also publish only commits on a specific branch, but I don't think they can see the new commits unless the transaction is already closed and client is disconnected (and cannot receive phase information).

So to elaborate, if client hg receives no updates about phases during push, it won't publish them locally. Only during the next exchange it would update the phases in the local repo. Since overall the main dev repo is going to be non-publishing and we're trying to publish only specific things there, it needs to happen while transaction is still open and the client didn't receive the final response yet. That probably means a hook in python or a server-side extension.
_______________________________________________
Evolve-testers mailing list
evolve-test...@lists.mercurial-scm.org
https://lists.mercurial-scm.org/mailman/listinfo/mercurial-evolve-testers

Reply via email to