glob qualifier для выбора файлов под управлением версиями - PullRequest
1 голос
/ 06 ноября 2019

Представьте себе каталог /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 для каждого найденного файла.

Есть ли способ сделать это быстрее / лучше?

...