color: enable branches support
This commit updates the branches command to use ui.label for the branch names
and the changeset. This implementation allows assigning colors to the four
states of a branch: active, closed, current and inactive. While you can
configure color for the four states, only current and closed have default colors
of green and black bold respectively.
--- a/hgext/color.py Wed Aug 18 23:37:26 2010 +0200
+++ b/hgext/color.py Wed Jul 28 23:05:03 2010 -0600
@@ -62,6 +62,11 @@
bookmarks.current = green
+ branches.active = none
+ branches.closed = black bold
+ branches.current = green
+ branches.inactive = none
+
The color extension will try to detect whether to use ANSI codes or
Win32 console APIs, unless it is made explicit::
@@ -87,6 +92,10 @@
'cyan_background': 46, 'white_background': 47}
_styles = {'grep.match': 'red bold',
+ 'branches.active': 'none',
+ 'branches.closed': 'black bold',
+ 'branches.current': 'green',
+ 'branches.inactive': 'none',
'diff.changed': 'white',
'diff.deleted': 'red',
'diff.diffline': 'bold',
--- a/mercurial/commands.py Wed Aug 18 23:37:26 2010 +0200
+++ b/mercurial/commands.py Wed Jul 28 23:05:03 2010 -0600
@@ -512,16 +512,22 @@
else:
hn = repo.lookup(node)
if isactive:
+ label = 'branches.active'
notice = ''
elif hn not in repo.branchheads(tag, closed=False):
if not closed:
continue
+ label = 'branches.closed'
notice = _(' (closed)')
else:
+ label = 'branches.inactive'
notice = _(' (inactive)')
+ if tag == repo.dirstate.branch():
+ label = 'branches.current'
rev = str(node).rjust(31 - encoding.colwidth(encodedtag))
- data = encodedtag, rev, hexfunc(hn), notice
- ui.write("%s %s:%s%s\n" % data)
+ rev = ui.label('%s:%s' % (rev, hexfunc(hn)), 'log.changeset')
+ encodedtag = ui.label(encodedtag, label)
+ ui.write("%s %s%s\n" % (encodedtag, rev, notice))
def bundle(ui, repo, fname, dest=None, **opts):
"""create a changegroup file
--- a/tests/test-branches.t Wed Aug 18 23:37:26 2010 +0200
+++ b/tests/test-branches.t Wed Jul 28 23:05:03 2010 -0600
@@ -341,3 +341,53 @@
date: Thu Jan 01 00:00:09 1970 +0000
summary: prune bad branch
+default branch colors:
+
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "color =" >> $HGRCPATH
+
+ $ hg up -C c
+ 3 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ hg commit -d '9 0' --close-branch -m 'reclosing this branch'
+ $ hg up -C b
+ 2 files updated, 0 files merged, 3 files removed, 0 files unresolved
+ $ hg branches --color=always
+ [0;32mb[0m [0;33m 13:6ac12926b8c3[0m
+ [0;0ma branch name much longer than the default justification used by branches[0m [0;33m7:10ff5895aa57[0m
+ [0;0ma[0m [0;33m 5:d8cbc61dbaa6[0m (inactive)
+ [0;0mdefault[0m [0;33m 0:19709c5a4e75[0m (inactive)
+
+default closed branch color:
+
+ $ hg branches --color=always --closed
+ [0;32mb[0m [0;33m 13:6ac12926b8c3[0m
+ [0;0ma branch name much longer than the default justification used by branches[0m [0;33m7:10ff5895aa57[0m
+ [0;30;1mc[0m [0;33m 14:717d2e6fabe1[0m (closed)
+ [0;0ma[0m [0;33m 5:d8cbc61dbaa6[0m (inactive)
+ [0;0mdefault[0m [0;33m 0:19709c5a4e75[0m (inactive)
+
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "color =" >> $HGRCPATH
+ $ echo "[color]" >> $HGRCPATH
+ $ echo "branches.active = green" >> $HGRCPATH
+ $ echo "branches.closed = blue" >> $HGRCPATH
+ $ echo "branches.current = red" >> $HGRCPATH
+ $ echo "branches.inactive = magenta" >> $HGRCPATH
+ $ echo "log.changeset = cyan" >> $HGRCPATH
+
+custom branch colors:
+
+ $ hg branches --color=always
+ [0;31mb[0m [0;36m 13:6ac12926b8c3[0m
+ [0;32ma branch name much longer than the default justification used by branches[0m [0;36m7:10ff5895aa57[0m
+ [0;35ma[0m [0;36m 5:d8cbc61dbaa6[0m (inactive)
+ [0;35mdefault[0m [0;36m 0:19709c5a4e75[0m (inactive)
+
+custom closed branch color:
+
+ $ hg branches --color=always --closed
+ [0;31mb[0m [0;36m 13:6ac12926b8c3[0m
+ [0;32ma branch name much longer than the default justification used by branches[0m [0;36m7:10ff5895aa57[0m
+ [0;34mc[0m [0;36m 14:717d2e6fabe1[0m (closed)
+ [0;35ma[0m [0;36m 5:d8cbc61dbaa6[0m (inactive)
+ [0;35mdefault[0m [0;36m 0:19709c5a4e75[0m (inactive)