Pergunta

Eu gostaria de criando svn propriedade mergeinfo em nada, mas a raiz dos ramos. Temos um ramo do tronco e alguns outros ramos.

Supondo que eu sei absolutamente nada sobre gatilhos svn, que medidas que eu preciso para seguir para configurar um gancho pre-commit que impede adições de propriedades mergeinfo a qualquer coisa mas a raiz dos ramos?

O tronco está localizado na base do repositório "/ trunk", e todos os ramos estão em "/ ramos / foo"

Foi útil?

Solução

Basicamente, você precisa definir um SVN pré-compromisso gancho. Primeiro, porém, ler sobre ganchos geral.

Você provavelmente vai querer começar com copiando o arquivo pré-commit.tmpl para pre-commit, e implementar a lógica lá.

Você provavelmente vai querer examinar o diff da transação atualmente em execução para linhas como: Adicionado: svn: mergeinfo

Uma vez que as informações sobre qual arquivo isso foi adicionado para está em uma linha diferente, você pode precisar de uma ferramenta de processamento mais complexo do que grep -. Talvez um simples script Perl

Quando você determinar que uma transação tem uma propriedade adicional de que você não quer, você pode bloquear a cometer; ou, se você está especialmente ousado, você poderia tentar modificar a transação e continuar.

Outras dicas

A seguir deve funcionar. Seu repositório já tem o svn: mergeinfo no tronco, para que você nunca quer que ninguém para adicionar um novo.

A propósito, o nosso gancho real também garante que cada submissão é acompanhado por uma mensagem de log e também protege contra a supressão de alguns dos nossos importantes diretórios de nível superior via navegador de repositório.

@echo off

set logfile=%TEMP%\%2.txt

"c:\program files\subversion\svnlook" log -t %2 %1 > %logfile%

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==UU goto checkmergetracking
)

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==_U goto checkmergetracking
)

del %logfile%
exit 0

:checkmergetracking
"c:\program files\subversion\svnlook" diff -t %2 %1 > %logfile%
find "Added: svn:mergeinfo" %logfile%
if ERRORLEVEL 1 goto nomergeinfo

del %logfile%
echo "Addition of Merge Info Not Allowed" >&2
exit 1

:nomergeinfo
del %logfile%
exit 0
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top