equal
deleted
inserted
replaced
114 # compute hidden (XXX should move elsewhere) |
114 # compute hidden (XXX should move elsewhere) |
115 if not getattr(ctx._repo.changelog, 'hiddeninit', False): |
115 if not getattr(ctx._repo.changelog, 'hiddeninit', False): |
116 shown = ['not obsolete()', '.', 'bookmark()', 'tagged()', |
116 shown = ['not obsolete()', '.', 'bookmark()', 'tagged()', |
117 'publishedheads()'] |
117 'publishedheads()'] |
118 basicquery = 'obsolete() - (::(%s))' % (' or '.join(shown)) |
118 basicquery = 'obsolete() - (::(%s))' % (' or '.join(shown)) |
119 for rev in scmutil.revrange(ctx._repo, [basicquery]): |
119 ctx._repo.changelog.hiddenrevs.update( |
120 ctx._repo.changelog.hiddenrevs.add(rev) |
120 scmutil.revrange(ctx._repo, [basicquery])) |
121 ctx._repo.changelog.hiddeninit = True |
121 ctx._repo.changelog.hiddeninit = True |
122 |
122 |
123 return ohidden(ctx) |
123 return ohidden(ctx) |
124 context.changectx.hidden = hidden |
124 context.changectx.hidden = hidden |
125 |
125 |
128 |
128 |
129 def revsetobsolete(repo, subset, x): |
129 def revsetobsolete(repo, subset, x): |
130 """filter obsolet entry""" |
130 """filter obsolet entry""" |
131 args = revset.getargs(x, 0, 0, 'publicheads takes no arguments') |
131 args = revset.getargs(x, 0, 0, 'publicheads takes no arguments') |
132 # XXX slow stop using context |
132 # XXX slow stop using context |
133 return [r for r in subset if repo[r].obsolete()] |
133 return [r for r in subset if r in repo._obsoleteset] |
134 |
134 |
135 ### Other Extension compat |
135 ### Other Extension compat |
136 ############################ |
136 ############################ |
137 |
137 |
138 def concludenode(orig, repo, rev, *args, **kwargs): |
138 def concludenode(orig, repo, rev, *args, **kwargs): |
328 return self._obsobjrels.get(node, set()) |
328 return self._obsobjrels.get(node, set()) |
329 |
329 |
330 def obsolete(self, node): |
330 def obsolete(self, node): |
331 """return the set of node that <node> make obsolete (sub)""" |
331 """return the set of node that <node> make obsolete (sub)""" |
332 return self._obssubrels.get(node, set()) |
332 return self._obssubrels.get(node, set()) |
|
333 |
|
334 @util.propertycache |
|
335 def _obsoleteset(self): |
|
336 obs = set() |
|
337 for obj in self._obsobjrels: |
|
338 try: |
|
339 obs.add(self.changelog.rev(obj)) |
|
340 except error.LookupError: |
|
341 pass |
|
342 return obs |
333 |
343 |
334 def addobsolete(self, sub, obj): |
344 def addobsolete(self, sub, obj): |
335 """Add a relation marking that node <sub> is a new version of <obj>""" |
345 """Add a relation marking that node <sub> is a new version of <obj>""" |
336 if sub == nullid: |
346 if sub == nullid: |
337 sub = None |
347 sub = None |
349 % {'sub': short(sub), 'obj': short(obj)}) |
359 % {'sub': short(sub), 'obj': short(obj)}) |
350 self.changelog.hiddenrevs.add(repo[obj].rev()) |
360 self.changelog.hiddenrevs.add(repo[obj].rev()) |
351 except (error.RepoLookupError, error.LookupError): |
361 except (error.RepoLookupError, error.LookupError): |
352 pass #unknow revision (but keep propagating the data |
362 pass #unknow revision (but keep propagating the data |
353 self._writeobsrels() |
363 self._writeobsrels() |
|
364 if '_obsobjrels' in vars(self): |
|
365 del self._obsobjrels |
|
366 if '_obssubrels' in vars(self): |
|
367 del self._obssubrels |
|
368 if '_obsoleteset' in vars(self): |
|
369 del self._obsoleteset |
354 |
370 |
355 ### obsolete storage |
371 ### obsolete storage |
356 @util.propertycache |
372 @util.propertycache |
357 def _obsobjrels(self): |
373 def _obsobjrels(self): |
358 """{<old-node> -> set(<new-node>)} |
374 """{<old-node> -> set(<new-node>)} |