Mercurial > kallithea
changeset 4341:ab89f7ce2c0b
graph: use sets for graph calculations
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 10 Dec 2013 19:30:37 +0100 |
parents | d1aba9ab3bc1 |
children | efc911d7b217 |
files | kallithea/lib/graphmod.py |
diffstat | 1 files changed, 8 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/graphmod.py Tue Dec 10 19:30:37 2013 +0100 +++ b/kallithea/lib/graphmod.py Tue Dec 10 19:30:37 2013 +0100 @@ -37,7 +37,7 @@ else: pending.update(parentrev_func(r)) seen.add(r) - return sorted(ancestors) + return ancestors def graph_data(repo, revs): """Return a DAG with colored edge information for revs @@ -69,21 +69,19 @@ knownrevs = set(revs) acache = {} for rev in revs: - ctx = repo[rev] - parents = [p.revision for p in ctx.parents] - dagparents = sorted(set(parents) & knownrevs) - mpars = sorted(set(parents) - knownrevs - set([nullrev])) + parents = set(parentrev_func(rev)) - set([nullrev]) + dagparents = parents & knownrevs # Calculate indirect parents - for p in mpars: + for p in parents - dagparents: ancestors = acache.get(p) if ancestors is None: - ancestors = acache[p] = _first_known_ancestors(parentrev_func, minrev, revs, p) + ancestors = acache[p] = _first_known_ancestors(parentrev_func, minrev, knownrevs, p) if ancestors: # some indirect known ancestors found - use them and ignore unknown ancestors - dagparents.extend(g for g in ancestors if g not in dagparents) + dagparents.update(ancestors) else: # no known ancestors - use the real but unknown parent - dagparents.append(p) + dagparents.add(p) - yield (ctx.revision, dagparents) + yield (rev, sorted(dagparents)) def _colored(dag):