2011-01-12 15 views
14

Podczas wywoływania ls, chciałbym mieć nazwy plików w innym kolorze, w zależności od statusu subversion. Na przykład, dodany plik będzie błękitny, zmodyfikowany plik czerwony i tak dalej. Czy jest to możliwe dzięki czystej sile basha? Czy jest coś gotowego na ten temat?Koloruj nazwę pliku zgodnie ze stanem svn

Odpowiedz

4

O ile mi wiadomo, nie można tego osiągnąć przy pomocy czystego basha (skrypty na bok).

Możesz dość łatwo uzyskać zindywidualizowaną listę plików za pomocą skryptów (bash, python, perl, cokolwiek jest twoją trucizną). Oto dość surowy realizacja napisany w Pythonie proof-of-concept: https://gist.github.com/776093

#!/usr/bin/env python 
import re 
from subprocess import Popen, PIPE 

colormap = { 
    "M" : "31", # red 
    "?" : "37;41", # grey 
    "A" : "32", # green 
    "X" : "33", # yellow 
    "C" : "30;41", # black on red 
    "-" : "31", # red 
    "D" : "31;1", # bold red 
    "+" : "32", # green 
} 
re_svnout = re.compile(r'(.)\s+(.+)$') 
file_status = {} 


def colorise(line, key): 
    if key in colormap.keys(): 
     return "\001\033[%sm%s\033[m\002" % (colormap[key], line) 
    else: 
     return line 

def get_svn_status(): 
    cmd = "svn status" 
    output = Popen(cmd, shell=True, stdout=PIPE) 
    for line in output.stdout: 
     match = re_svnout.match(line) 
     if match: 
      status, f = match.group(1), match.group(2) 

      # if sub directory has changes, mark it as modified 
      if "/" in f: 
       f = f.split("/")[0] 
       status = "M" 

      file_status[f] = status 

if __name__ == "__main__": 
    get_svn_status() 
    for L in Popen("ls", shell=True, stdout=PIPE).stdout: 
     line = L.strip() 
     status = file_status.get(line, False) 
     print colorise(line, status) 
+0

Dla tych, którzy wciąż używają svn. Istnieją powiązania svn dla Pythona, mogą być bardziej eleganckie niż uruchamianie podprocesu, a także można pokolorować inne polecenia. –

3

Here's a Gist z 3 generacji małego skryptu do kolorowania wyjście SVN. Działa doskonale dla poleceń svn status. Właśnie dodałem alias svns="/path/to/svn-color.py status" do mojego .bash_profile i mogę teraz wpisać svns i zobaczyć wydrukowane kolorami. Autor zaleca ustawienie domyślnego svn swojego skryptu.

Powiązane problemy