# HG changeset patch # User Martin von Zweigbergk # Date 1412353788 25200 # Node ID 2d0b60b5abc0bdfaac1f7d11e0001aa215eecbe8 # Parent 68df36ce3d8a3097d146c462f3ff9abdaf7f3944 summary: make status code more readable In commands.summary(), we currently zip a list of labels with a list of statuses. This means the order of the status list has to match the list of the labels, which in turn means the status elements have to be inserted into specific places in the list. Let's instead group the labels and status data we want to display in a single list of pairs. diff -r 68df36ce3d8a -r 2d0b60b5abc0 mercurial/commands.py --- a/mercurial/commands.py Sat Oct 04 20:53:05 2014 -0700 +++ b/mercurial/commands.py Fri Oct 03 09:29:48 2014 -0700 @@ -5787,38 +5787,35 @@ ui.write(' ' + m, label='log.bookmark') ui.write('\n', label='log.bookmark') - st = list(repo.status(unknown=True))[:5] + status = repo.status(unknown=True) c = repo.dirstate.copies() copied, renamed = [], [] for d, s in c.iteritems(): - if s in st[2]: - st[2].remove(s) + if s in status.removed: + status.removed.remove(s) renamed.append(d) else: copied.append(d) - if d in st[1]: - st[1].remove(d) - st.insert(3, renamed) - st.insert(4, copied) + if d in status.added: + status.added.remove(d) ms = mergemod.mergestate(repo) - st.append([f for f in ms if ms[f] == 'u']) + unresolved = [f for f in ms if ms[f] == 'u'] subs = [s for s in ctx.substate if ctx.sub(s).dirty()] - st.append(subs) - - labels = [ui.label(_('%d modified'), 'status.modified'), - ui.label(_('%d added'), 'status.added'), - ui.label(_('%d removed'), 'status.removed'), - ui.label(_('%d renamed'), 'status.copied'), - ui.label(_('%d copied'), 'status.copied'), - ui.label(_('%d deleted'), 'status.deleted'), - ui.label(_('%d unknown'), 'status.unknown'), - ui.label(_('%d unresolved'), 'resolve.unresolved'), - ui.label(_('%d subrepos'), 'status.modified')] + + labels = [(ui.label(_('%d modified'), 'status.modified'), status.modified), + (ui.label(_('%d added'), 'status.added'), status.added), + (ui.label(_('%d removed'), 'status.removed'), status.removed), + (ui.label(_('%d renamed'), 'status.copied'), renamed), + (ui.label(_('%d copied'), 'status.copied'), copied), + (ui.label(_('%d deleted'), 'status.deleted'), status.deleted), + (ui.label(_('%d unknown'), 'status.unknown'), status.unknown), + (ui.label(_('%d unresolved'), 'resolve.unresolved'), unresolved), + (ui.label(_('%d subrepos'), 'status.modified'), subs)] t = [] - for s, l in zip(st, labels): + for l, s in labels: if s: t.append(l % len(s)) @@ -5834,7 +5831,8 @@ elif (parents[0].closesbranch() and pnode in repo.branchheads(branch, closed=True)): t += _(' (head closed)') - elif not (st[0] or st[1] or st[2] or st[3] or st[4] or st[8]): + elif not (status.modified or status.added or status.removed or renamed or + copied or subs): t += _(' (clean)') cleanworkdir = True elif pnode not in bheads: