Pergunta

Parece que estou chegando a lugar nenhum com isso. Ou pesquisar na web para um script, etc. Alguém tem um script que você pode simplesmente editar o out-of-box pré-commit.tmpl em um ambiente Windows que requer x caracteres para ser inserido em um comentário sobre comprometer em Tortoise Subversion globalmente de modo a que todos os membros da equipe são necessários que este requisito é empurrado para baixo para os clientes do servidor SVN?

Eu não sei a linguagem de script e isso deve ser algo muito muito simples, sem me tomar o tempo para descobrir scripting para os próximos 3 horas.

Foi útil?

Solução

Este é um arquivo .bat para exigir existe um comentário. Ele verifica a existência de pelo menos um caractere no comentário.

 @echo off  
 :: Stops commits that have empty log messages.        
 @echo off  

 setlocal  

 rem Subversion sends through the path to the repository and transaction id  
 set REPOS=%1  
 set TXN=%2           

 svnlook log %REPOS% -t %TXN% | findstr . > nul  
 if %errorlevel% gtr 0 (goto err) else exit 0  

 :err  
 echo. 1>&2  
 echo Your commit has been blocked because you didn't enter a comment. 1>&2  
 echo Write a log message describing the changes made and try again. 1>&2
 echo Thanks 1>&2
 exit 1

Este arquivo fica na pasta hooks do repositório, chamado de pré-commit.bat /. Se você precisa de uma quantidade mínima de caracteres, a linha para modificar é

svnlook log %REPOS% -t %TXN% | findstr . > nul

Então, se você queria um mínimo de 10 caracteres, você precisa ter 10. É mais do que apenas um

svnlook log %REPOS% -t %TXN% | findstr .......... > nul

opções avançadas para o comando findstr vai deixar você fazer mais extravagante cheques (determinados conjuntos de caracteres, ect)

Outras dicas

Eu uso SubversionNotify , ele provavelmente faz mais do que o que você precisa, mas é muito simples de configurar .

Tente isto:

rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]  
IF %ERRORLEVEL% EQU 0 GOTO OK  
echo Your commit has been blocked because you didn't provide a log message 1>&2  
echo Please write a log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  

:OK  
rem -------------------------------------------------------------  
rem Check if comment is in list of reserved words to not be used..  
rem -------------------------------------------------------------  

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment  
setlocal enabledelayedexpansion  
Set SEPARATOR=  
set COMMENT=  
for /f "delims=" %%a in (comment) do (      
    set currentline=%%a  
    set COMMENT=!COMMENT!%SEPARATOR%!currentline!  
)  

FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null  
If %ERRORLEVEL% EQU 1 goto OK2  

:Fail  
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2  
echo Line is -%COMMENT%- 1>&2  
echo Please write a proper log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  


:OK2  
rem -------------------------------------------------------------  
rem Check number of words on the line if = 2 then reject comment  
rem -------------------------------------------------------------  
Set VAR1=%COMMENT%  
Set count=0  
For %%j in (%VAR1%) Do Set /A count+=1  
IF %count% EQU 2 goto Fail2  
goto OK3  

:Fail2  
echo Your commit has been blocked because not enough detail supplied 1>&2  
echo Please write a longer log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  

:OK3  
rem -------------------------------------------------------------  
rem Check that the author of this commit has the rights to perform  
rem -------------------------------------------------------------  
rem the commit on the files and directories being modified.  
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1  

rem All checks passed, so allow the commit.  
exit 0  

Eu tenho um pré-commit gancho que podem fazer exatamente o que você quer. Mais muito mais.

  • Você pode especificar um comprimento mínimo de cometer comentário.
  • Você pode combinar com o comentário cometer contra um expressão regular. Não apenas você pode especificar um comprimento, mas você também pode especificar determinados parâmetros. Por exemplo, faz o comentário cometer conter um número bug que seu defeito rastreamento usos do sistema, para que possa rastrear a mudança a um defeito particular?

Ele também permite que você faça o seguinte:

  • Set vários cometer permissões contra arquivos ou diretórios específicos:
    • read-write :. O usuário pode fazer o checkout e cometer esses itens
    • somente leitura :. O usuário pode fazer o checkout este item, mas não pode confirmar as alterações
    • adicionar-only : O usuário pode adicionar um diretório via svn cp, mas não cometer quaisquer alterações. Isto é perfeito para o diretório /tags onde você está autorizado a fazer uma tag, mas não modificar a tag.
    • não-delete :. Os usuários podem confirmar as alterações e adicionar novos arquivos, mas não excluir esses arquivos
    • no-add :. Os usuários só podem confirmar as alterações, e não adicionar ou apagar arquivos em um commit

Além disso, ele também permite que você faça o seguinte:

    certos nomes de arquivo
  • Ban via expressões regulares de englobamento ,
  • Exigir determinados arquivos ou diretórios têm um determinado conjunto de propriedades para um valor particular. Muito útil para coisas como certificando-se de scripts Unix shell, Unix Makefiles e Windows arquivos em lote tem a linha correta terminando, ou svn:ignore está definido, para que os usuários não acidentalmente comprometer em arquivos que não se deve cometer.
  • Exigir certas propriedades revisões a ser definido com certos valores. Isto é como você verificar mensagens de commit, mas dizendo que svn:log deve coincidir com certas expressões regulares.

Esta pré-commit roteiro é escrito em Perl. Por padrão, Perl vem com servidores Unix, Mac e Linux. Infelizmente, não está incluído em computadores Windows. Felizmente, existem vários open source, livre e fácil de instalar pacotes Perl para o PC, como ActivePerl morango Perl

No Windows, você pode usar o VisualSVNServerHooks.exe check-logmessage pre-commit gancho que vem com VisualSVN Server e está localizado no diretório %VISUALSVN_SERVER%bin. Esta simples ferramenta irá ajudá-lo a definir o número mínimo de caracteres permitido na mensagem de log.

Veja o artigo KB140: Validando as mensagens de log em VisualSVN servidor para obter instruções .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top