Mercurial > evolve
annotate hgext3rd/topic/compat.py @ 5917:94aed9c7ce69 stable
next: refactor two if blocks into an if-elif block
We already checked the value of `needevolve and opts['evolve']` in the first if
block above. In the first one it need to be True, in the second it needs to be
False for the statements to execute. Since not(a or b) = not a and not b, we
can join the second if block to the first one with an elif while dropping the
explicit check.
For me, this works better, because we're doing the same thing in both of these
blocks (checking if working copy is dirty or not).
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Sat, 15 May 2021 20:40:19 +0800 |
parents | dd9dba7c1d00 |
children | 77ce98287dc2 |
rev | line source |
---|---|
2922
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
1 # Copyright 2017 FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
2 # |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
3 # This software may be used and distributed according to the terms of the |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
4 # GNU General Public License version 2 or any later version. |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
5 """ |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
6 Compatibility module |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
7 """ |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
9 |
3094
e11e018e8338
compat: add an abstraction for 'scmutil.cleanupnodes'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3064
diff
changeset
|
10 from mercurial import ( |
5665
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
11 cmdutil, |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
12 extensions, |
4743
92e3db149d7d
py3: call branchmap.items() on py3 and continue to call iteritems() on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
3701
diff
changeset
|
13 pycompat, |
4894
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
14 registrar, |
4957
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
15 util, |
3094
e11e018e8338
compat: add an abstraction for 'scmutil.cleanupnodes'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3064
diff
changeset
|
16 ) |
2922
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
17 |
4743
92e3db149d7d
py3: call branchmap.items() on py3 and continue to call iteritems() on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
3701
diff
changeset
|
18 if pycompat.ispy3: |
92e3db149d7d
py3: call branchmap.items() on py3 and continue to call iteritems() on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
3701
diff
changeset
|
19 def branchmapitems(branchmap): |
92e3db149d7d
py3: call branchmap.items() on py3 and continue to call iteritems() on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
3701
diff
changeset
|
20 return branchmap.items() |
92e3db149d7d
py3: call branchmap.items() on py3 and continue to call iteritems() on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
3701
diff
changeset
|
21 else: |
4810
03690f8d2b0a
python3: add ignore block around python 2 compatibility if branch
Raphaël Gomès <rgomes@octobus.net>
parents:
4743
diff
changeset
|
22 # py3-transform: off |
4743
92e3db149d7d
py3: call branchmap.items() on py3 and continue to call iteritems() on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
3701
diff
changeset
|
23 def branchmapitems(branchmap): |
92e3db149d7d
py3: call branchmap.items() on py3 and continue to call iteritems() on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
3701
diff
changeset
|
24 return branchmap.iteritems() |
4810
03690f8d2b0a
python3: add ignore block around python 2 compatibility if branch
Raphaël Gomès <rgomes@octobus.net>
parents:
4743
diff
changeset
|
25 # py3-transform: on |
4957
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
26 |
4894
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
27 # help category compatibility |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
28 # hg <= 4.7 (c303d65d2e34) |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
29 def helpcategorykwargs(categoryname): |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
30 """Backwards-compatible specification of the helpategory argument.""" |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
31 category = getattr(registrar.command, categoryname, None) |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
32 if not category: |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
33 return {} |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4810
diff
changeset
|
34 return {'helpcategory': category} |
4929
bb2b4f6c99dc
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4894
diff
changeset
|
35 |
4957
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
36 # nodemap.get and index.[has_node|rev|get_rev] |
5193
a4d081923c81
compat: update hg-X.Y compat comments and test them
Anton Shestakov <av6@dwimlabs.net>
parents:
4963
diff
changeset
|
37 # hg <= 5.2 (02802fa87b74) |
4957
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
38 def getgetrev(cl): |
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
39 """Returns index.get_rev or nodemap.get (for pre-5.3 Mercurial).""" |
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
40 if util.safehasattr(cl.index, 'get_rev'): |
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
41 return cl.index.get_rev |
e8302f760a54
compat: compatibility for cl.nodemap.get vs cl.index.get_rev
Anton Shestakov <av6@dwimlabs.net>
parents:
4810
diff
changeset
|
42 return cl.nodemap.get |
5426
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
43 |
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
44 # hg <= 5.4 (e2d17974a869) |
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
45 def nonpublicphaseroots(repo): |
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
46 if util.safehasattr(repo._phasecache, 'nonpublicphaseroots'): |
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
47 return repo._phasecache.nonpublicphaseroots(repo) |
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
48 return set().union( |
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
49 *[roots for roots in repo._phasecache.phaseroots[1:] if roots] |
86736040b0ec
topic: compatibility with sparse phaseroots and phasesets in 5.5
Joerg Sonnenberger <joerg@bec.de>
parents:
5193
diff
changeset
|
50 ) |
5665
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
51 |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
52 def overridecommitstatus(overridefn): |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
53 if r'tip' in cmdutil.commitstatus.__code__.co_varnames: |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
54 extensions.wrapfunction(cmdutil, 'commitstatus', overridefn) |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
55 else: |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
56 # hg <= 5.6 (976b26bdd0d8) |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
57 def _override(orig, repo, node, branch, bheads=None, opts=None): |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
58 def _orig(repo, node, branch, bheads=None, tip=None, opts=None): |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
59 return orig(repo, node, branch, bheads=bheads, opts=opts) |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
60 return overridefn(_orig, repo, node, branch, bheads=bheads, tip=None, opts=opts) |
dd9dba7c1d00
compat: make topics compatible across change to cmdutil.commitstatus()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5426
diff
changeset
|
61 extensions.wrapfunction(cmdutil, 'commitstatus', _override) |