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
14
A
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)
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
- 1. Listowanie ze stanem
- 2. Ekstrakt nazwę pliku ze ścieżki
- 3. Pobierz nazwę pliku ze wskaźnika pliku
- 4. Jak przetestować dyrektywy kompilatora ze stanem MSBuild w pliku .csproj?
- 5. Co ze stanem wyścigu w czytaniu wielowątkowym?
- 6. Wzór strategii C + 11 ze stanem
- 7. obiekty ze stanem i zachowaniem w oop
- 8. SVN Zmień nazwę katalogu, zachowaj historię plików
- 9. Czy mogę używać wzorca projektowego konstruktora razem ze stanem hibernacji?
- 10. Książki/samouczki dotyczące problemów związanych ze stanem Clojure'a
- 11. Java 8 Filtrowanie ze stanem i zbieranie niestandardowej mapy
- 12. "Nie można pobrać do repozytorium ze stanem: merging_resolved"
- 13. Java: Wzór do pracy ze stanem i dziedziczeniem
- 14. C# - Jak wyodrębnić nazwę pliku i rozszerzenie ze ścieżki?
- 15. Uzyskaj nazwę pliku ze ścieżki w skrypcie Bash
- 16. Pobierz nazwę pliku ze ścieżki tekstowej w javascript?
- 17. Git-SVN: Zaktualizuj repozytorium Git ze scentralizowanego serwera SVN
- 18. SVN Zmień nazwę folderu w gałęzi, Konflikt
- 19. Czy można zmienić nazwę znacznika svn
- 20. maven: wdraża nazwę pliku artefaktów
- 21. Jak uruchamiać polecenia SVN ze skryptu Pythona?
- 22. svn jasne projekty ze wszystkimi wersjami
- 23. Uzyskaj odpowiednią poprawkę po wykonaniu polecenia svn remove i svn zmień nazwę na
- 24. Znak plus (+) w pliku SVN
- 25. zwraca nazwę pliku
- 26. Odrzuć plik binarny ze stanem oczekującym na sprawdzenie (nie można znaleźć przycisku odrzucania binarnego)
- 27. Commit częściowego pliku (Patch) do SVN
- 28. Uzyskaj nazwę pliku z pliku wejściowego Angular2
- 29. Android ImageButton z wybranym stanem?
- 30. Jak uzyskać nazwę metody ze znanej metody?
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. –