Mercurial > hg-stable
annotate hgext/remotenames.py @ 40066:25533575d04e
remotenames: inline _parseargs() into _revsetutil()
The _parseargs() function gets quite simple, and the 0/1 loop can be rewritten
as "if".
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 05 Oct 2018 21:29:21 +0900 |
parents | 6346e21eecc8 |
children | fe64178103b7 |
rev | line source |
---|---|
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
1 # remotenames.py - extension to display remotenames |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
2 # |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
3 # Copyright 2017 Augie Fackler <raf@durin42.com> |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
4 # Copyright 2017 Sean Farley <sean@farley.io> |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
5 # |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
6 # This software may be used and distributed according to the terms of the |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
7 # GNU General Public License version 2 or any later version. |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
8 |
37817
678ab0de7296
remotenames: mark the extension as EXPERIMENTAL
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37093
diff
changeset
|
9 """ showing remotebookmarks and remotebranches in UI (EXPERIMENTAL) |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
10 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
11 By default both remotebookmarks and remotebranches are turned on. Config knob to |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
12 control the individually are as follows. |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
13 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
14 Config options to tweak the default behaviour: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
15 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
16 remotenames.bookmarks |
37092
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
17 Boolean value to enable or disable showing of remotebookmarks (default: True) |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
18 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
19 remotenames.branches |
37092
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
20 Boolean value to enable or disable showing of remotebranches (default: True) |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
21 |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
22 remotenames.hoistedpeer |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
23 Name of the peer whose remotebookmarks should be hoisted into the top-level |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
24 namespace (default: 'default') |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
25 """ |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
26 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
27 from __future__ import absolute_import |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
28 |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
29 from mercurial.i18n import _ |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
30 |
36099
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
31 from mercurial.node import ( |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
32 bin, |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
33 ) |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
34 from mercurial import ( |
37093
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
35 bookmarks, |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
36 extensions, |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
37 logexchange, |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
38 namespaces, |
36962
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
39 pycompat, |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
40 registrar, |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
41 revsetlang, |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
42 smartset, |
36927
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
43 templateutil, |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
44 ) |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
45 |
40060
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
46 from mercurial.utils import ( |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
47 stringutil, |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
48 ) |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
49 |
36962
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
50 if pycompat.ispy3: |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
51 import collections.abc |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
52 mutablemapping = collections.abc.MutableMapping |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
53 else: |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
54 import collections |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
55 mutablemapping = collections.MutableMapping |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
56 |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
57 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
58 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
59 # be specifying the version(s) of Mercurial they are tested with, or |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
60 # leave the attribute unspecified. |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
61 testedwith = 'ships-with-hg-core' |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
62 |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
63 configtable = {} |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
64 configitem = registrar.configitem(configtable) |
36101
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
65 templatekeyword = registrar.templatekeyword() |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
66 revsetpredicate = registrar.revsetpredicate() |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
67 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
68 configitem('remotenames', 'bookmarks', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
69 default=True, |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
70 ) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
71 configitem('remotenames', 'branches', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
72 default=True, |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
73 ) |
37092
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
74 configitem('remotenames', 'hoistedpeer', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
75 default='default', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
76 ) |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
77 |
36962
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36927
diff
changeset
|
78 class lazyremotenamedict(mutablemapping): |
36099
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
79 """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
80 Read-only dict-like Class to lazily resolve remotename entries |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
81 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
82 We are doing that because remotenames startup was slow. |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
83 We lazily read the remotenames file once to figure out the potential entries |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
84 and store them in self.potentialentries. Then when asked to resolve an |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
85 entry, if it is not in self.potentialentries, then it isn't there, if it |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
86 is in self.potentialentries we resolve it and store the result in |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
87 self.cache. We cannot be lazy is when asked all the entries (keys). |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
88 """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
89 def __init__(self, kind, repo): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
90 self.cache = {} |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
91 self.potentialentries = {} |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
92 self._kind = kind # bookmarks or branches |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
93 self._repo = repo |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
94 self.loaded = False |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
95 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
96 def _load(self): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
97 """ Read the remotenames file, store entries matching selected kind """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
98 self.loaded = True |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
99 repo = self._repo |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
100 for node, rpath, rname in logexchange.readremotenamefile(repo, |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
101 self._kind): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
102 name = rpath + '/' + rname |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
103 self.potentialentries[name] = (node, rpath, name) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
104 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
105 def _resolvedata(self, potentialentry): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
106 """ Check that the node for potentialentry exists and return it """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
107 if not potentialentry in self.potentialentries: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
108 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
109 node, remote, name = self.potentialentries[potentialentry] |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
110 repo = self._repo |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
111 binnode = bin(node) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
112 # if the node doesn't exist, skip it |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
113 try: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
114 repo.changelog.rev(binnode) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
115 except LookupError: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
116 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
117 # Skip closed branches |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
118 if (self._kind == 'branches' and repo[binnode].closesbranch()): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
119 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
120 return [binnode] |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
121 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
122 def __getitem__(self, key): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
123 if not self.loaded: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
124 self._load() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
125 val = self._fetchandcache(key) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
126 if val is not None: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
127 return val |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
128 else: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
129 raise KeyError() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
130 |
36285
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
131 def __iter__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
132 return iter(self.potentialentries) |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
133 |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
134 def __len__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
135 return len(self.potentialentries) |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
136 |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
137 def __setitem__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
138 raise NotImplementedError |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
139 |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
140 def __delitem__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
141 raise NotImplementedError |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36187
diff
changeset
|
142 |
36099
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
143 def _fetchandcache(self, key): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
144 if key in self.cache: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
145 return self.cache[key] |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
146 val = self._resolvedata(key) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
147 if val is not None: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
148 self.cache[key] = val |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
149 return val |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
150 else: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
151 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
152 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
153 def keys(self): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
154 """ Get a list of bookmark or branch names """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
155 if not self.loaded: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
156 self._load() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
157 return self.potentialentries.keys() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
158 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
159 def iteritems(self): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
160 """ Iterate over (name, node) tuples """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
161 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
162 if not self.loaded: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
163 self._load() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
164 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
165 for k, vtup in self.potentialentries.iteritems(): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
166 yield (k, [bin(vtup[0])]) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
167 |
36493
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36470
diff
changeset
|
168 class remotenames(object): |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
169 """ |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
170 This class encapsulates all the remotenames state. It also contains |
36099
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
171 methods to access that state in convenient ways. Remotenames are lazy |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
172 loaded. Whenever client code needs to ensure the freshest copy of |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
173 remotenames, use the `clearnames` method to force an eventual load. |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
174 """ |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
175 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
176 def __init__(self, repo, *args): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
177 self._repo = repo |
36099
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36098
diff
changeset
|
178 self.clearnames() |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
179 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
180 def clearnames(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
181 """ Clear all remote names state """ |
36493
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36470
diff
changeset
|
182 self.bookmarks = lazyremotenamedict("bookmarks", self._repo) |
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36470
diff
changeset
|
183 self.branches = lazyremotenamedict("branches", self._repo) |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
184 self._invalidatecache() |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
185 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
186 def _invalidatecache(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
187 self._nodetobmarks = None |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
188 self._nodetobranch = None |
37092
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
189 self._hoisttonodes = None |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
190 self._nodetohoists = None |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
191 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
192 def bmarktonodes(self): |
36493
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36470
diff
changeset
|
193 return self.bookmarks |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
194 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
195 def nodetobmarks(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
196 if not self._nodetobmarks: |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
197 bmarktonodes = self.bmarktonodes() |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
198 self._nodetobmarks = {} |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
199 for name, node in bmarktonodes.iteritems(): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
200 self._nodetobmarks.setdefault(node[0], []).append(name) |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
201 return self._nodetobmarks |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
202 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
203 def branchtonodes(self): |
36493
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36470
diff
changeset
|
204 return self.branches |
36098
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
205 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
206 def nodetobranch(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
207 if not self._nodetobranch: |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
208 branchtonodes = self.branchtonodes() |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
209 self._nodetobranch = {} |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
210 for name, nodes in branchtonodes.iteritems(): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
211 for node in nodes: |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
212 self._nodetobranch.setdefault(node, []).append(name) |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
213 return self._nodetobranch |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
214 |
37092
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
215 def hoisttonodes(self, hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
216 if not self._hoisttonodes: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
217 marktonodes = self.bmarktonodes() |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
218 self._hoisttonodes = {} |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
219 hoist += '/' |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
220 for name, node in marktonodes.iteritems(): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
221 if name.startswith(hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
222 name = name[len(hoist):] |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
223 self._hoisttonodes[name] = node |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
224 return self._hoisttonodes |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
225 |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
226 def nodetohoists(self, hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
227 if not self._nodetohoists: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
228 marktonodes = self.bmarktonodes() |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
229 self._nodetohoists = {} |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
230 hoist += '/' |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
231 for name, node in marktonodes.iteritems(): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
232 if name.startswith(hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
233 name = name[len(hoist):] |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
234 self._nodetohoists.setdefault(node[0], []).append(name) |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
235 return self._nodetohoists |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
236 |
39762
25cc5616adc9
bookmarks: pass in formatter to printbookmarks() instead of opts (API)
Yuya Nishihara <yuya@tcha.org>
parents:
38026
diff
changeset
|
237 def wrapprintbookmarks(orig, ui, repo, fm, bmarks): |
37093
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
238 if 'remotebookmarks' not in repo.names: |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
239 return |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
240 ns = repo.names['remotebookmarks'] |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
241 |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
242 for name in ns.listnames(repo): |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
243 nodes = ns.nodes(repo, name) |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
244 if not nodes: |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
245 continue |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
246 node = nodes[0] |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
247 |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
248 bmarks[name] = (node, ' ', '') |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
249 |
39762
25cc5616adc9
bookmarks: pass in formatter to printbookmarks() instead of opts (API)
Yuya Nishihara <yuya@tcha.org>
parents:
38026
diff
changeset
|
250 return orig(ui, repo, fm, bmarks) |
37093
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
251 |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
252 def extsetup(ui): |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
253 extensions.wrapfunction(bookmarks, '_printbookmarks', wrapprintbookmarks) |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37092
diff
changeset
|
254 |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
255 def reposetup(ui, repo): |
38026
b9e6b71dc272
remotenames: enable the storage config option if extension is enabled
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37817
diff
changeset
|
256 |
b9e6b71dc272
remotenames: enable the storage config option if extension is enabled
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37817
diff
changeset
|
257 # set the config option to store remotenames |
b9e6b71dc272
remotenames: enable the storage config option if extension is enabled
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37817
diff
changeset
|
258 repo.ui.setconfig('experimental', 'remotenames', True, 'remotenames-ext') |
b9e6b71dc272
remotenames: enable the storage config option if extension is enabled
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37817
diff
changeset
|
259 |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
260 if not repo.local(): |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
261 return |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
262 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
263 repo._remotenames = remotenames(repo) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
264 ns = namespaces.namespace |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
265 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
266 if ui.configbool('remotenames', 'bookmarks'): |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
267 remotebookmarkns = ns( |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
268 'remotebookmarks', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
269 templatename='remotebookmarks', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
270 colorname='remotebookmark', |
36297
18e29c65bc5c
remotenames: don't use the default value of logfmt for namespaces
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36285
diff
changeset
|
271 logfmt='remote bookmark: %s\n', |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
272 listnames=lambda repo: repo._remotenames.bmarktonodes().keys(), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
273 namemap=lambda repo, name: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
274 repo._remotenames.bmarktonodes().get(name, []), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
275 nodemap=lambda repo, node: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
276 repo._remotenames.nodetobmarks().get(node, [])) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
277 repo.names.addnamespace(remotebookmarkns) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
278 |
37092
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
279 # hoisting only works if there are remote bookmarks |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
280 hoist = ui.config('remotenames', 'hoistedpeer') |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
281 if hoist: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
282 hoistednamens = ns( |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
283 'hoistednames', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
284 templatename='hoistednames', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
285 colorname='hoistedname', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
286 logfmt='hoisted name: %s\n', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
287 listnames = lambda repo: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
288 repo._remotenames.hoisttonodes(hoist).keys(), |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
289 namemap = lambda repo, name: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
290 repo._remotenames.hoisttonodes(hoist).get(name, []), |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
291 nodemap = lambda repo, node: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
292 repo._remotenames.nodetohoists(hoist).get(node, [])) |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
293 repo.names.addnamespace(hoistednamens) |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37071
diff
changeset
|
294 |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
295 if ui.configbool('remotenames', 'branches'): |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
296 remotebranchns = ns( |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
297 'remotebranches', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
298 templatename='remotebranches', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
299 colorname='remotebranch', |
36297
18e29c65bc5c
remotenames: don't use the default value of logfmt for namespaces
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36285
diff
changeset
|
300 logfmt='remote branch: %s\n', |
36100
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
301 listnames = lambda repo: repo._remotenames.branchtonodes().keys(), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
302 namemap = lambda repo, name: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
303 repo._remotenames.branchtonodes().get(name, []), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
304 nodemap = lambda repo, node: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
305 repo._remotenames.nodetobranch().get(node, [])) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36099
diff
changeset
|
306 repo.names.addnamespace(remotebranchns) |
36101
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
307 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
36962
diff
changeset
|
308 @templatekeyword('remotenames', requires={'repo', 'ctx'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
309 def remotenameskw(context, mapping): |
36470
bb852a525633
remotenames: drop redundant templatekw names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36297
diff
changeset
|
310 """List of strings. Remote names associated with the changeset.""" |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
311 repo = context.resource(mapping, 'repo') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
312 ctx = context.resource(mapping, 'ctx') |
36101
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
313 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
314 remotenames = [] |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
315 if 'remotebookmarks' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
316 remotenames = repo.names['remotebookmarks'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
317 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
318 if 'remotebranches' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
319 remotenames += repo.names['remotebranches'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
320 |
36927
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
321 return templateutil.compatlist(context, mapping, 'remotename', remotenames, |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
322 plural='remotenames') |
36101
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
323 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
36962
diff
changeset
|
324 @templatekeyword('remotebookmarks', requires={'repo', 'ctx'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
325 def remotebookmarkskw(context, mapping): |
36470
bb852a525633
remotenames: drop redundant templatekw names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36297
diff
changeset
|
326 """List of strings. Remote bookmarks associated with the changeset.""" |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
327 repo = context.resource(mapping, 'repo') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
328 ctx = context.resource(mapping, 'ctx') |
36101
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
329 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
330 remotebmarks = [] |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
331 if 'remotebookmarks' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
332 remotebmarks = repo.names['remotebookmarks'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
333 |
36927
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
334 return templateutil.compatlist(context, mapping, 'remotebookmark', |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
335 remotebmarks, plural='remotebookmarks') |
36101
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
336 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
36962
diff
changeset
|
337 @templatekeyword('remotebranches', requires={'repo', 'ctx'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
338 def remotebrancheskw(context, mapping): |
36470
bb852a525633
remotenames: drop redundant templatekw names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36297
diff
changeset
|
339 """List of strings. Remote branches associated with the changeset.""" |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
340 repo = context.resource(mapping, 'repo') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36493
diff
changeset
|
341 ctx = context.resource(mapping, 'ctx') |
36101
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
342 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
343 remotebranches = [] |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
344 if 'remotebranches' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
345 remotebranches = repo.names['remotebranches'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36100
diff
changeset
|
346 |
36927
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
347 return templateutil.compatlist(context, mapping, 'remotebranch', |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
348 remotebranches, plural='remotebranches') |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
349 |
40066
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
350 def _revsetutil(repo, subset, x, rtypes): |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
351 """utility function to return a set of revs based on the rtypes""" |
40066
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
352 args = revsetlang.getargs(x, 0, 1, _('only one argument accepted')) |
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
353 if args: |
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
354 kind, pattern, matcher = stringutil.stringmatcher( |
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
355 revsetlang.getstring(args[0], _('argument must be a string'))) |
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
356 else: |
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
357 matcher = lambda a: True |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
358 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
359 revs = set() |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
360 cl = repo.changelog |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
361 for rtype in rtypes: |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
362 if rtype in repo.names: |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
363 ns = repo.names[rtype] |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
364 for name in ns.listnames(repo): |
40061
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
365 if not matcher(name): |
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
366 continue |
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
367 revs.update(ns.nodes(repo, name)) |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
368 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
369 results = (cl.rev(n) for n in revs if cl.hasnode(n)) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
370 return subset & smartset.baseset(sorted(results)) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
371 |
40061
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
372 @revsetpredicate('remotenames([name])') |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
373 def remotenamesrevset(repo, subset, x): |
40061
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
374 """All changesets which have a remotename on them. If `name` is |
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
375 specified, only remotenames of matching remote paths are considered. |
40060
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
376 |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
377 Pattern matching is supported for `name`. See :hg:`help revisions.patterns`. |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
378 """ |
40066
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
379 return _revsetutil(repo, subset, x, ('remotebookmarks', 'remotebranches')) |
40060
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
380 |
40061
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
381 @revsetpredicate('remotebranches([name])') |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
382 def remotebranchesrevset(repo, subset, x): |
40061
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
383 """All changesets which are branch heads on remotes. If `name` is |
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
384 specified, only remotenames of matching remote paths are considered. |
40060
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
385 |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
386 Pattern matching is supported for `name`. See :hg:`help revisions.patterns`. |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
387 """ |
40066
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
388 return _revsetutil(repo, subset, x, ('remotebranches',)) |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
389 |
40061
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
390 @revsetpredicate('remotebookmarks([name])') |
36187
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36101
diff
changeset
|
391 def remotebmarksrevset(repo, subset, x): |
40061
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
392 """All changesets which have bookmarks on remotes. If `name` is |
6346e21eecc8
remotenames: follow-up on D3639 to make revset funcs take only one arg
Augie Fackler <raf@durin42.com>
parents:
40060
diff
changeset
|
393 specified, only remotenames of matching remote paths are considered. |
40060
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
394 |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
395 Pattern matching is supported for `name`. See :hg:`help revisions.patterns`. |
fda1df3d4e06
remotenames: add names argument to remotenames revset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
39762
diff
changeset
|
396 """ |
40066
25533575d04e
remotenames: inline _parseargs() into _revsetutil()
Yuya Nishihara <yuya@tcha.org>
parents:
40061
diff
changeset
|
397 return _revsetutil(repo, subset, x, ('remotebookmarks',)) |