Tudo bem, embora (ainda) não responda completamente à pergunta, eu começo uma resposta aqui agora, e vou preenchê-la com quaisquer novas descobertas ...
Solução alternativa
Para contornar o problema, basta confirmar o diretório pai do caminho do comutador em vez do próprio caminho comutado ou um item filho dele.
Só para mencionar: ele não altera o comportamento para aplicar a propriedade do script de gancho recursivamente.
Sintaxe para o caminho do script do gancho (propriedades tsvn:*hook )
Primeiro, ao especificar o caminho para um script de gancho, é muito importante que, assim que você usar um dos espaços reservados %REPOROOT% ou %REPOROOT+% , use a barra invertida / como separador de caminho. Acredito que isso esteja ligado ao fato de que essas variáveis contêm a URL para a raiz do repositório internamente, de acordo com a documentação , mas não um caminho de cópia de trabalho local (WC). Para caminhos locais fixos, as barras invertidas / e barras invertidas \ são aceitas.
Caso o caminho contenha ESPAÇOS , você deve colocá-lo entre aspas; você pode usar a cotação em geral, pois não prejudica de qualquer maneira.
Caminho normal vs. caminho comutado, Níveis de diretório
Vamos supor que temos um repositório em D:\TEST\repo contendo /trunk , /branches , /tags e /hooks no nível superior, um script script.bat em /hooks com o conteúdo exit 0 , um arquivo chamado file.txt in /trunk , uma ramificação de /trunk at /branches/test e outra ramificação de /trunk at /branch ; o WC está com check-out em D:\TEST\wc , mas temos um check-out esparso , de modo que somente /trunk e /hooks estejam lá (ambos recursivamente).
Em seguida, configure uma nova propriedade tsvn:startcommithook na raiz da WC, desta forma:
Agora tente confirmar qualquer coisa em qualquer local do WC (root, /trunk , etc.); a caixa de diálogo aprovar / rejeitar script de gancho aparece, mostrando o seguinte caminho do script de gancho, que é o caminho correto, portanto, o script é executado ao clicar em 'Executar':
Agora mude o caminho WC local D:\TEST\wc\trunk para /branches/test e tente confirmar o arquivo WC local file.txt ; a caixa de diálogo aprovar / rejeitar mostra o seguinte caminho errado desta vez:
Ao clicar em "Executar", o script não pode ser executado, obviamente:
Mas ao alternar o caminho WC local D:\TEST\wc\trunk para /branch agora e tentar confirmar o arquivo WC local file.txt , a caixa de diálogo aprovar / rejeitar mostra o caminho correto novamente como acima , e o script pode ser executado.
Portanto, aparentemente, profundidades diferentes no nível da hierarquia de diretórios de caminhos normais e comutados parecem anular a expansão adequada do espaço reservado %REPOROOT% .
Esse comportamento é exatamente o mesmo no caso de o script de gancho ser confirmado ou não.
