Continuing the transition away from tuples.
Details
Details
Diff Detail
Diff Detail
- Repository
- rHG Mercurial
- Lint
Lint Skipped - Unit
Unit Tests Skipped
Lint Skipped |
Unit Tests Skipped |
Path | Packages | |||
---|---|---|---|---|
M | mercurial/dagutil.py (20 lines) |
Status | Author | Revision | |
---|---|---|---|
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Accepted | indygreg | ||
Needs Revision | indygreg | ||
Needs Revision | indygreg | ||
Needs Revision | indygreg | ||
Accepted | indygreg | ||
Needs Revision | indygreg | ||
Closed | indygreg |
return self._nodeset | return self._nodeset | ||||
def heads(self): | def heads(self): | ||||
if self._heads is None: | if self._heads is None: | ||||
self._heads = self._getheads() | self._heads = self._getheads() | ||||
return self._heads | return self._heads | ||||
def _externalize(self, ix): | def _externalize(self, ix): | ||||
return self._revlog.index[ix][7] | return self._revlog.index[ix].node | ||||
def _externalizeall(self, ixs): | def _externalizeall(self, ixs): | ||||
idx = self._revlog.index | idx = self._revlog.index | ||||
return [idx[i][7] for i in ixs] | return [idx[i].node for i in ixs] | ||||
def _internalize(self, id): | def _internalize(self, id): | ||||
ix = self._revlog.rev(id) | ix = self._revlog.rev(id) | ||||
if ix == nullrev: | if ix == nullrev: | ||||
raise LookupError(id, self._revlog.indexfile, _('nullid')) | raise LookupError(id, self._revlog.indexfile, _('nullid')) | ||||
return ix | return ix | ||||
def _internalizeall(self, ids, filterunknown): | def _internalizeall(self, ids, filterunknown): | ||||
rl = self._revlog | rl = self._revlog | ||||
def _getheads(self): | def _getheads(self): | ||||
return [r for r in self._revlog.headrevs() if r != nullrev] | return [r for r in self._revlog.headrevs() if r != nullrev] | ||||
def parents(self, ix): | def parents(self, ix): | ||||
rlog = self._revlog | rlog = self._revlog | ||||
idx = rlog.index | idx = rlog.index | ||||
revdata = idx[ix] | revdata = idx[ix] | ||||
prev = revdata[5] | prev = revdata.p1rev | ||||
if prev != nullrev: | if prev != nullrev: | ||||
prev2 = revdata[6] | prev2 = revdata.p2rev | ||||
if prev2 == nullrev: | if prev2 == nullrev: | ||||
return [prev] | return [prev] | ||||
return [prev, prev2] | return [prev, prev2] | ||||
prev2 = revdata[6] | prev2 = revdata.p2rev | ||||
if prev2 != nullrev: | if prev2 != nullrev: | ||||
return [prev2] | return [prev2] | ||||
return [] | return [] | ||||
def inverse(self): | def inverse(self): | ||||
if self._inverse is None: | if self._inverse is None: | ||||
self._inverse = inverserevlogdag(self) | self._inverse = inverserevlogdag(self) | ||||
return self._inverse | return self._inverse | ||||
def ancestorset(self, starts, stops=None): | def ancestorset(self, starts, stops=None): | ||||
rlog = self._revlog | rlog = self._revlog | ||||
idx = rlog.index | idx = rlog.index | ||||
if stops: | if stops: | ||||
stops = set(stops) | stops = set(stops) | ||||
else: | else: | ||||
stops = set() | stops = set() | ||||
seen = set() | seen = set() | ||||
pending = list(starts) | pending = list(starts) | ||||
while pending: | while pending: | ||||
rev = pending.pop() | rev = pending.pop() | ||||
if rev not in seen and rev not in stops: | if rev not in seen and rev not in stops: | ||||
seen.add(rev) | seen.add(rev) | ||||
revdata = idx[rev] | revdata = idx[rev] | ||||
for i in [5, 6]: | |||||
prev = revdata[i] | for prev in (revdata.p1rev, revdata.p2rev): | ||||
if prev != nullrev: | if prev != nullrev: | ||||
pending.append(prev) | pending.append(prev) | ||||
return seen | return seen | ||||
def headsetofconnecteds(self, ixs): | def headsetofconnecteds(self, ixs): | ||||
if not ixs: | if not ixs: | ||||
return set() | return set() | ||||
rlog = self._revlog | rlog = self._revlog | ||||
idx = rlog.index | idx = rlog.index | ||||
headrevs = set(ixs) | headrevs = set(ixs) | ||||
for rev in ixs: | for rev in ixs: | ||||
revdata = idx[rev] | revdata = idx[rev] | ||||
for i in [5, 6]: | for prev in (revdata.p1rev, revdata.p2rev): | ||||
prev = revdata[i] | |||||
if prev != nullrev: | if prev != nullrev: | ||||
headrevs.discard(prev) | headrevs.discard(prev) | ||||
assert headrevs | assert headrevs | ||||
return headrevs | return headrevs | ||||
def linearize(self, ixs): | def linearize(self, ixs): | ||||
'''linearize and topologically sort a list of revisions | '''linearize and topologically sort a list of revisions | ||||
def _walkto(self, walkto): | def _walkto(self, walkto): | ||||
rev = self._walkfrom | rev = self._walkfrom | ||||
cs = self._children | cs = self._children | ||||
roots = self._roots | roots = self._roots | ||||
idx = self._revlog.index | idx = self._revlog.index | ||||
while rev >= walkto: | while rev >= walkto: | ||||
data = idx[rev] | data = idx[rev] | ||||
isroot = True | isroot = True | ||||
for prev in [data[5], data[6]]: # parent revs | for prev in [data.p1rev, data.p2rev]: # parent revs | ||||
if prev != nullrev: | if prev != nullrev: | ||||
cs.setdefault(prev, []).append(rev) | cs.setdefault(prev, []).append(rev) | ||||
isroot = False | isroot = False | ||||
if isroot: | if isroot: | ||||
roots.append(rev) | roots.append(rev) | ||||
rev -= 1 | rev -= 1 | ||||
self._walkfrom = rev | self._walkfrom = rev | ||||