Представьте себе каталог /path/to/trunk
, который находится под контролем версий с помощью SVN. Пока каталог и некоторые его файлы находятся под контролем версий, другие - нет.
Вопрос: Как создать глобус, который выбирает файлы, которые находятся под контролем версии ибыстро?
обходной путь: Вместо использования глобуса используйте svn ls
и используйте массив
array=( "${(@f)$(svn ls -R /path/to/trunk)}" )
Я небольшой поклонник этого решения, потому что вы можете запускать имена файлов с раздражающими символами, и вам не следует никогда не анализировать вывод ls
.
возможное решение: использоватьfunction и execute glob-qualifier:
$ undersvn() { svn ls --depth empty "$REPLY" >/dev/null 2>&1 }
array=( /path/to/trunk/**/*(+undersvn) )
Этот метод отлично работает и отлично работает. Тем не менее, на больших деревьях с большим количеством файлов это становится медленным, так как выполняется svn ls
для каждого найденного файла.
Есть ли способ сделать это быстрее / лучше?