Есть ли способ получить список контролируемых SVN папок с разными цветами в терминале? Как псевдоним "ls". Поэтому, когда мы набираем "ls", все папки с подпапкой «.svn» должны быть желтыми, например?
Благодарю. (Извините, если это глупый вопрос.)
Вам понадобится обертка вокруг ls чтобы сделать это.
Я написал такую обертку ниже ...
Как это в принципе работает:
ls -F принудительно, потому что каталоги гарантированно будут иметь суффикс / который можно обнаружить.svn где .svn присутствовал в каждом подкаталоге. Если вы используете последнюю версию, где .svn присутствует только сверху, сценарий должен измениться на "детализация вверх" от «$ root / $ dir», пока не найдет родительский каталог, содержащий .svn .Вот весь мой скрипт (используйте вместо ls напрямую):
#!/usr/bin/env perl
# by Kevin Grant (kevingrant.engineer@gmail.com)
use FileHandle;
my $term = (exists $ENV{'TERM'} && defined $ENV{'TERM'}) ? $ENV{'TERM'} : 'vt100';
my $is_xterm = ($term =~ /xterm/);
my $ifh = new FileHandle("ls -F @ARGV|");
(defined $ifh) or die;
my $root = '.';
foreach (@ARGV) {
(! /^\-/) and $root = $_; # assume bare argument is the directory being listed
}
foreach (<$ifh>) {
# 1st is for "ls -l" output (no spaces supported), 2nd is normal "ls" output
if (m|\s(\S+)/| or m|^([^/]+/)|) {
my $dir = $1;
if (-e "$root/$dir/.svn") {
# has a ".svn" subdirectory; colorize it
if ($is_xterm) {
s/\Q${dir}\E/\033[48;5;19;38;5;85m${dir}\033[0m/;
} else {
s/\Q${dir}\E/\033[44;36m${dir}\033[0m/;
}
}
}
print;
}