Submitter | Brodie Rao |
---|---|
Date | Nov. 14, 2013, 10:50 p.m. |
Message ID | <5ad83b0804e366b79d1b.1384469409@kapp.local> |
Download | mbox | patch |
Permalink | /patch/2948/ |
State | Superseded |
Headers | show |
Comments
On Thu, Nov 14, 2013 at 5:50 PM, Brodie Rao <brodie@sf.io> wrote: > # HG changeset patch > # User Brodie Rao <brodie@sf.io> > # Date 1384467366 18000 > # Thu Nov 14 17:16:06 2013 -0500 > # Node ID 5ad83b0804e366b79d1bde8b897b1dbbc1dd2d7a > # Parent c38c3fdc8b9317ba09e03ab09364c3800da7c50c > branches: avoid unnecessary changectx.branch() calls > > This requires reading from the changelog, which can be costly over NFS. > > Note that this does not totally remove reading from the changelog; we > still do that when calling changectx.closesbranch(). That call will be > removed in a later patch. Please ignore this patch. I'm sending a longer series that contains an updated version of it. > diff --git a/mercurial/commands.py b/mercurial/commands.py > --- a/mercurial/commands.py > +++ b/mercurial/commands.py > @@ -1008,7 +1008,7 @@ def branches(ui, repo, active=False, clo > > hexfunc = ui.debugflag and hex or short > > - activebranches = set([repo[n].branch() for n in repo.heads()]) > + allheads = set(repo.heads()) > branches = [] > for tag, heads in repo.branchmap().iteritems(): > for h in reversed(heads): > @@ -1019,12 +1019,12 @@ def branches(ui, repo, active=False, clo > break > else: > tip = repo[heads[-1]] > - isactive = tag in activebranches and isopen > - branches.append((tip, isactive, isopen)) > - branches.sort(key=lambda i: (i[1], i[0].rev(), i[0].branch(), i[2]), > + isactive = isopen and bool(set(heads) & allheads) > + branches.append((tag, tip, isactive, isopen)) > + branches.sort(key=lambda i: (i[2], i[1].rev(), i[0], i[3]), > reverse=True) > > - for ctx, isactive, isopen in branches: > + for tag, ctx, isactive, isopen in branches: > if (not active) or isactive: > if isactive: > label = 'branches.active' > @@ -1037,16 +1037,16 @@ def branches(ui, repo, active=False, clo > else: > label = 'branches.inactive' > notice = _(' (inactive)') > - if ctx.branch() == repo.dirstate.branch(): > + if tag == repo.dirstate.branch(): > label = 'branches.current' > - rev = str(ctx.rev()).rjust(31 - encoding.colwidth(ctx.branch())) > + rev = str(ctx.rev()).rjust(31 - encoding.colwidth(tag)) > rev = ui.label('%s:%s' % (rev, hexfunc(ctx.node())), > 'log.changeset changeset.%s' % ctx.phasestr()) > - tag = ui.label(ctx.branch(), label) > + labeledtag = ui.label(tag, label) > if ui.quiet: > - ui.write("%s\n" % tag) > + ui.write("%s\n" % labeledtag) > else: > - ui.write("%s %s%s\n" % (tag, rev, notice)) > + ui.write("%s %s%s\n" % (labeledtag, rev, notice)) > > @command('bundle', > [('f', 'force', None, _('run even when the destination is unrelated')),
Patch
diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1008,7 +1008,7 @@ def branches(ui, repo, active=False, clo hexfunc = ui.debugflag and hex or short - activebranches = set([repo[n].branch() for n in repo.heads()]) + allheads = set(repo.heads()) branches = [] for tag, heads in repo.branchmap().iteritems(): for h in reversed(heads): @@ -1019,12 +1019,12 @@ def branches(ui, repo, active=False, clo break else: tip = repo[heads[-1]] - isactive = tag in activebranches and isopen - branches.append((tip, isactive, isopen)) - branches.sort(key=lambda i: (i[1], i[0].rev(), i[0].branch(), i[2]), + isactive = isopen and bool(set(heads) & allheads) + branches.append((tag, tip, isactive, isopen)) + branches.sort(key=lambda i: (i[2], i[1].rev(), i[0], i[3]), reverse=True) - for ctx, isactive, isopen in branches: + for tag, ctx, isactive, isopen in branches: if (not active) or isactive: if isactive: label = 'branches.active' @@ -1037,16 +1037,16 @@ def branches(ui, repo, active=False, clo else: label = 'branches.inactive' notice = _(' (inactive)') - if ctx.branch() == repo.dirstate.branch(): + if tag == repo.dirstate.branch(): label = 'branches.current' - rev = str(ctx.rev()).rjust(31 - encoding.colwidth(ctx.branch())) + rev = str(ctx.rev()).rjust(31 - encoding.colwidth(tag)) rev = ui.label('%s:%s' % (rev, hexfunc(ctx.node())), 'log.changeset changeset.%s' % ctx.phasestr()) - tag = ui.label(ctx.branch(), label) + labeledtag = ui.label(tag, label) if ui.quiet: - ui.write("%s\n" % tag) + ui.write("%s\n" % labeledtag) else: - ui.write("%s %s%s\n" % (tag, rev, notice)) + ui.write("%s %s%s\n" % (labeledtag, rev, notice)) @command('bundle', [('f', 'force', None, _('run even when the destination is unrelated')),