Domanda

Mi piacerebbe evitare di creare SVN mergeinfo proprietà su altro che la radice di rami. Abbiamo un ramo tronco e alcuni altri rami.

Supponendo che ne so assolutamente nulla di trigger svn, quali passi devo seguire per impostare un pre-commit hook che impedisce aggiunte di proprietà mergeinfo a nulla ma la radice dei rami?

Il tronco si trova nella base del repository "/ trunk", e tutti i rami sono in "/ rami / pippo"

È stato utile?

Soluzione

In sostanza, è necessario definire uno SVN pre-commit hook . Prima, però, leggere su ganci in generale .

È probabile che vuole iniziare con la copia del file pre-commit.tmpl a pre-commit, e implementare la logica in là.

È probabile che vuole esaminare il diff della transazione attualmente in esecuzione per linee come:     Aggiunto: svn: mergeinfo

Dal momento che le informazioni su quale file questo è stato aggiunto per è su una linea diversa, potrebbe essere necessario uno strumento di elaborazione più complessa di grep -. Forse un semplice script perl

Quando si determina che una transazione ha una proprietà ha aggiunto che non si desidera, è possibile bloccare il commit; o, se si è particolarmente audaci, si potrebbero tentare di modificare la transazione e continuare.

Altri suggerimenti

Il seguente dovrebbe funzionare. Il repository ha già la svn: mergeinfo sul tronco, in modo da non voglio che nessuno di aggiungerne uno nuovo.

A proposito, il nostro gancio reale assicura anche che ogni commit è accompagnata da un messaggio di log e protegge contro la cancellazione di alcuni nostri importanti directory primarie tramite browser repo anche.

@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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top