class changectx(object): """A changecontext object makes access to data related to a particular
changeset convenient.""" def __init__(self, repo, changeid=b('')): """changeid is a revision number, node, or tag""" if changeid == b(''):
changeid = b('.')
self._repo = repo if isinstance(changeid, hglib.client.revision):
cset = changeid elif changeid == -1:
cset = _nullcset else: if isinstance(changeid, integertypes):
changeid = b('rev(') + strtobytes(changeid) + b(')')
notfound = False try:
cset = self._repo.log(changeid) # hg bbf4f3dfd700 gave a null result for tip+1 if (cset and cset[0][1] == _nullcset[1] and cset[0][0] != _nullcset[0]):
notfound = True except CommandError:
notfound = True
if notfound ornot len(cset): raise ValueError('changeid %r not found in repo' % changeid) if len(cset) > 1: raise ValueError('changeid must yield a single changeset')
cset = cset[0]
def _parsestatus(self, stat):
d = dict((c, []) for c in (b('M'), b('A'), b('R'), b('!'), b('?'), b('I'),
b('C'), b(' '))) for k, path in stat:
d[k].append(path) return (d[b('M')], d[b('A')], d[b('R')], d[b('!')], d[b('?')],
d[b('I')], d[b('C')])
def status(self, ignored=False, clean=False): """Explicit status query
Unless this method is used to query the working copy status, the
_status property will implicitly read the status using its default
arguments."""
stat = self._parsestatus(self._repo.status(change=strtobytes(self),
ignored=ignored,
clean=clean))
self._unknown = self._ignored = self._clean = None if ignored:
self._ignored = stat[5] if clean:
self._clean = stat[6]
self._status = stat[:4] return stat
def ignored(self): if self._ignored isNone:
self.status(ignored=True) return self._ignored
def clean(self): if self._clean isNone:
self.status(clean=True) return self._clean
@util.propertycache def _manifest(self):
d = {} for node, p, e, s, path in self._repo.manifest(rev=strtobytes(self)):
d[path] = node return d
def manifest(self): return self._manifest
def hex(self): return hex(self._node)
@util.propertycache def _parents(self): """return contexts for each parent changeset"""
par = self._repo.parents(rev=strtobytes(self)) ifnot par: return [changectx(self._repo, -1)] return [changectx(self._repo, int(cset.rev)) for cset in par]
@util.propertycache def _bookmarks(self):
books = [bm for bm in self._repo.bookmarks()[0] if bm[1] == self._rev]
bms = [] for name, r, n in books:
bms.append(name) return bms
def bookmarks(self): return self._bookmarks
def hidden(self): """return True if the changeset is hidden, else False""" return bool(self._repo.log(revrange=self._node + b(' and hidden()'),
hidden=True))
def phase(self): """return the phase of the changeset (public, draft or secret)""" return self._repo.phase(strtobytes(self._rev))[0][1]
def children(self): """return contexts for each child changeset""" for c in self._repo.log(b('children(') + self._node + b(')')): yield changectx(self._repo, c)
def ancestors(self): for a in self._repo.log(b('ancestors(') + self._node + b(')')): yield changectx(self._repo, a)
def descendants(self): for d in self._repo.log(b('descendants(') + self._node + b(')')): yield changectx(self._repo, d)
def ancestor(self, c2): """ return the ancestor context of self and c2 """ return changectx(self._repo,
b('ancestor(') + self + b(', ') + c2 + b(')'))
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.