svn os ganchos de pré e pós-commit não funcionam quando o subversion é enviado

0

Eu não tenho ideia de como consertar isso. Eu escrevi um script bash simples que grava data e hora atuais no arquivo e o coloco no gancho post-commit e pre-commit. Quando eu corro isso digitando localmente por exemplo. ./pre-commit ./post-commit ele funciona, mas quando eu me comprometo com o meu svn, nada acontece. Talvez eu tenha perdido alguma coisa na configuração? Por favor, me ajude ... Aqui está o roteiro só para você saber do que se trata:

filename="datefile"
echo "writing file ${filename}..."
echo "Commited..." > ${filename}
date | cut -d"," -f2 >> ${filename}
date | cut -d" " -f5 >> ${filename}
echo "Done!"

Obrigado por qualquer ajuda.

ps. Este não é um problema com perms, eu já dei certo para ambos, os arquivos de scripts e o datefile.

    
por noclueboy 30.12.2013 / 12:29

1 resposta

1

Primeiro, você está perdendo a linha shebang; a primeira linha deve ler #!/usr/bin/env bash ou #!/bin/bash

Segundo, você está fazendo suposições sobre qual será o diretório de trabalho atual quando o gancho for executado, portanto, se ele conseguir executar o script mesmo que esteja faltando a linha shebang importante, provavelmente funcionará, mas escreve datefile em um diretório diferente do que você assumiu. Forneça um caminho absoluto para o arquivo que você deseja gravar.

Por fim, ${filename} é uma prática ruim, você deve sempre citar as expansões de variáveis para evitar a divisão de palavras e a expansão do nome do caminho: "$filename" . Além disso, em vez de fazer date | cut ... , apenas informe a data para gerar apenas os bits que você procura. Por exemplo,

printf 'Commit happened at %s\n' "$(date "+%Y-%m-%d %H:%M:%S")" > "$filename"

Em uma nota lateral, o printf de bash (desde 4.0) também pode gerar strings de datas.

printf 'Commit happened at %(%Y-%m-%d %H:%M:%S)T\n' -1 > "$filename"

man bash | less +/printf para ler mais sobre printf.

    
por geirha 30.12.2013 / 13:30