Deploy automático do SVN
Estou iniciando um novo projeto e aproveitei para mudar do CVS para o Subversion.
Uma das coisas que achei interessante é o esquema de “hooks“. É um conceito parecido com “triggers” de bancos de dados. Você pode programar alguns scripts para serem executados em momentos específicos do ciclo gerenciado pelo SVN. As opções são:
post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl
Os nomes são auto-explicativos. Por exemplo, o script post-lock vai ser executado sempre após algum usuário ter feito o lock de um arquivo.
Estes arquivos estão armazenados no diretório hooks do repositório do projeto.
O que eu fiz foi alterar o post-commit.tmpl
É preciso remover a extensão do nome e dar permissão de execução no arquivo, então:
cp post-commit.tmpl post-commit
chmod +x post-commit
O conteúdo do arquivo ficou assim:
REPOS="$1"
REV="$2"
PROD="/var/www/html"
#pega todas as alteracoes
svnlook changed $REPOS --revision $REV >> /tmp/lixo_$REV
#pega cada alteracao e salva
for i in `cat /tmp/lixo_$REV|cut -c 5-1024` ; do
svnlook cat $REPOS $i > $PROD/$i
done
#apagar arquivo
rm /tmp/lixo_$REV











ola!!
teria como vc me explicar como obrigar em td commit dado, ter obrigatoriamente uma mensagem?
Boa pergunta!
Não sei
Mas vou pesquisar
legal,
eu estou usando o svn também e estava dando deploy no braço. Agora ficou mais fácil.
Legal.. mas comigo não deu certo.
simplesmente quando faço o commit, não atualiza no htdocs.
Olá Amigo,
Andei lendo muito sobre hooks e a forma que voce demonstra foi a que mais cheguei perto.
Coloquei ela desta forma:
PROD=”/teste”
#pega todas as alteracoes
svnlook changed $REPOS –revision $REV >> /tmp/lixo_$REV
#pega cada alteracao e salva
for i in `cat /tmp/lixo_$REV|cut -c 5-1024` ; do
svnlook cat $REPOS $i > $PROD/$i
done
#apagar arquivo
rm /tmp/lixo_$REV
quando executo o comando para debugar o hook, recebo o seguinte retorno:
administrador@angra:/srv/svn/avanz/hooks$ sudo env – ./post-commit /srv/svn/avanz/
svnlook: missing argument: –revision
Type ’svnlook help’ for usage.
Voce pode me dar uma ajudinha? Valeu aih brother