# HG changeset patch # User Pierre-Yves David # Date 1315390026 -7200 # Node ID 9493ffa6863326ac299234064adbcab5c8e5a218 # Parent 6531b01b2763c9c6977ab8cf24f1f449f4b5ae1c Documentation ! diff -r 6531b01b2763 -r 9493ffa68633 obsolete.py --- a/obsolete.py Mon Aug 01 15:25:41 2011 +0200 +++ b/obsolete.py Wed Sep 07 12:07:06 2011 +0200 @@ -14,6 +14,7 @@ ############################# def obsolete(ctx): + """is the changeset obsolete by other""" if ctx.node()is None: return False return boolean(ctx._repo.obsoleteby(ctx.node())) @@ -31,7 +32,9 @@ def cmddebugobsolete(ui, repo, subject, object): - """show enabled states""" + """Add an obsolete relation between a too node + + The subject is expected to be a newer version of the object""" sub = repo[subject] obj = repo[object] repo.addobsolete(sub.node(), obj.node()) @@ -45,25 +48,38 @@ @util.propertycache def hiddenrevs(self): + # It's a property because It simpler that to handle the __init__ revs = set() return revs @util.propertycache def _obsobjrels(self): + """{ -> set()} + + also compute hidden revision""" + #reverse sub -> objs mapping objrels = {} for sub, objs in self._obssubrels.iteritems(): for obj in objs: objrels.setdefault(obj, set()).add(sub) + + # compute hidden (XXX should move elsewhere) for obj in objrels: self.changelog.hiddenrevs.add(repo[obj].rev()) + + # return objrels @util.propertycache def _obssubrels(self): + """{ -> set()}""" return self._readobsrels() + ### Disk IO def _readobsrels(self): + """Write obsolete relation on disk""" + # XXX handle lock rels = {} try: f = self.opener('obsolete-relations') @@ -78,6 +94,8 @@ return rels def _writeobsrels(self): + """Write obsolete relation on disk""" + # XXX handle lock f = self.opener('obsolete-relations', 'w', atomictemp=True) try: for sub, objs in self._obssubrels.iteritems(): @@ -87,13 +105,15 @@ finally: f.close() + ### Public method def obsoletedby(self, node): - return self._readobsrels.get(node, set()) + """return the set of node that make obsolete (obj)""" def obsolete(self, node): - return self._readsubrels.get(node, set()) + """return the set of node that make obsolete (sub)""" def addobsolete(self, sub, obj): + """Add a relation marking that node is a new version of """ self._obssubrels.setdefault(sub, set()).add(obj) self._obsobjrels.setdefault(obj, set()).add(sub) self.changelog.hiddenrevs.add(repo[obj].rev())