Некоторые команды Mercurial форматируют вывод по-разному в зависимости от ширины терминала. Это удобно, когда мне просто нужно посмотреть на вывод, но очень неудобно, когда вывод отправляется не на терминал, а скорее в канал или файл.
Есть ли способ, которым я могу переопределить ширину терминала и заставить Mercurial отформатировать вывод, оптимизированный для ширины, которую я указываю в командной строке?
Вот пример проблемы, с которой я столкнулся :
$ hg log --stat -r 4210 | wc
10 37 375
$ hg log --stat -r 4210 | wc
10 37 375
$ hg log --stat -r 4210 | wc
10 37 512
$ hg log --stat -r 4210 | wc
10 37 512
$
Я изменил размер окна в середине этой последовательности команд, и Mercurial начал производить другой вывод. Я хотел бы получить что-то вроде этого:
$ hg log --width 79 --stat -r 4210 | wc
10 37 374
$
Где я могу как-то указать, что я хочу, чтобы вывод форматировался так, как если бы терминал имел ширину 79 символов, независимо от фактической ширины терминала.
Следующая функция может быть найдена в /usr/lib/python2.7/dist-packages/mercurial/ui.py
:
def termwidth(self):
'''how wide is the terminal in columns?
'''
if 'COLUMNS' in os.environ:
try:
return int(os.environ['COLUMNS'])
except ValueError:
pass
return util.termwidth()
От этого ясно, что ответ должен просто записать COLUMNS=79
перед эти hg
команда для достижения желаемого результата:
$ COLUMNS=79 hg log --stat -r 4210 | wc
10 37 374