# HG changeset patch # User Pierre-Yves David # Date 1343652308 -7200 # Node ID 8ef1096ee5ab8efb9a9605243bbc3e7bd411fd42 # Parent 76df267fd76c9d615f54a612b045f9cc02e34dba move the extension to contrib to prepare merge with mutable history diff -r 76df267fd76c -r 8ef1096ee5ab contrib/nopushpublish.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/nopushpublish.py Mon Jul 30 14:45:08 2012 +0200 @@ -0,0 +1,30 @@ +# Extension which prevent changeset to be turn public by push operation + +from mercurial import extensions, util +from mercurial import discovery + +def checkpublish(orig, repo, remote, outgoing, *args): + + # is remote publishing? + publish = True + if 'phases' in remote.listkeys('namespaces'): + remotephases = remote.listkeys('phases') + publish = remotephases.get('publishing', False) + + npublish = 0 + if publish: + for rev in outgoing.missing: + if repo[rev].phase(): + npublish += 1 + if npublish: + repo.ui.warn("Push would publish %s changesets" % npublish) + + ret = orig(repo, remote, outgoing, *args) + if npublish: + raise util.Abort("Publishing push forbiden", + hint="Use `hg phase -p ` to manually publish them") + + return ret + +def uisetup(ui): + extensions.wrapfunction(discovery, 'checkheads', checkpublish) diff -r 76df267fd76c -r 8ef1096ee5ab nopushpublish.py --- a/nopushpublish.py Mon Jul 30 14:42:02 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# Extension which prevent changeset to be turn public by push operation - -from mercurial import extensions, util -from mercurial import discovery - -def checkpublish(orig, repo, remote, outgoing, *args): - - # is remote publishing? - publish = True - if 'phases' in remote.listkeys('namespaces'): - remotephases = remote.listkeys('phases') - publish = remotephases.get('publishing', False) - - npublish = 0 - if publish: - for rev in outgoing.missing: - if repo[rev].phase(): - npublish += 1 - if npublish: - repo.ui.warn("Push would publish %s changesets" % npublish) - - ret = orig(repo, remote, outgoing, *args) - if npublish: - raise util.Abort("Publishing push forbiden", - hint="Use `hg phase -p ` to manually publish them") - - return ret - -def uisetup(ui): - extensions.wrapfunction(discovery, 'checkheads', checkpublish)