##// END OF EJS Templates
git: implement some changelog methods...
Romain DEP. -
r45364:3e09d22a default
parent child Browse files
Show More
@@ -247,6 +247,60 b' class changelog(baselog):'
247 247 def descendants(self, revs):
248 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 304 def reachableroots(self, minroot, heads, roots, includepath=False):
251 305 return dagop._reachablerootspure(
252 306 self.parentrevs, minroot, roots, heads, includepath
General Comments 0
You need to be logged in to leave comments. Login now