Mercurial > hg
annotate hgext/remotenames.py @ 37101:656ac240f392
context: skip path conflicts by default when clearing unknown file (issue5776)
Prior to adding path conflict checking in 989e884d1be9, the test-audit-path.t
tests failed as shown here (but it was globbed away). 989e884d1be9 made it fail
with a message about the destination manifest containing a conflict (though the
no-symlink case wasn't updated). When the path conflict checking was gated
behind an experimental config in 2a774cae3a03^::2a774cae3a03, the update started
erroneously succeeding here. It turns out that the child of 989e884d1be9 is the
origin of this change when path conflict checking is disabled, as shown by
grafting the experimental config range on top of it.
What's happening here is merge.batchget() is writing the symlink 'back' to wdir
(but as a regular file for the no-symlink case), and then tries to write
'back/test', but calls wctx['back/test'].clearunknown() first. The code that's
gated here was removing the newly written 'back' file, allowing 'back/test' to
succeed. I tried checking for the dir components of 'back/test' in dirstate,
and skipping removal if present. But that didn't work because the dirstate
isn't updated after each file is written out.
This is the last persistent test failure on Windows, so the testbot should start
turning green now. \o/
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 24 Mar 2018 01:30:50 -0400 |
parents | a61fff493d98 |
children | 678ab0de7296 |
rev | line source |
---|---|
36060
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 |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
9 """ showing remotebookmarks and remotebranches in UI |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
10 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
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:
36061
diff
changeset
|
12 control the individually are as follows. |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
13 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
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:
36061
diff
changeset
|
15 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
16 remotenames.bookmarks |
37089
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
17 Boolean value to enable or disable showing of remotebookmarks (default: True) |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
18 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
19 remotenames.branches |
37089
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
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:
37068
diff
changeset
|
21 |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
22 remotenames.hoistedpeer |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
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:
37068
diff
changeset
|
24 namespace (default: 'default') |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
25 """ |
36060
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 |
36149
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
29 from mercurial.i18n import _ |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
30 |
36061
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
31 from mercurial.node import ( |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
32 bin, |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
33 ) |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
34 from mercurial import ( |
37090
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
35 bookmarks, |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
36 extensions, |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
37 logexchange, |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
38 namespaces, |
36956
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
39 pycompat, |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
40 registrar, |
36149
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
41 revsetlang, |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
42 smartset, |
36921
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36591
diff
changeset
|
43 templateutil, |
36060
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 |
36956
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
46 if pycompat.ispy3: |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
47 import collections.abc |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
48 mutablemapping = collections.abc.MutableMapping |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
49 else: |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
50 import collections |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
51 mutablemapping = collections.MutableMapping |
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
52 |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
53 # 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
|
54 # 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
|
55 # 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
|
56 # leave the attribute unspecified. |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
57 testedwith = 'ships-with-hg-core' |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
58 |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
59 configtable = {} |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
60 configitem = registrar.configitem(configtable) |
36063
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
61 templatekeyword = registrar.templatekeyword() |
36149
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
62 revsetpredicate = registrar.revsetpredicate() |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
63 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
64 configitem('remotenames', 'bookmarks', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
65 default=True, |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
66 ) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
67 configitem('remotenames', 'branches', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
68 default=True, |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
69 ) |
37089
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
70 configitem('remotenames', 'hoistedpeer', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
71 default='default', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
72 ) |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
73 |
36956
b710fdebd0db
remotenames: work around move of ABCs in collections
Augie Fackler <augie@google.com>
parents:
36921
diff
changeset
|
74 class lazyremotenamedict(mutablemapping): |
36061
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
75 """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
76 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:
36060
diff
changeset
|
77 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
78 We are doing that because remotenames startup was slow. |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
79 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:
36060
diff
changeset
|
80 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:
36060
diff
changeset
|
81 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:
36060
diff
changeset
|
82 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:
36060
diff
changeset
|
83 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:
36060
diff
changeset
|
84 """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
85 def __init__(self, kind, repo): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
86 self.cache = {} |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
87 self.potentialentries = {} |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
88 self._kind = kind # bookmarks or branches |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
89 self._repo = repo |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
90 self.loaded = False |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
91 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
92 def _load(self): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
93 """ Read the remotenames file, store entries matching selected kind """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
94 self.loaded = True |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
95 repo = self._repo |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
96 for node, rpath, rname in logexchange.readremotenamefile(repo, |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
97 self._kind): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
98 name = rpath + '/' + rname |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
99 self.potentialentries[name] = (node, rpath, name) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
100 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
101 def _resolvedata(self, potentialentry): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
102 """ 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:
36060
diff
changeset
|
103 if not potentialentry in self.potentialentries: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
104 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
105 node, remote, name = self.potentialentries[potentialentry] |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
106 repo = self._repo |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
107 binnode = bin(node) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
108 # if the node doesn't exist, skip it |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
109 try: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
110 repo.changelog.rev(binnode) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
111 except LookupError: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
112 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
113 # Skip closed branches |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
114 if (self._kind == 'branches' and repo[binnode].closesbranch()): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
115 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
116 return [binnode] |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
117 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
118 def __getitem__(self, key): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
119 if not self.loaded: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
120 self._load() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
121 val = self._fetchandcache(key) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
122 if val is not None: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
123 return val |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
124 else: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
125 raise KeyError() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
126 |
36252
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
127 def __iter__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
128 return iter(self.potentialentries) |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
129 |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
130 def __len__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
131 return len(self.potentialentries) |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
132 |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
133 def __setitem__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
134 raise NotImplementedError |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
135 |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
136 def __delitem__(self): |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
137 raise NotImplementedError |
e37be270e163
remotenames: port partway to python3 by using collections.MutableMapping
Augie Fackler <augie@google.com>
parents:
36149
diff
changeset
|
138 |
36061
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
139 def _fetchandcache(self, key): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
140 if key in self.cache: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
141 return self.cache[key] |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
142 val = self._resolvedata(key) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
143 if val is not None: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
144 self.cache[key] = val |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
145 return val |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
146 else: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
147 return None |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
148 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
149 def keys(self): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
150 """ Get a list of bookmark or branch names """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
151 if not self.loaded: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
152 self._load() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
153 return self.potentialentries.keys() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
154 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
155 def iteritems(self): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
156 """ Iterate over (name, node) tuples """ |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
157 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
158 if not self.loaded: |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
159 self._load() |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
160 |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
161 for k, vtup in self.potentialentries.iteritems(): |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
162 yield (k, [bin(vtup[0])]) |
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
163 |
36463
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36440
diff
changeset
|
164 class remotenames(object): |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
165 """ |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
166 This class encapsulates all the remotenames state. It also contains |
36061
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
167 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:
36060
diff
changeset
|
168 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:
36060
diff
changeset
|
169 remotenames, use the `clearnames` method to force an eventual load. |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
170 """ |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
171 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
172 def __init__(self, repo, *args): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
173 self._repo = repo |
36061
be72f6420f3c
remotenames: introduce a class to lazily resolve remotnames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36060
diff
changeset
|
174 self.clearnames() |
36060
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 clearnames(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
177 """ Clear all remote names state """ |
36463
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36440
diff
changeset
|
178 self.bookmarks = lazyremotenamedict("bookmarks", self._repo) |
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36440
diff
changeset
|
179 self.branches = lazyremotenamedict("branches", self._repo) |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
180 self._invalidatecache() |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
181 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
182 def _invalidatecache(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
183 self._nodetobmarks = None |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
184 self._nodetobranch = None |
37089
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
185 self._hoisttonodes = None |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
186 self._nodetohoists = None |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
187 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
188 def bmarktonodes(self): |
36463
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36440
diff
changeset
|
189 return self.bookmarks |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
190 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
191 def nodetobmarks(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
192 if not self._nodetobmarks: |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
193 bmarktonodes = self.bmarktonodes() |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
194 self._nodetobmarks = {} |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
195 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
|
196 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
|
197 return self._nodetobmarks |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
198 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
199 def branchtonodes(self): |
36463
1bd132a021dd
remotenames: don't inherit the remotenames class from dict class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36440
diff
changeset
|
200 return self.branches |
36060
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
201 |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
202 def nodetobranch(self): |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
203 if not self._nodetobranch: |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
204 branchtonodes = self.branchtonodes() |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
205 self._nodetobranch = {} |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
206 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
|
207 for node in nodes: |
cabe8ef5c71e
remotenames: introduce class to encapsulate remotenames info in an extension
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
208 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
|
209 return self._nodetobranch |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
210 |
37089
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
211 def hoisttonodes(self, hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
212 if not self._hoisttonodes: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
213 marktonodes = self.bmarktonodes() |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
214 self._hoisttonodes = {} |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
215 hoist += '/' |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
216 for name, node in marktonodes.iteritems(): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
217 if name.startswith(hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
218 name = name[len(hoist):] |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
219 self._hoisttonodes[name] = node |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
220 return self._hoisttonodes |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
221 |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
222 def nodetohoists(self, hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
223 if not self._nodetohoists: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
224 marktonodes = self.bmarktonodes() |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
225 self._nodetohoists = {} |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
226 hoist += '/' |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
227 for name, node in marktonodes.iteritems(): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
228 if name.startswith(hoist): |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
229 name = name[len(hoist):] |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
230 self._nodetohoists.setdefault(node[0], []).append(name) |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
231 return self._nodetohoists |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
232 |
37090
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
233 def wrapprintbookmarks(orig, ui, repo, bmarks, **opts): |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
234 if 'remotebookmarks' not in repo.names: |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
235 return |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
236 ns = repo.names['remotebookmarks'] |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
237 |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
238 for name in ns.listnames(repo): |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
239 nodes = ns.nodes(repo, name) |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
240 if not nodes: |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
241 continue |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
242 node = nodes[0] |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
243 |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
244 bmarks[name] = (node, ' ', '') |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
245 |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
246 return orig(ui, repo, bmarks, **opts) |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
247 |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
248 def extsetup(ui): |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
249 extensions.wrapfunction(bookmarks, '_printbookmarks', wrapprintbookmarks) |
a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37089
diff
changeset
|
250 |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
251 def reposetup(ui, repo): |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
252 if not repo.local(): |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
253 return |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
254 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
255 repo._remotenames = remotenames(repo) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
256 ns = namespaces.namespace |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
257 |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
258 if ui.configbool('remotenames', 'bookmarks'): |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
259 remotebookmarkns = ns( |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
260 'remotebookmarks', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
261 templatename='remotebookmarks', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
262 colorname='remotebookmark', |
36264
18e29c65bc5c
remotenames: don't use the default value of logfmt for namespaces
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36252
diff
changeset
|
263 logfmt='remote bookmark: %s\n', |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
264 listnames=lambda repo: repo._remotenames.bmarktonodes().keys(), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
265 namemap=lambda repo, name: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
266 repo._remotenames.bmarktonodes().get(name, []), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
267 nodemap=lambda repo, node: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
268 repo._remotenames.nodetobmarks().get(node, [])) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
269 repo.names.addnamespace(remotebookmarkns) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
270 |
37089
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
271 # hoisting only works if there are remote bookmarks |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
272 hoist = ui.config('remotenames', 'hoistedpeer') |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
273 if hoist: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
274 hoistednamens = ns( |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
275 'hoistednames', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
276 templatename='hoistednames', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
277 colorname='hoistedname', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
278 logfmt='hoisted name: %s\n', |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
279 listnames = lambda repo: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
280 repo._remotenames.hoisttonodes(hoist).keys(), |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
281 namemap = lambda repo, name: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
282 repo._remotenames.hoisttonodes(hoist).get(name, []), |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
283 nodemap = lambda repo, node: |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
284 repo._remotenames.nodetohoists(hoist).get(node, [])) |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
285 repo.names.addnamespace(hoistednamens) |
9938992c5bae
remotenames: add functionality to hoist remotebookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37068
diff
changeset
|
286 |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
287 if ui.configbool('remotenames', 'branches'): |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
288 remotebranchns = ns( |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
289 'remotebranches', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
290 templatename='remotebranches', |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
291 colorname='remotebranch', |
36264
18e29c65bc5c
remotenames: don't use the default value of logfmt for namespaces
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36252
diff
changeset
|
292 logfmt='remote branch: %s\n', |
36062
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
293 listnames = lambda repo: repo._remotenames.branchtonodes().keys(), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
294 namemap = lambda repo, name: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
295 repo._remotenames.branchtonodes().get(name, []), |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
296 nodemap = lambda repo, node: |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
297 repo._remotenames.nodetobranch().get(node, [])) |
382aefea8faf
remotenames: add new namespaces for remotebookmarks and remotebranches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36061
diff
changeset
|
298 repo.names.addnamespace(remotebranchns) |
36063
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
299 |
37068
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
36956
diff
changeset
|
300 @templatekeyword('remotenames', requires={'repo', 'ctx'}) |
36591
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
301 def remotenameskw(context, mapping): |
36440
bb852a525633
remotenames: drop redundant templatekw names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36264
diff
changeset
|
302 """List of strings. Remote names associated with the changeset.""" |
36591
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
303 repo = context.resource(mapping, 'repo') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
304 ctx = context.resource(mapping, 'ctx') |
36063
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
305 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
306 remotenames = [] |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
307 if 'remotebookmarks' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
308 remotenames = repo.names['remotebookmarks'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
309 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
310 if 'remotebranches' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
311 remotenames += repo.names['remotebranches'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
312 |
36921
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36591
diff
changeset
|
313 return templateutil.compatlist(context, mapping, 'remotename', remotenames, |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36591
diff
changeset
|
314 plural='remotenames') |
36063
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
315 |
37068
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
36956
diff
changeset
|
316 @templatekeyword('remotebookmarks', requires={'repo', 'ctx'}) |
36591
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
317 def remotebookmarkskw(context, mapping): |
36440
bb852a525633
remotenames: drop redundant templatekw names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36264
diff
changeset
|
318 """List of strings. Remote bookmarks associated with the changeset.""" |
36591
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
319 repo = context.resource(mapping, 'repo') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
320 ctx = context.resource(mapping, 'ctx') |
36063
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
321 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
322 remotebmarks = [] |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
323 if 'remotebookmarks' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
324 remotebmarks = repo.names['remotebookmarks'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
325 |
36921
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36591
diff
changeset
|
326 return templateutil.compatlist(context, mapping, 'remotebookmark', |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36591
diff
changeset
|
327 remotebmarks, plural='remotebookmarks') |
36063
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
328 |
37068
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
36956
diff
changeset
|
329 @templatekeyword('remotebranches', requires={'repo', 'ctx'}) |
36591
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
330 def remotebrancheskw(context, mapping): |
36440
bb852a525633
remotenames: drop redundant templatekw names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36264
diff
changeset
|
331 """List of strings. Remote branches associated with the changeset.""" |
36591
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
332 repo = context.resource(mapping, 'repo') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36463
diff
changeset
|
333 ctx = context.resource(mapping, 'ctx') |
36063
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
334 |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
335 remotebranches = [] |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
336 if 'remotebranches' in repo.names: |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
337 remotebranches = repo.names['remotebranches'].names(repo, ctx.node()) |
5a53af7d09aa
remotenames: introduce new template keywords for remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36062
diff
changeset
|
338 |
36921
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36591
diff
changeset
|
339 return templateutil.compatlist(context, mapping, 'remotebranch', |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36591
diff
changeset
|
340 remotebranches, plural='remotebranches') |
36149
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
341 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
342 def _revsetutil(repo, subset, x, rtypes): |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
343 """utility function to return a set of revs based on the rtypes""" |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
344 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
345 revs = set() |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
346 cl = repo.changelog |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
347 for rtype in rtypes: |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
348 if rtype in repo.names: |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
349 ns = repo.names[rtype] |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
350 for name in ns.listnames(repo): |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
351 revs.update(ns.nodes(repo, name)) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
352 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
353 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:
36063
diff
changeset
|
354 return subset & smartset.baseset(sorted(results)) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
355 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
356 @revsetpredicate('remotenames()') |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
357 def remotenamesrevset(repo, subset, x): |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
358 """All changesets which have a remotename on them.""" |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
359 revsetlang.getargs(x, 0, 0, _("remotenames takes no arguments")) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
360 return _revsetutil(repo, subset, x, ('remotebookmarks', 'remotebranches')) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
361 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
362 @revsetpredicate('remotebranches()') |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
363 def remotebranchesrevset(repo, subset, x): |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
364 """All changesets which are branch heads on remotes.""" |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
365 revsetlang.getargs(x, 0, 0, _("remotebranches takes no arguments")) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
366 return _revsetutil(repo, subset, x, ('remotebranches',)) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
367 |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
368 @revsetpredicate('remotebookmarks()') |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
369 def remotebmarksrevset(repo, subset, x): |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
370 """All changesets which have bookmarks on remotes.""" |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
371 revsetlang.getargs(x, 0, 0, _("remotebookmarks takes no arguments")) |
828f44cdfee3
remotenames: add three new revsets related to remotenames
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36063
diff
changeset
|
372 return _revsetutil(repo, subset, x, ('remotebookmarks',)) |