скрипт для добавления файлов в SVN с фильтрами - PullRequest
1 голос
/ 23 октября 2009

Мой сценарий bash слабый. Я хочу создать скрипт, который фильтрует и добавляет файлы в SVN.

Пока у меня есть это

ls | egrep -v "(\.tab\.|\.yy\.|\.o$|\.exe$|~$)"

Я пытался вывести его с помощью exec, но не мог понять, как. До этого я проверял, использует ли svn add регулярные выражения. Я не уверен, что это так, и я не могу понять, как отменить вышеперечисленное без -v (я устал "[^((\.tab\.|\.yy\.|\.o$|\.exe$|~$))]", но это не сработало, как ожидалось (кажется, что игнорируются только файлы .tab.))

Как мне создать скрипт для добавления файлов в SVN после применения фильтра? Это будет самый простой способ? -> использовать ls, grep, поместить в массив bash, затем использовать foreach с элементом svn add $?

ПРИМЕЧАНИЕ: это использует linux, я не думаю, что он будет работать на windows (я не смог настроить bison), так что пока он работает на большинстве дистрибутивов linux, я счастлив. Игнорируйте тот факт, что выше использует .exe

Ответы [ 3 ]

2 голосов
/ 23 октября 2009

Количество способов:

  1. Используйте обратные галочки: svn add `` ls | egrep stuff

  2. Используйте xargs: ls | egrep stuff | xargs svn add

  3. Используйте find и xargs: find . -type f -name *.c -print | grep -v '\.svn' | xargs svn add

Очевидно, измените "stuff" и "-name * .c" в соответствии со своими требованиями ...

1 голос
/ 23 октября 2009

Другим решением этой проблемы является добавление этих расширений файлов и папки .svn в шаблон игнорирования SVN.

Вооружившись клиентом, настроенным таким образом, вы можете затем сделать svn add * и получить в SVN только то, что вы хотите.

1 голос
/ 23 октября 2009

Попробуйте использовать find.

find <pattern> -prune .svn -exec svn add {} \;

Команда, следующая за exec, будет выполняться для каждого файла и {} будет заменяться именем файла на каждой итерации.

Я не нахожусь перед моей системой Linux, поэтому я не могу дать вам шаблон, который вам нужен прямо сейчас, но если вы прочитаете человека, вы можете получить его.

...