annotate contrib/nopushpublish.py @ 4122:4eb3877540f1

evovle: remove redundancy in evolve output Copying the discription of this redundancy issue given by Pierre Yves David: When running `hg evolve` to stabilize orphan changeset output about the currently stabilized changeset is issued. For example: $ hg evolve move:[3] a3 atop:[4] a2 working directory is now at 7c5649f73d11 This output can become quite repetitive when orphan are stabilized atop each other. For example: $ hg evolve --all move:[8] dansk 2! atop:[10] dansk! merging main-file-1 move:[9] dansk 3! atop:[11] dansk 2! In this case it would be smoother to issue: $ hg evolve --all move:[8] dansk 2! atop:[10] dansk! merging main-file-1 move:[9] dansk 3! Since we are moving "dansk 3!" atop the changeset we just stabilized. When adding this be careful that we still want to issue the "atop" message in various cases: 1. first changesets in a stack 2. when the orphan is not stabilized atop previous one 3. when using hg evolve --continue to resume an evolution So, I have made the changes which also respect above listed three points. And changes in tests/test-evovle*.t reflecting the changed behavior.
author Sushil khanchi <sushilkhanchi97@gmail.com>
date Fri, 21 Sep 2018 15:52:53 +0530
parents 4f5e915ddb71
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
401
76df267fd76c some doc
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 400
diff changeset
1 # Extension which prevent changeset to be turn public by push operation
413
984be08ef504 nopushpublish: add license en copyright notice
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 402
diff changeset
2 #
984be08ef504 nopushpublish: add license en copyright notice
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 402
diff changeset
3 # Copyright 2011 Logilab SA <contact@logilab.fr>
984be08ef504 nopushpublish: add license en copyright notice
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 402
diff changeset
4 #
984be08ef504 nopushpublish: add license en copyright notice
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 402
diff changeset
5 # This software may be used and distributed according to the terms of the
984be08ef504 nopushpublish: add license en copyright notice
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 402
diff changeset
6 # GNU General Public License version 2 or any later version.
984be08ef504 nopushpublish: add license en copyright notice
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 402
diff changeset
7
400
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
8
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
9 from mercurial import extensions, util
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
10 from mercurial import discovery
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
11
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
12 def checkpublish(orig, repo, remote, outgoing, *args):
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
13
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
14 # is remote publishing?
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
15 publish = True
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
16 if 'phases' in remote.listkeys('namespaces'):
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
17 remotephases = remote.listkeys('phases')
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
18 publish = remotephases.get('publishing', False)
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
19
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
20 npublish = 0
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
21 if publish:
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
22 for rev in outgoing.missing:
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
23 if repo[rev].phase():
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
24 npublish += 1
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
25 if npublish:
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
26 repo.ui.warn("Push would publish %s changesets" % npublish)
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
27
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
28 ret = orig(repo, remote, outgoing, *args)
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
29 if npublish:
1670
4f5e915ddb71 Spelling: forbidden
timeless@gmail.com
parents: 413
diff changeset
30 raise util.Abort("Publishing push forbidden",
400
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
31 hint="Use `hg phase -p <rev>` to manually publish them")
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
32
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
33 return ret
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
34
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
35 def uisetup(ui):
1e72a3cc2cc3 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
36 extensions.wrapfunction(discovery, 'checkheads', checkpublish)