author | Martin von Zweigbergk <martinvonz@google.com> |
Tue, 03 Apr 2018 23:47:01 -0700 | |
changeset 37354 | a6014392837e |
parent 36514 | 7b74afec6772 |
child 38964 | 05ded838c997 |
permissions | -rw-r--r-- |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 |
# narrowtemplates.py - added template keywords for narrow clones |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 |
# |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2017 Google, Inc. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 |
# |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 |
# This software may be used and distributed according to the terms of the |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 |
# GNU General Public License version 2 or any later version. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
|
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 |
from __future__ import absolute_import |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 |
|
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 |
from mercurial import ( |
36091
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
11 |
registrar, |
36090
9445a3141501
narrow: move from ELLIPSIS_NODE_FLAG to revlog.REVIDX_ELLIPSIS
Augie Fackler <augie@google.com>
parents:
36079
diff
changeset
|
12 |
revlog, |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 |
) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 |
|
36091
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
15 |
keywords = {} |
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
16 |
templatekeyword = registrar.templatekeyword(keywords) |
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
17 |
revsetpredicate = registrar.revsetpredicate() |
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
18 |
|
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 |
def _isellipsis(repo, rev): |
36090
9445a3141501
narrow: move from ELLIPSIS_NODE_FLAG to revlog.REVIDX_ELLIPSIS
Augie Fackler <augie@google.com>
parents:
36079
diff
changeset
|
20 |
if repo.changelog.flags(rev) & revlog.REVIDX_ELLIPSIS: |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 |
return True |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 |
return False |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 |
|
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
24 |
@templatekeyword('ellipsis', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
25 |
def ellipsis(context, mapping): |
36439
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
26 |
"""String. 'ellipsis' if the change is an ellipsis node, else ''.""" |
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
27 |
repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
28 |
ctx = context.resource(mapping, 'ctx') |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
29 |
if _isellipsis(repo, ctx.rev()): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
30 |
return 'ellipsis' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
31 |
return '' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
32 |
|
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
33 |
@templatekeyword('outsidenarrow', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
34 |
def outsidenarrow(context, mapping): |
36439
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
35 |
"""String. 'outsidenarrow' if the change affects no tracked files, |
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
36 |
else ''.""" |
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
37 |
repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
38 |
ctx = context.resource(mapping, 'ctx') |
36472
d0d5eef57fb0
narrow: drop safehasattr() checks for always-present repo.narrowmatch
Martin von Zweigbergk <martinvonz@google.com>
parents:
36439
diff
changeset
|
39 |
m = repo.narrowmatch() |
d0d5eef57fb0
narrow: drop safehasattr() checks for always-present repo.narrowmatch
Martin von Zweigbergk <martinvonz@google.com>
parents:
36439
diff
changeset
|
40 |
if not m.always(): |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
41 |
if not any(m(f) for f in ctx.files()): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
42 |
return 'outsidenarrow' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
43 |
return '' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
44 |
|
36091
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
45 |
@revsetpredicate('ellipsis') |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
46 |
def ellipsisrevset(repo, subset, x): |
36439
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
47 |
"""Changesets that are ellipsis nodes.""" |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
48 |
return subset.filter(lambda r: _isellipsis(repo, r)) |