##// END OF EJS Templates
tests: collect all branch creation in one place in test-copies-chain-merge.t...
tests: collect all branch creation in one place in test-copies-chain-merge.t I found this test case really hard to read because it requires scrolling back and forth between the setup and the verification. The next patch will move the verification close to the merge commits they test. This patch prepares for that by moving all branch creation first so they are separate from the merge commits (because many merge commits reuse the same branches). Differential Revision: https://phab.mercurial-scm.org/D8376

File last commit:

r44819:14d0e895 default
r45168:4e2845d9 default
Show More
beautifygraph.py
109 lines | 3.1 KiB | text/x-python | PythonLexer
John Stiles
graph: improve graph output by using Unicode characters...
r38359 # -*- coding: UTF-8 -*-
# beautifygraph.py - improve graph output by using Unicode characters
#
# Copyright 2018 John Stiles <johnstiles@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
'''beautify log -G output by using Unicode characters (EXPERIMENTAL)
A terminal with UTF-8 support and monospace narrow text are required.
'''
from __future__ import absolute_import
from mercurial.i18n import _
from mercurial import (
encoding,
extensions,
graphmod,
Gregory Szorc
global: use pycompat.xrange()...
r38806 pycompat,
John Stiles
graph: improve graph output by using Unicode characters...
r38359 templatekw,
)
# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
# extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
# be specifying the version(s) of Mercurial they are tested with, or
# leave the attribute unspecified.
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 testedwith = b'ships-with-hg-core'
John Stiles
graph: improve graph output by using Unicode characters...
r38359
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def prettyedge(before, edge, after):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if edge == b'~':
return b'\xE2\x95\xA7' # U+2567 ╧
if edge == b'/':
return b'\xE2\x95\xB1' # U+2571 ╱
if edge == b'-':
return b'\xE2\x94\x80' # U+2500 ─
if edge == b'|':
return b'\xE2\x94\x82' # U+2502 │
if edge == b':':
return b'\xE2\x94\x86' # U+2506 ┆
if edge == b'\\':
return b'\xE2\x95\xB2' # U+2572 ╲
if edge == b'+':
if before == b' ' and not after == b' ':
return b'\xE2\x94\x9C' # U+251C ├
if after == b' ' and not before == b' ':
return b'\xE2\x94\xA4' # U+2524 ┤
return b'\xE2\x94\xBC' # U+253C ┼
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return edge
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def convertedges(line):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 line = b' %s ' % line
John Stiles
graph: improve graph output by using Unicode characters...
r38359 pretty = []
Gregory Szorc
global: use pycompat.xrange()...
r38806 for idx in pycompat.xrange(len(line) - 2):
Augie Fackler
formatting: blacken the codebase...
r43346 pretty.append(
prettyedge(
line[idx : idx + 1],
line[idx + 1 : idx + 2],
line[idx + 2 : idx + 3],
)
)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 return b''.join(pretty)
John Stiles
graph: improve graph output by using Unicode characters...
r38359
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def getprettygraphnode(orig, *args, **kwargs):
node = orig(*args, **kwargs)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if node == b'o':
return b'\xE2\x97\x8B' # U+25CB ○
if node == b'@':
return b'\xE2\x97\x8D' # U+25CD ◍
Martin von Zweigbergk
graphlog: use '%' for other context in merge conflict...
r44819 if node == b'%':
return b'\xE2\x97\x8D' # U+25CE ◎
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if node == b'*':
return b'\xE2\x88\x97' # U+2217 ∗
if node == b'x':
return b'\xE2\x97\x8C' # U+25CC ◌
if node == b'_':
return b'\xE2\x95\xA4' # U+2564 ╤
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return node
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def outputprettygraph(orig, ui, graph, *args, **kwargs):
(edges, text) = zip(*graph)
graph = zip([convertedges(e) for e in edges], text)
return orig(ui, graph, *args, **kwargs)
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def extsetup(ui):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if ui.plain(b'graph'):
Augie Fackler
beautifygraph: don't warn about busted terminal if HGPLAIN is set...
r39249 return
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if encoding.encoding != b'UTF-8':
ui.warn(_(b'beautifygraph: unsupported encoding, UTF-8 required\n'))
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 if 'A' in encoding._wide:
Augie Fackler
formatting: blacken the codebase...
r43346 ui.warn(
_(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b'beautifygraph: unsupported terminal settings, '
b'monospace narrow text required\n'
Augie Fackler
formatting: blacken the codebase...
r43346 )
)
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 extensions.wrapfunction(graphmod, b'outputgraph', outputprettygraph)
extensions.wrapfunction(templatekw, b'getgraphnode', getprettygraphnode)