annotate hggit/overlay.py @ 612:bf8518b09d57

overlays: fix incoming support for hg 2.8 This was crafted mostly via a bunch of aimless flailing in the code. I'm pretty well convinced at this point that the incoming support needs to be rewritten slightly to behave properly in the new world order (specifically, the overlayrepo class probably should be subclassing localrepo, or else more directly reimplementing things instead of trying to forward methods.)
author Augie Fackler <raf@durin42.com>
date Sat, 05 Oct 2013 17:40:50 -0400
parents 3964de9961ec
children 0a514e303a06
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
1 # overlay classes for repositories
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
2 # unifies access to unimported git objects and committed hg objects
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
3 # designed to support incoming
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
4 #
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
5 # incomplete, implemented on demand
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
6
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
7 from mercurial import ancestor
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
8 from mercurial import manifest
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
9 from mercurial import context
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
10 from mercurial.node import bin, hex, nullid
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
11 from mercurial import localrepo
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
12
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
13 class overlaymanifest(object):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
14 def __init__(self, repo, sha):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
15 self.repo = repo
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
16 self.tree = repo.handler.git.get_object(sha)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
17 self._map = None
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
18 self._flagmap = None
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
19
466
ac16efd25cc4 overlaymanifest: add the withflags method introduced in hg change a1dcd842ce17
Augie Fackler <raf@durin42.com>
parents: 423
diff changeset
20 def withflags(self):
ac16efd25cc4 overlaymanifest: add the withflags method introduced in hg change a1dcd842ce17
Augie Fackler <raf@durin42.com>
parents: 423
diff changeset
21 self.load()
ac16efd25cc4 overlaymanifest: add the withflags method introduced in hg change a1dcd842ce17
Augie Fackler <raf@durin42.com>
parents: 423
diff changeset
22 return set([path for path, flag in self._flagmap.iteritems()
ac16efd25cc4 overlaymanifest: add the withflags method introduced in hg change a1dcd842ce17
Augie Fackler <raf@durin42.com>
parents: 423
diff changeset
23 if flag & 020100])
ac16efd25cc4 overlaymanifest: add the withflags method introduced in hg change a1dcd842ce17
Augie Fackler <raf@durin42.com>
parents: 423
diff changeset
24
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
25 def copy(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
26 return overlaymanifest(self.repo, self.tree.id)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
27
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
28 def keys(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
29 self.load()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
30 return self._map.keys()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
31
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
32 def iterkeys(self):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
33 return iter(self.keys())
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
34
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
35 def flags(self, path):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
36 self.load()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
37
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
38 def hgflag(gitflag):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
39 if gitflag & 0100:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
40 return 'x'
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
41 elif gitflag & 020000:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
42 return 'l'
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
43 else:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
44 return ''
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
45
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
46 return hgflag(self._flagmap[path])
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
47
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
48 def load(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
49 if self._map is not None:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
50 return
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
51
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
52 self._map = {}
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
53 self._flagmap = {}
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
54
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
55 def addtree(tree, dirname):
423
f29401590803 overlay: stop using deprecated tree.entries() method
Augie Fackler <durin42@gmail.com>
parents: 408
diff changeset
56 for entry in tree.iteritems():
f29401590803 overlay: stop using deprecated tree.entries() method
Augie Fackler <durin42@gmail.com>
parents: 408
diff changeset
57 if entry.mode & 040000:
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
58 # expand directory
423
f29401590803 overlay: stop using deprecated tree.entries() method
Augie Fackler <durin42@gmail.com>
parents: 408
diff changeset
59 subtree = self.repo.handler.git.get_object(entry.sha)
f29401590803 overlay: stop using deprecated tree.entries() method
Augie Fackler <durin42@gmail.com>
parents: 408
diff changeset
60 addtree(subtree, dirname + entry.path + '/')
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
61 else:
423
f29401590803 overlay: stop using deprecated tree.entries() method
Augie Fackler <durin42@gmail.com>
parents: 408
diff changeset
62 path = dirname + entry.path
f29401590803 overlay: stop using deprecated tree.entries() method
Augie Fackler <durin42@gmail.com>
parents: 408
diff changeset
63 self._map[path] = bin(entry.sha)
f29401590803 overlay: stop using deprecated tree.entries() method
Augie Fackler <durin42@gmail.com>
parents: 408
diff changeset
64 self._flagmap[path] = entry.mode
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
65
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
66 addtree(self.tree, '')
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
67
597
3964de9961ec overlaymanifest: add iteritems(), used by recent hg versions
Augie Fackler <raf@durin42.com>
parents: 570
diff changeset
68 def iteritems(self):
3964de9961ec overlaymanifest: add iteritems(), used by recent hg versions
Augie Fackler <raf@durin42.com>
parents: 570
diff changeset
69 self.load()
3964de9961ec overlaymanifest: add iteritems(), used by recent hg versions
Augie Fackler <raf@durin42.com>
parents: 570
diff changeset
70 return self._map.iteritems()
3964de9961ec overlaymanifest: add iteritems(), used by recent hg versions
Augie Fackler <raf@durin42.com>
parents: 570
diff changeset
71
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
72 def __iter__(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
73 self.load()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
74 return self._map.__iter__()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
75
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
76 def __getitem__(self, path):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
77 self.load()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
78 return self._map[path]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
79
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
80 def __delitem__(self, path):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
81 del self._map[path]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
82
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
83 class overlayfilectx(object):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
84 def __init__(self, repo, path, fileid=None):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
85 self.repo = repo
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
86 self._path = path
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
87 self.fileid = fileid
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
88
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
89 # this is a hack to skip copy detection
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
90 def ancestors(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
91 return [self, self]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
92
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
93 def filenode(self):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
94 return nullid
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
95
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
96 def rev(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
97 return -1
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
98
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
99 def path(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
100 return self._path
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
101
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
102 def filelog(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
103 return self.fileid
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
104
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
105 def data(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
106 blob = self.repo.handler.git.get_object(self.fileid)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
107 return blob.data
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
108
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
109 class overlaychangectx(context.changectx):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
110 def __init__(self, repo, sha):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
111 self.repo = repo
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
112 if not isinstance(sha, basestring):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
113 sha = sha.hex()
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
114 self.commit = repo.handler.git.get_object(sha)
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
115 self._overlay = getattr(repo, 'gitoverlay', repo)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
116 self._rev = self._overlay.rev(bin(self.commit.id))
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
117
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
118 def node(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
119 return bin(self.commit.id)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
120
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
121 def rev(self):
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
122 return self._rev
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
123
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
124 def date(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
125 return self.commit.author_time, self.commit.author_timezone
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
126
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
127 def branch(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
128 return 'default'
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
129
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
130 def user(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
131 return self.commit.author
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
132
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
133 def files(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
134 return []
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
135
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
136 def extra(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
137 return {}
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
138
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
139 def description(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
140 return self.commit.message
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
141
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
142 def parents(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
143 return [overlaychangectx(self.repo, sha) for sha in self.commit.parents]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
144
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
145 def manifestnode(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
146 return bin(self.commit.tree)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
147
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
148 def hex(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
149 return self.commit.id
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
150
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
151 def tags(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
152 return []
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
153
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
154 def bookmarks(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
155 return []
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
156
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
157 def manifest(self):
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
158 return overlaymanifest(self._overlay, self.commit.tree)
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
159
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
160 def filectx(self, path, filelog=None):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
161 mf = self.manifest()
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
162 return overlayfilectx(self._overlay, path, mf[path])
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
163
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
164 def flags(self, path):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
165 mf = self.manifest()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
166 return mf.flags(path)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
167
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
168 def __nonzero__(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
169 return True
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
170
568
41f6e3df67b1 overlaychangectx: fix compatibility with mercurial 2.4-rc (no attribute _repo)
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
171 def phase(self):
41f6e3df67b1 overlaychangectx: fix compatibility with mercurial 2.4-rc (no attribute _repo)
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
172 try:
41f6e3df67b1 overlaychangectx: fix compatibility with mercurial 2.4-rc (no attribute _repo)
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
173 from mercurial import phases
41f6e3df67b1 overlaychangectx: fix compatibility with mercurial 2.4-rc (no attribute _repo)
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
174 return phases.draft
41f6e3df67b1 overlaychangectx: fix compatibility with mercurial 2.4-rc (no attribute _repo)
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
175 except ImportError:
41f6e3df67b1 overlaychangectx: fix compatibility with mercurial 2.4-rc (no attribute _repo)
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
176 return 1
41f6e3df67b1 overlaychangectx: fix compatibility with mercurial 2.4-rc (no attribute _repo)
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
177
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
178 class overlayrevlog(object):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
179 def __init__(self, repo, base):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
180 self.repo = repo
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
181 self.base = base
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
182
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
183 def parents(self, n):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
184 gitrev = self.repo.revmap.get(n)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
185 if not gitrev:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
186 # we've reached a revision we have
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
187 return self.base.parents(n)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
188 commit = self.repo.handler.git.get_object(n)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
189
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
190 def gitorhg(n):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
191 hn = self.repo.handler.map_hg_get(hex(n))
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
192 if hn is not None:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
193 return bin(hn)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
194 return n
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
195
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
196 # currently ignores the octopus
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
197 p1 = gitorhg(bin(commit.parents[0]))
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
198 if len(commit.parents) > 1:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
199 p2 = gitorhg(bin(commit.parents[1]))
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
200 else:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
201 p2 = nullid
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
202
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
203 return [p1, p2]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
204
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
205 def ancestor(self, a, b):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
206 anode = self.repo.nodemap.get(a)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
207 bnode = self.repo.nodemap.get(b)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
208 if anode is None and bnode is None:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
209 return self.base.ancestor(a, b)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
210 ancs = ancestor.ancestors(self.parentrevs, a, b)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
211 if ancs:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
212 return min(map(self.node, ancs))
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
213 return nullid
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
214
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
215 def parentrevs(self, rev):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
216 return [self.rev(p) for p in self.parents(self.node(rev))]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
217
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
218 def node(self, rev):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
219 gitnode = self.repo.nodemap.get(rev)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
220 if gitnode is None:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
221 return self.base.node(rev)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
222 return gitnode
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
223
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
224 def rev(self, n):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
225 gitrev = self.repo.revmap.get(n)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
226 if gitrev is None:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
227 return self.base.rev(n)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
228 return gitrev
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
229
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
230 def nodesbetween(self, nodelist, revs):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
231 # this is called by pre-1.9 incoming with the nodelist we returned from
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
232 # getremotechanges. Just return it back.
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
233 return [nodelist]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
234
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
235 def __len__(self):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
236 return len(self.repo.handler.repo) + len(self.repo.revmap)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
237
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
238 class overlaymanifestlog(overlayrevlog):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
239 def read(self, sha):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
240 if sha == nullid:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
241 return manifest.manifestdict()
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
242 return overlaymanifest(self.repo, sha)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
243
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
244 class overlaychangelog(overlayrevlog):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
245 def read(self, sha):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
246 if isinstance(sha, int):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
247 sha = self.node(sha)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
248 if sha == nullid:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
249 return (nullid, "", (0, 0), [], "", {})
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
250 return overlaychangectx(self.repo, sha)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
251
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
252
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
253 class overlayrepo(object):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
254 def __init__(self, handler, commits, refs):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
255 self.handler = handler
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
256
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
257 self.changelog = overlaychangelog(self, handler.repo.changelog)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
258 self.manifest = overlaymanifestlog(self, handler.repo.manifest)
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
259
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
260 # for incoming -p
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
261 self.root = handler.repo.root
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
262 self.getcwd = handler.repo.getcwd
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
263 # self.status = handler.repo.status
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
264 self.ui = handler.repo.ui
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
265
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
266 self.revmap = None
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
267 self.nodemap = None
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
268 self.refmap = None
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
269 self.tagmap = None
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
270
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
271 self._makemaps(commits, refs)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
272
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
273 def __getitem__(self, n):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
274 if n not in self.revmap:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
275 return self.handler.repo[n]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
276 return overlaychangectx(self, n)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
277
612
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
278 def _handlerhack(self, method, *args, **kwargs):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
279 nothing = object()
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
280 r = self.handler.repo
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
281 oldhandler = getattr(r, 'handler', nothing)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
282 oldoverlay = getattr(r, 'gitoverlay', nothing)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
283 r.handler = self.handler
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
284 r.gitoverlay = self
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
285 try:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
286 return getattr(r, method)(*args, **kwargs)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
287 finally:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
288 if oldhandler is nothing:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
289 del r.handler
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
290 else:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
291 r.handler = oldhandler
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
292 if oldoverlay is nothing:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
293 del r.gitoverlay
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
294 else:
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
295 r.gitoverlay = oldoverlay
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
296
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
297 def status(self, *args, **kwargs):
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
298 return self._handlerhack('status', *args, **kwargs)
bf8518b09d57 overlays: fix incoming support for hg 2.8
Augie Fackler <raf@durin42.com>
parents: 597
diff changeset
299
557
4f4ab2d89375 gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
300 def node(self, n):
4f4ab2d89375 gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
301 """Returns an Hg or Git hash for the specified Git hash"""
4f4ab2d89375 gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
302 if bin(n) in self.revmap:
4f4ab2d89375 gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
303 return n
4f4ab2d89375 gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
304 return self.handler.map_hg_get(n)
4f4ab2d89375 gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents: 466
diff changeset
305
408
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
306 def nodebookmarks(self, n):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
307 return self.refmap.get(n, [])
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
308
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
309 def nodetags(self, n):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
310 return self.tagmap.get(n, [])
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
311
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
312 def rev(self, n):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
313 return self.revmap[n]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
314
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
315 def filectx(self, path, fileid=None):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
316 return overlayfilectx(self, path, fileid=fileid)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
317
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
318 def _makemaps(self, commits, refs):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
319 baserev = self.handler.repo['tip'].rev()
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
320 self.revmap = {}
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
321 self.nodemap = {}
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
322 for i, n in enumerate(commits):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
323 rev = baserev + i + 1
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
324 self.revmap[n] = rev
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
325 self.nodemap[rev] = n
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
326
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
327 self.refmap = {}
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
328 self.tagmap = {}
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
329 for ref in refs:
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
330 if ref.startswith('refs/heads/'):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
331 refname = ref[11:]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
332 self.refmap.setdefault(bin(refs[ref]), []).append(refname)
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
333 elif ref.startswith('refs/tags/'):
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
334 tagname = ref[10:]
2dcfd4bbfc1a Support for hg incoming
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
335 self.tagmap.setdefault(bin(refs[ref]), []).append(tagname)