Можно ли использовать регулярное выражение в операторе включения svndumpfilter? - PullRequest
2 голосов
/ 29 декабря 2011

Мне нужно экспортировать данные из SVN (сервер на Windows), но я не хочу включать корневой каталог.Пример:

svn
-project1
--trunk
--branches
-project2
--trunk
--branches
--onemorefolder

Я хочу включить в каталог project1.dump: ствол и ветви (не проект1) Я использую:

 svnadmin dump /svn/ | svndumpfilter include --drop-empty-revs --renumber-revs /project1/trunk /project1/branches | sed "s/Node-path:[ ]project1\//Node-path: /g" -b | sed "s/Node-copyfrom-path:[ ]project1\//Node-copyfrom-path: /g" -b > project1.dump

Но я хочу автоматизировать этот процесс и создал batfile:

call svnadmin dump /svn/iss/ -r %2:%3 | svndumpfilter include --drop-empty-revs --renumber-revs /%1/trunk /%1/branches | sed "s/Node-path:[ ]%1\//Node-path: /g" -b | sed "s/Node-copyfrom-path:[ ]%1\//Node-copyfrom-path: /g" -b > %4

Но это работает только со структурой, где находятся папки ствола и ветви.Как я могу включить все папки из моей корневой папки и исключить эту корневую папку?Могу ли я использовать регулярное выражение в операторе включения?Благодаря.

1 Ответ

0 голосов
/ 29 декабря 2011

Сначала вы можете выполнить обе команды sed как одну:

Вместо

sed "s/Node-path:[ ]%1\//Node-path: /g" -b | \
sed "s/Node-copyfrom-path:[ ]%1\//Node-copyfrom-path: /g" -b

вы можете сделать

sed "s/Node-\(copyfrom-\|\)path:[ ]%1\//Node-\1path: /g" -b

, который использует обратную ссылку \1 в шаблоне для совпадения Node-path или Node-copyfrom-path.

Для всех подпапок корня, кроме самой корневой папки, возможно, вы можете попробовать использовать find <ROOTFOLDER> -type d -mindepth 1 -maxdepth 1, который находит все подкаталоги, не включая сам корень.

Возможно, что-то вроде (не проверено):

call svnadmin dump /svn/iss/ -r %2:%3  | \                   # keep same
svndumpfilter include --drop-empty-revs --renumber-revs \
    `find %1 -type d -maxdepth 1 -mindepth 1` | \             # used find
sed "s/Node-\(copyfrom-|\)path:[ ]%1\//Node-\1path: /g" -b \ # combined line
> %4
...