def changelist(limit=0, **map): # useless fallback listfilediffs = lambda a,b,c: [] if hasattr(webutil, 'listfilediffs'): listfilediffs = lambda a,b,c: webutil.listfilediffs(a,b,c, len(b)) elif hasattr(web, 'listfilediffs'): listfilediffs = web.listfilediffs lastid = None l = [] mergehidden = "" p = 0 currentpush = None for id, user, date, node in query.entries: if isinstance(node, unicode): node = node.encode('utf-8') try: ctx = web.repo[node] # Changeset is hidden. except error.FilteredRepoLookupError: continue n = ctx.node() entry = {"author": ctx.user(), "desc": ctx.description(), "files": listfilediffs(tmpl, ctx.files(), n), "rev": ctx.rev(), "node": hex(n), "parents": [c.hex() for c in ctx.parents()], "tags": nodetagsdict(web.repo, n), "branches": nodebranchdict(web.repo, ctx), "inbranch": nodeinbranch(web.repo, ctx), "hidden": "", "push": [], "mergerollup": [], "id": id } if id != lastid: lastid = id p = parity.next() entry["push"] = [{"user": user, "date": localdate(date)}] if len([c for c in ctx.parents() if c.node() != nullid]) > 1: mergehidden = "hidden" entry["mergerollup"] = [{"count": 0}] else: mergehidden = "" currentpush = entry else: entry["hidden"] = mergehidden if mergehidden: currentpush["mergerollup"][0]["count"] += 1 entry["parity"] = p l.append(entry) if limit > 0: l = l[:limit] for e in l: yield e
def changelist(limit=0, **map): l = [] # build a list in forward order for efficiency for i in xrange(start, end): ctx = web.repo[i] n = ctx.node() showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n) files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles) l.insert(0, {"parity": parity.next(), "author": ctx.user(), "parent": webutil.parents(ctx, i - 1), "child": webutil.children(ctx, i + 1), "changelogtag": showtags, "desc": ctx.description(), "date": ctx.date(), "files": files, "rev": i, "node": hex_(n), "tags": webutil.nodetagsdict(web.repo, n), "inbranch": webutil.nodeinbranch(web.repo, ctx), "branches": webutil.nodebranchdict(web.repo, ctx) }) if limit > 0: l = l[:limit] for e in l: yield e
def create_entry(ctx, web, pushid, user, date, node, mergehidden, parity, pushcount=None): """Creates an entry to be yielded in the `changelist` generator `pushcount` will be non-None when we are generating an entry for the first change in a given push """ repo = web.repo n = ctx.node() ctxfiles = ctx.files() firstchange = pushcount is not None mergerollupval = templateutil.mappinglist( [{'count': pushcount}] if firstchange and mergehidden == 'hidden' else [] ) pushval = templateutil.mappinglist( [{"date": localdate(date), "user": user}] if firstchange else [] ) # TRACKING hg47 # Call the function with whichever signature is correct if util.versiontuple(n=2) >= (4, 7): filediffs = webutil.listfilediffs(ctxfiles, node, len(ctxfiles)) else: filediffs = webutil.listfilediffs(web.tmpl, ctxfiles, node, len(ctxfiles)) return { "author": ctx.user(), "desc": ctx.description(), "files": filediffs, "rev": ctx.rev(), "node": hex(n), "parents": [c.hex() for c in ctx.parents()], "tags": webutil.nodetagsdict(repo, n), "branches": webutil.nodebranchdict(repo, ctx), "inbranch": webutil.nodeinbranch(repo, ctx), "hidden": mergehidden, "mergerollup": mergerollupval, "id": pushid, "parity": parity, "push": pushval, }
def changelist(limit=0, **map): # useless fallback listfilediffs = lambda a,b,c: [] if hasattr(webutil, 'listfilediffs'): listfilediffs = lambda a,b,c: webutil.listfilediffs(a,b,c, len(b)) elif hasattr(web, 'listfilediffs'): listfilediffs = web.listfilediffs allentries = [] lastid = None ch = None l = [] mergehidden = "" p = 0 currentpush = None for id, user, date, node in query.entries: if isinstance(node, unicode): node = node.encode('utf-8') ctx = web.repo.changectx(node) n = ctx.node() entry = {"author": ctx.user(), "desc": ctx.description(), "files": listfilediffs(tmpl, ctx.files(), n), "rev": ctx.rev(), "node": hex(n), "parents": [c.hex() for c in ctx.parents()], "tags": nodetagsdict(web.repo, n), "branches": nodebranchdict(web.repo, ctx), "inbranch": nodeinbranch(web.repo, ctx), "hidden": "", "push": [], "mergerollup": [], "id": id } if id != lastid: lastid = id p = parity.next() entry["push"] = [{"user": user, "date": localdate(date)}] if len([c for c in ctx.parents() if c.node() != nullid]) > 1: mergehidden = "hidden" entry["mergerollup"] = [{"count": 0}] else: mergehidden = "" currentpush = entry else: entry["hidden"] = mergehidden if mergehidden: currentpush["mergerollup"][0]["count"] += 1 entry["parity"] = p l.append(entry) if limit > 0: l = l[:limit] for e in l: yield e
def create_entry(ctx, web, pushid, user, date, node, mergehidden, parity, pushcount=None): """Creates an entry to be yielded in the `changelist` generator `pushcount` will be non-None when we are generating an entry for the first change in a given push """ repo = web.repo n = ctx.node() ctxfiles = ctx.files() firstchange = pushcount is not None mergerollupval = templateutil.mappinglist([{ b'count': pushcount }] if firstchange and mergehidden == b'hidden' else []) pushval = templateutil.mappinglist([{ b"date": localdate(date), b"user": user }] if firstchange else []) filediffs = webutil.listfilediffs(ctxfiles, node, len(ctxfiles)) return { b"author": ctx.user(), b"desc": ctx.description(), b"files": filediffs, b"rev": ctx.rev(), b"node": hex(n), b"parents": [c.hex() for c in ctx.parents()], b"tags": webutil.nodetagsdict(repo, n), b"branches": webutil.nodebranchdict(repo, ctx), b"inbranch": webutil.nodeinbranch(repo, ctx), b"hidden": mergehidden, b"mergerollup": mergerollupval, b"id": pushid, b"parity": parity, b"push": pushval, }