Domanda

Mi sembra di essere arrivare da nessuna parte con questo. Sia la ricerca sul Web per uno script, ecc Chiunque ha uno script che si può semplicemente modificare l'out-of-box pre-commit.tmpl in ambiente Windows che richiede x caratteri da inserire in un commento su impegnarsi in Tortoise Subversion a livello globale in modo che tutti i membri del team sono richieste che tale esigenza viene spinto verso il basso per i clienti provenienti da server SVN?

Non conosco il linguaggio di scripting e questo dovrebbe essere qualcosa di dannatamente semplice senza di me di prendere il tempo per capire di scripting per le prossime 3 ore.

È stato utile?

Soluzione

Questo è un file .bat per richiedere c'è un commento. Si verifica l'esistenza di almeno un carattere nel commento.

 @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

Questo file si trova nella cartella / ganci del repository, denominato pre-commit.bat. Se avete bisogno di un importo minimo di caratteri, la linea da modificare è

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

Quindi, se si voleva un minimo di 10 caratteri, è necessario disporre di 10. 'S piuttosto che uno solo

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

opzioni avanzate per il comando findstr ti consente di fare più elaborato controlli (set certo carattere, ect)

Altri suggerimenti

SubversionNotify , probabilmente fa più di quello che ti serve, ma è abbastanza semplice da configurare .

Prova questo:

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  

Ho un pre-commit hook che può fare esattamente ciò che tu vuoi. Oltre a un sacco di più.

  • È possibile specificare una lunghezza minima di commettere un commento.
  • È possibile abbinare il commento impegnarsi contro un espressione regolare . Non solo è possibile specificare una lunghezza, ma è anche possibile specificare alcuni parametri. Ad esempio, si fa il commit commento contiene una serie di bug che utilizza il sistema di tracciamento dei difetti, in modo da poter risalire il cambio ad un particolare difetto?

Permette inoltre di effettuare le seguenti operazioni:

  • Imposta varie commettere permessi contro particolari file o directory:
    • lettura-scrittura :. L'utente può checkout e commettere questi elementi
    • di sola lettura :. L'utente può checkout questa voce, ma non può commettere modifiche
    • aggiungere solo : L'utente può aggiungere una directory tramite svn cp, ma non commette alcuna modifica. Questo è perfetto per la directory /tags in cui si è permesso di fare un tag, ma non modifica il tag.
    • no-delete :. Gli utenti possono commettere modifiche e aggiungere nuovi file, ma non eliminare questi file
    • no-aggiungono :. Gli utenti possono commettere solo le modifiche, e non aggiungere o eliminare i file in un commit

E, permette anche di fare questo:

  • Ban nomi certo file tramite espressioni regolari di globbing ,
  • richiedono determinati file o directory hanno una particolare proprietà impostata su un determinato valore. Molto utile per cose come rendere sicuri gli script di shell Unix, Unix Makefile, e Windows file batch hanno la giusta linea finale o un svn:ignore è impostato, quindi gli utenti non commettono accidentalmente nei file non dovrebbero commettere.
  • Richiede alcune proprietà revisioni che saranno definite con certi valori. Questo è il modo di controllare messaggi di commit, ma dicendo che svn:log deve corrispondere certe espressioni regolari.

Questa pre-commit script è scritto in Perl. Per impostazione predefinita, Perl viene fornito con i server Unix, Mac e Linux. Purtroppo, non è disponibile nei computer Windows. Fortunatamente, ci sono diversi open source, gratuito e facile da installare i pacchetti Perl per il PC come ActivePerl e Strawberry Perl

In Windows, è possibile utilizzare il VisualSVNServerHooks.exe check-logmessage pre-commit hook che viene fornito con VisualSVN Server e si trova nella directory %VISUALSVN_SERVER%bin. Questo semplice strumento vi aiuterà a definire il numero minimo consentito di caratteri nel messaggio di log.

Si veda l'articolo KB140: Convalida commettere messaggi di log in VisualSVN Server per le istruzioni .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top