O Windows pré-commit gancho para Subversion comentário comprimento
-
22-08-2019 - |
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.
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 .