Implementando e testando um gancho do Subversion

2

Background
Eu estou tentando implementar um número de ganchos de commit para o Subversion. Eu fiz muita pesquisa para tentar obter um teste simples para funcionar, mas não tive sorte.

Para referência, examinei, segui e tentei combinar métodos dos seguintes links:
1. Manual do Subversion para configuração de diretório < br> 2. Manual do Tortoisevn para scripts de hooks do servidor
3. Uma explicação sobre os ganchos do lado do servidor que contém um link para o Manual do Subversion
4. O tutorial de alinhamento de palavras para ganchos de pré-commit
5. Uma resposta serverfault para problemas com commit-hooks

Há também vários outros sites que referenciei e usei, mas ainda não consigo fazer com que ganchos de commit funcionem.

Meu ambiente
Minha máquina está executando o RHEL6 (Cent OS).
A subversão está localizada em uma máquina remota que não posso acessar diretamente sem a permissão do meu supervisor.
A máquina remota está executando o Subversion 1.6.

Esta é a estrutura atual do meu repositório:

test-for-svn-hooks
|-branches
|-hooks
| +-pre-commit
|-tags
+-trunk  

O pré-commit do arquivo tem temporariamente as permissões definidas como 777 . Todos os diretórios têm suas permissões definidas como 775 .

Este é o script de exemplo que eu criei para testar o hook de commit:

#!/usr/bin/env bash

echo "THOU SHALL NOT PASS" 1>&2

exit 1

Eu verifiquei e testei tudo o que posso para garantir que meu gancho de pré-consolidação esteja funcionando adequadamente. Não sei mais o que preciso verificar para ter certeza de que funciona. Consigo comprometer o que quiser e não recebo nenhuma mensagem na minha tela.

Perguntas
1. Existe alguma coisa que eu perdi ou esqueci na implementação de ganchos?
2. Se eu implementar um hook dessa maneira, eu tenho que me preocupar em implementar o mesmo hook novamente no Tortoisesvn?

Qualquer feedback e / ou sugestões são muito apreciados.

    
por Dodzi Dzakuma 08.05.2014 / 04:19

1 resposta

1

  1. Is there anything that I have missed or overlooked in implementing hooks?

Não use permissão 777. Às vezes isso pode ser contraproducente. Algumas ferramentas podem não funcionar com essas permissões suspeitas. No seu caso, é improvável que isso seja o problema, porque funciona para mim com essa configuração. Mas simplesmente não faça isso. Mude para 755.

Outra verificação de integridade é executar o script de gancho diretamente no servidor:

/path/to/test-for-svn-hooks/hooks/pre-commit

Quando o script tem um conteúdo mais significativo, então você deve testar com parâmetros apropriados também, por exemplo:

/path/to/test-for-svn-hooks/hooks/pre-commit /path/to/test-for-svn-hooks TXN

Em seguida, teste-o usando um checkout no próprio servidor, por exemplo:

svn co /path/to/test-for-svn-hooks /tmp/test1
cd /tmp/test1
date > date.txt
svn add date.txt
svn ci -m 'added some junk'

Com base no que você escreveu em sua postagem, essas etapas devem funcionar. Eu não sei os detalhes das condições sob as quais seus testes estão falhando. Se você pode chegar a este ponto, então talvez você veja a razão dos seus testes fracassados.

  1. If I implement a hook in this fashion do I have to worry about implementing the same hook again in Tortoisesvn?

Não. Os ganchos são definidos no lado do servidor. Não há necessidade de fazer nada no lado do cliente. Todos os clientes estarão sujeitos às regras definidas no gancho de pré-consolidação.

    
por 26.12.2014 / 18:47