Mercurial > public > mercurial-scm > hg-stable
comparison hgext/git/gitlog.py @ 44904:3e09d22a0bf5
git: implement some changelog methods
Differential Revision: https://phab.mercurial-scm.org/D8540
author | Romain DEP. <rom1dep@gmail.com> |
---|---|
date | Mon, 11 May 2020 21:54:05 +0200 |
parents | 8bfc6cc8e480 |
children | 83e41b73d115 |
comparison
equal
deleted
inserted
replaced
44903:8bfc6cc8e480 | 44904:3e09d22a0bf5 |
---|---|
245 | 245 |
246 # Cleanup opportunity: this is *identical* to the revlog.py version | 246 # Cleanup opportunity: this is *identical* to the revlog.py version |
247 def descendants(self, revs): | 247 def descendants(self, revs): |
248 return dagop.descendantrevs(revs, self.revs, self.parentrevs) | 248 return dagop.descendantrevs(revs, self.revs, self.parentrevs) |
249 | 249 |
250 def incrementalmissingrevs(self, common=None): | |
251 """Return an object that can be used to incrementally compute the | |
252 revision numbers of the ancestors of arbitrary sets that are not | |
253 ancestors of common. This is an ancestor.incrementalmissingancestors | |
254 object. | |
255 | |
256 'common' is a list of revision numbers. If common is not supplied, uses | |
257 nullrev. | |
258 """ | |
259 if common is None: | |
260 common = [nodemod.nullrev] | |
261 | |
262 return ancestor.incrementalmissingancestors(self.parentrevs, common) | |
263 | |
264 def findmissing(self, common=None, heads=None): | |
265 """Return the ancestors of heads that are not ancestors of common. | |
266 | |
267 More specifically, return a list of nodes N such that every N | |
268 satisfies the following constraints: | |
269 | |
270 1. N is an ancestor of some node in 'heads' | |
271 2. N is not an ancestor of any node in 'common' | |
272 | |
273 The list is sorted by revision number, meaning it is | |
274 topologically sorted. | |
275 | |
276 'heads' and 'common' are both lists of node IDs. If heads is | |
277 not supplied, uses all of the revlog's heads. If common is not | |
278 supplied, uses nullid.""" | |
279 if common is None: | |
280 common = [nodemod.nullid] | |
281 if heads is None: | |
282 heads = self.heads() | |
283 | |
284 common = [self.rev(n) for n in common] | |
285 heads = [self.rev(n) for n in heads] | |
286 | |
287 inc = self.incrementalmissingrevs(common=common) | |
288 return [self.node(r) for r in inc.missingancestors(heads)] | |
289 | |
290 def children(self, node): | |
291 """find the children of a given node""" | |
292 c = [] | |
293 p = self.rev(node) | |
294 for r in self.revs(start=p + 1): | |
295 prevs = [pr for pr in self.parentrevs(r) if pr != nodemod.nullrev] | |
296 if prevs: | |
297 for pr in prevs: | |
298 if pr == p: | |
299 c.append(self.node(r)) | |
300 elif p == nodemod.nullrev: | |
301 c.append(self.node(r)) | |
302 return c | |
303 | |
250 def reachableroots(self, minroot, heads, roots, includepath=False): | 304 def reachableroots(self, minroot, heads, roots, includepath=False): |
251 return dagop._reachablerootspure( | 305 return dagop._reachablerootspure( |
252 self.parentrevs, minroot, roots, heads, includepath | 306 self.parentrevs, minroot, roots, heads, includepath |
253 ) | 307 ) |
254 | 308 |