Mercurial > public > mercurial-scm > hg-stable
comparison hgext/git/gitlog.py @ 47084:7431f5ab0d2a
branching: merge stable into default
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Mon, 03 May 2021 18:55:19 +0200 |
parents | d55b71393907 f8fa7ec53517 |
children | 6000f5b25c9b |
comparison
equal
deleted
inserted
replaced
47083:12450fbea288 | 47084:7431f5ab0d2a |
---|---|
63 raise error.LookupError(r, b'00changelog.i', _(b'no node')) | 63 raise error.LookupError(r, b'00changelog.i', _(b'no node')) |
64 return bin(t[0]) | 64 return bin(t[0]) |
65 | 65 |
66 def hasnode(self, n): | 66 def hasnode(self, n): |
67 t = self._db.execute( | 67 t = self._db.execute( |
68 'SELECT node FROM changelog WHERE node = ?', (n,) | 68 'SELECT node FROM changelog WHERE node = ?', |
69 (pycompat.sysstr(n),), | |
69 ).fetchone() | 70 ).fetchone() |
70 return t is not None | 71 return t is not None |
71 | 72 |
72 | 73 |
73 class baselogindex(object): | 74 class baselogindex(object): |
142 return bin(t[0]) | 143 return bin(t[0]) |
143 return sha1nodeconstants.nullid | 144 return sha1nodeconstants.nullid |
144 | 145 |
145 def revs(self, start=0, stop=None): | 146 def revs(self, start=0, stop=None): |
146 if stop is None: | 147 if stop is None: |
147 stop = self.tip() | 148 stop = self.tiprev() |
148 t = self._db.execute( | 149 t = self._db.execute( |
149 'SELECT rev FROM changelog ' | 150 'SELECT rev FROM changelog ' |
150 'WHERE rev >= ? AND rev <= ? ' | 151 'WHERE rev >= ? AND rev <= ? ' |
151 'ORDER BY REV ASC', | 152 'ORDER BY REV ASC', |
152 (start, stop), | 153 (start, stop), |
154 return (int(r[0]) for r in t) | 155 return (int(r[0]) for r in t) |
155 | 156 |
156 def tiprev(self): | 157 def tiprev(self): |
157 t = self._db.execute( | 158 t = self._db.execute( |
158 'SELECT rev FROM changelog ' 'ORDER BY REV DESC ' 'LIMIT 1' | 159 'SELECT rev FROM changelog ' 'ORDER BY REV DESC ' 'LIMIT 1' |
159 ) | 160 ).fetchone() |
160 return next(t) | 161 |
162 if t is not None: | |
163 return t[0] | |
164 return -1 | |
161 | 165 |
162 def _partialmatch(self, id): | 166 def _partialmatch(self, id): |
163 if sha1nodeconstants.wdirhex.startswith(id): | 167 if sha1nodeconstants.wdirhex.startswith(id): |
164 raise error.WdirUnsupported | 168 raise error.WdirUnsupported |
165 candidates = [ | 169 candidates = [ |
166 bin(x[0]) | 170 bin(x[0]) |
167 for x in self._db.execute( | 171 for x in self._db.execute( |
168 'SELECT node FROM changelog WHERE node LIKE ?', (id + b'%',) | 172 'SELECT node FROM changelog WHERE node LIKE ?', |
173 (pycompat.sysstr(id + b'%'),), | |
169 ) | 174 ) |
170 ] | 175 ] |
171 if sha1nodeconstants.nullhex.startswith(id): | 176 if sha1nodeconstants.nullhex.startswith(id): |
172 candidates.append(sha1nodeconstants.nullid) | 177 candidates.append(sha1nodeconstants.nullid) |
173 if len(candidates) > 1: | 178 if len(candidates) > 1: |
211 # Ensure we have a node id | 216 # Ensure we have a node id |
212 if isinstance(nodeorrev, int): | 217 if isinstance(nodeorrev, int): |
213 n = self.node(nodeorrev) | 218 n = self.node(nodeorrev) |
214 else: | 219 else: |
215 n = nodeorrev | 220 n = nodeorrev |
221 extra = {b'branch': b'default'} | |
216 # handle looking up nullid | 222 # handle looking up nullid |
217 if n == sha1nodeconstants.nullid: | 223 if n == sha1nodeconstants.nullid: |
218 return hgchangelog._changelogrevision( | 224 return hgchangelog._changelogrevision( |
219 extra={}, manifest=sha1nodeconstants.nullid | 225 extra=extra, manifest=sha1nodeconstants.nullid |
220 ) | 226 ) |
221 hn = gitutil.togitnode(n) | 227 hn = gitutil.togitnode(n) |
222 # We've got a real commit! | 228 # We've got a real commit! |
223 files = [ | 229 files = [ |
224 r[0] | 230 r[0] |
231 filesremoved = [ | 237 filesremoved = [ |
232 r[0] | 238 r[0] |
233 for r in self._db.execute( | 239 for r in self._db.execute( |
234 'SELECT filename FROM changedfiles ' | 240 'SELECT filename FROM changedfiles ' |
235 'WHERE node = ? and filenode = ?', | 241 'WHERE node = ? and filenode = ?', |
236 (hn, sha1nodeconstants.nullhex), | 242 (hn, gitutil.nullgit), |
237 ) | 243 ) |
238 ] | 244 ] |
239 c = self.gitrepo[hn] | 245 c = self.gitrepo[hn] |
240 return hgchangelog._changelogrevision( | 246 return hgchangelog._changelogrevision( |
241 manifest=n, # pretend manifest the same as the commit node | 247 manifest=n, # pretend manifest the same as the commit node |
245 files=files, | 251 files=files, |
246 # TODO filesadded in the index | 252 # TODO filesadded in the index |
247 filesremoved=filesremoved, | 253 filesremoved=filesremoved, |
248 description=c.message.encode('utf8'), | 254 description=c.message.encode('utf8'), |
249 # TODO do we want to handle extra? how? | 255 # TODO do we want to handle extra? how? |
250 extra={b'branch': b'default'}, | 256 extra=extra, |
251 ) | 257 ) |
252 | 258 |
253 def ancestors(self, revs, stoprev=0, inclusive=False): | 259 def ancestors(self, revs, stoprev=0, inclusive=False): |
254 revs = list(revs) | 260 revs = list(revs) |
255 tip = self.rev(self.tip()) | 261 tip = self.rev(self.tip()) |