2015-08-13 4 views
0

Я хочу отличить ветви функции/сцены/выпуска по цвету. У меня есть соглашение об именах филиалов.Как я могу покрасить ветви Mercurial на основе их имен?

Есть ли способ раскрасить имена ветвей на выходе hg branches в соответствии с правилами, основанными на регулярном выражении?

Есть ли лучший способ сделать это, кроме как написать собственный скрипт и создать для него псевдоним?

Кстати, есть вопрос и ответ на большой how to do this in git

ответ

4

По умолчанию, стандартное расширение цвет Mercurial только позволяет раскрашивания на основе статуса филиала. Например .:

[extensions] 
color= 
[color] 
branches.active = none 
branches.closed = black bold 
branches.current = green 
branches.inactive = none 

(Взято из hg help color.)

Для того, чтобы указать цвета, основанные на регулярных выражениях, вам нужен сценарий и (для удобства) псевдоним. Ниже в Ruby, поскольку оператор case Ruby упрощает выбор путем регулярного выражения.

class String 
    def colorize(code) "\033[#{code}m#{self}\033[0m" end 
    def colorize_bold(code) "\033[#{code};1m#{self}\033[0m" end 

    def black() colorize(30) end 
    def red() colorize(31) end 
    def green() colorize(32) end 
    def yellow() colorize(33) end 
    def blue() colorize(34) end 
    def magenta() colorize(35) end 
    def cyan() colorize(36) end 
    def white() colorize(37) end 
    def gray() colorize_bold(30) end 
    def bold_red() colorize_bold(31) end 
    def bold_green() colorize_bold(32) end 
    def bold_yellow() colorize_bold(33) end 
    def bold_blue() colorize_bold(34) end 
    def bold_magenta() colorize_bold(35) end 
    def bold_cyan() colorize_bold(36) end 
    def bold_white() colorize_bold(37) end 
end 

for line in ARGF do 
    case line 
    when /^foo/ 
    print line.bold_magenta 
    when /^bar/ 
    print line.yellow 
    else 
    print line.gray 
    end 
end 

Вы также можете использовать colorize камень, если вы уже установили его.

Затем вы можете добавить это как псевдоним к своему .hgrc. Например, если вышеуказанный сценарий находится в /path/to/color-branches.rb, do:

[alias] 
colorbranches = !$HG branches [email protected] | ruby /path/to/color-branches.rb 
Смежные вопросы