O seguinte pode fazer o que você quiser:
#!/bin/bash
REPOS="$1"
REV="$2"
echo In revision $REV, the following projects were changed:
svnlook dirs-changed "$REPOS" --revision "$REV" \
| sed 's%/.*%%' \
| sort -u \
| while read PROJ ; do
echo "$PROJ"
done
Uma explicação do que está acontecendo, caso você não esteja muito familiarizado com o shell de script:
- usamos
svnlook
para obter a lista de diretórios que foram alterados - usamos
sed
para cortar o primeiro "/
" e tudo depois dele - então, temos uma lista de nomes de projetos, possivelmente com duplicatas. - usamos
sort -u
("sort unique") para eliminar duplicatas - um por um, lemos cada nome em $ PROJ e fazemos algo com ele.
Você pode substituir a linha echo "$PROJ"
pelo que deseja fazer com o nome do projeto. Se vários projetos foram alterados no mesmo commit, o que você colocar lá será executado uma vez para cada projeto alterado, com $ PROJ definido apropriadamente.
Este script não mostrará se os arquivos foram adicionados à raiz do repositório, mas se os diretórios foram adicionados, eles aparecerão na lista de projetos modificados. Se você quiser que a raiz também seja listada, você pode substituir a seguinte linha sed e ela aparecerá como "/". Se você fizer isso, tenha cuidado para não checar o repositório inteiro por acidente!
...
| sed '/^\/$/!s%/.*%%' \
...