Tipuri comune de cârlige de subversiune

Ce tipuri de scripturi sunt folosite de Subversion? Doar ideile generale, dar codul ar fi grozav!

0
fr hi bn

16 răspunsuri

În locul meu de muncă am creat un cârlig post-comitet care generează fluxuri RSS care sunt afișate în diferite tablouri de bord și sunt folosite pentru ca recenzenții de cod să știe când este timpul să revizuiască și pentru noi să vedem că noii angajați se angajează suficient .

0
adăugat

Cea mai obișnuită este credincioșia de a permite oamenilor să schimbe comentariile revizuirii după încheierea comiterii.

Trebuie să activați scriptul de cârlig "pre-revprop-change" pentru a permite acest lucru. Exemplul furnizat, dacă este activat, permite editarea numai a proprietății de comentariu și este doar comitetul inițial. Mare pentru corectarea greșelilor.

0
adăugat

Folosesc cârlige post-comitere ( Cred că este acesta ) pentru a posta un mesaj unui forum pe Basecamp pentru fiecare comitet. Două avantaje:

  1. În calitate de dezvoltator principal, primesc în fiecare dimineață un pachet de angajamente (prin feed-ul RSS de la acel forum de bază) și pot vedea ce a făcut echipa mea destul de repede.

    li>
  2. Instalarea noastră Trac / SVN se află în spatele firewall-ului nostru, deci acest lucru îmi oferă elevilor mei în alte locații o fereastră în ceea ce facem. S-ar putea să nu înțeleagă, dar pentru un manager o mulțime de activitate arata ca, bine, o mulțime de activitate;)

Cred că rezultatul final al acestui lucru este similar cu ceea ce face @Aviv.

Caut soluții pentru construirea celei mai recente comiteri pe un server separat pentru o integrare continuă, dar va trebui să modificăm modul în care modificăm schema bazei de date înainte ca aceasta să funcționeze.

0
adăugat

Un cârlig pentru notificarea sistemului de gestionare a erorilor / problemelor privind modificările aduse depozitului. Ie. mesajul de comitet are o problemă: 546 sau o etichetă similară care este analizată și alimentată în sistemul de gestionare a erorilor.

0
adăugat

Verificăm următoarele cu scripturile noastre cu cârlig:

  • A fost furnizat un mesaj de jurnalizare de comitere
  • A fost specificat un recenzent pentru comiterea
  • Că nici un fel de cod generat automat sau tipuri de fișiere interzise nu vor ajunge în depozit
  • Trimiteți un e-mail când este creată o ramură / etichetă

Încă mai dorim să implementăm următoarele:

  • Trimiteți un e-mail când un utilizator obține o blocare a unui fișier
  • Trimiteți un e-mail atunci când blocarea dvs. a fost furată
  • Trimiteți un e-mail tuturor dacă o proprietate revizie a fost modificată
0
adăugat

Am o instalare folosind biblioteca ruby Tinder pe care o trimit într-o cameră de tabără, dacă cineva dorește scriptul pe care îl pot posta sau trimite codul.

Alte lucruri comune pe care le-am văzut sunt mesajele către sistemele de urmărire a erorilor și notificările prin e-mail.

0
adăugat

Folosesc cârligul pre-revprop-change care permite în realitate să revin și să editeze comentarii și astfel de informații după efectuarea comitetului. Acest lucru este foarte util dacă există informații lipsă / eronate în comentariile comitetului.

Aici am postat un fișier batch pre-revprop-change.bat pentru Windows NT sau mai târziu ... Tu cu siguranță o poate spori cu mai multe modificări. De asemenea, puteți obține a post-revprop-change.cmd din el pentru a salva codul vechi snv: log undeva sau doar pentru al adăuga la noul jurnal ...

Singura parte dificilă era de a putea să analizeze de fapt stdinul fișierul lot ... Aceasta se face aici cu comanda FIND.EXE .

Cealaltă este faptul că am primit rapoarte de la alți utilizatori de probleme cu utilizarea codului / b cu comanda exit . Este posibil să aveți nevoie doar de eliminarea acelui / b în aplicația dvs. specifică, în cazul în care cazurile de eroare nu se comportă bine.

@ECHO OFF

set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%action%'=='M' goto ERROR_ACTION

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
 set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY

goto :eof



:ERROR_EMPTY
echo Empty svn:log properties are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1 
0
adăugat
Mulțumesc a fost foarte util.
adăugat autor ziggy, sursa
De fapt, regrupez toate cârligele mele într-un cont de github, astfel încât să poată fi îmbunătățit în timp github.com/philibertperusse / subversiune cârlige
adăugat autor Philibert Perusse, sursa
În loc să permită un mesaj jurnal non-gol, cum se face astfel încât mesajul jurnal editat să aibă cel puțin un număr de caractere, de ex. 10 caractere?
adăugat autor alondono, sursa

Windows cârlig de pre-comitere pentru a verifica dacă jurnalul conține ceva.

@ECHO OFF
setlocal

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set txn=%2

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set svnlookparam="%repos%" -t %txn%

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
set bIsEmpty=true
for /f "tokens=* usebackq" %%g in (`svnlook log %svnlookparam%`) do (
   set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY

echo Allowed. >&2

goto :END


:ERROR_EMPTY
echo Empty log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
:: You may require to remove the /b below if your hook is called directly by subversion
exit /b 1

:END
endlocal
0
adăugat

post-comitere cârlig pentru a trimite notificare prin e-mail că ceva schimbat în depozit la o listă de e-mailuri. Aveți nevoie de sendmail.exe în același director ca fișierul dvs. de hârtie împreună cu sendmail.ini.

De asemenea, aveți nevoie de un fișier post-commit.tos.txt de lângă post-commit.cmd pentru a lista destinatarii de e-mail. Dosarul trebuie să conțină:

[email protected],[email protected],[email protected]

Aici este codul cârlig:

@ECHO OFF
setlocal

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set rev=%2

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set tos=%repos%\hooks\%~n0.tos.txt
set reposname=%~nx1
set svnlookparam="%repos%" --revision %rev%

if not exist "%tos%" goto :END

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Prepare sendmail email file
set author=
for /f "tokens=* usebackq" %%g in (`svnlook author %svnlookparam%`) do (
  set author=%%g
)

for /f "tokens=* usebackq delims=" %%g in ("%tos%") do (
  set EmailNotificationTo=%%g
)
set SendMailFile=%~n0_%reposname%_%rev%.sm

echo To: %EmailNotificationTo% >> "%sendMailFile%"
echo From: %reposname%[email protected] >> "%sendMailFile%"
echo Subject: [%reposname%] Revision %rev% - Subversion Commit Notification  >> "%sendMailFile%"

echo --- log [%author%] --- >> "%sendMailFile%"
svnlook log %svnlookparam% >> "%sendMailFile%" 2>&1
echo --- changed --- >> "%sendMailFile%"
svnlook changed %svnlookparam% --copy-info >> "%sendMailFile%" 2>&1

echo .>> "%sendMailFile%"

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Send email
type "%sendMailFile%" | "%~dp0sendmail.exe" -t

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Clean-up
if exist "%sendMailFile%" del "%sendMailFile%"


:END
endlocal
0
adăugat

câteva lucruri pe care le folosim pentru:

  • integrating with the bug tracker (Trac in our case - a commit message that says 'Closes #514' automatically marks that bug as closed
  • integrating with the build integration (buildbot in our case - a commit to a watched branch triggers a build
  • pre-commit hook for validating the commit - we use svnchecker. It validates our Python code for PEP8 correctness
  • sending checkin mails to a mailing list
  • running indentation scripts
0
adăugat

Folosim FogBugz pentru urmărirea erorilor, oferind scripturi de comitere de subversiune care vă permit să includeți un număr de caz în verificați comentariile și apoi asociați eroarea cu check-in-ul pe care l-ați fixat. Aceasta necesită configurarea unei instanțe WebSVN , astfel încât să aveți un vizualizator bazat pe web pentru depozitul dvs.

0
adăugat

Folosim un script de cârlig de comitere pentru a declanșa robotul nostru de lansare. Scrierea de informații de presă noi într-un fișier numit changes.txt în diferitele noastre produse va declanșa crearea unei etichete și a artefactelor relevante.

0
adăugat

Dacă aveți o combinație de utilizatori de Unix și Windows care lucrează cu repository, vă recomand să utilizați case-insensitive.py ca instrument de precauție. Împiedică situațiile greu de configurat, în care svn actualizări eșuează pentru utilizatorii de Windows din cauza unei redenumire fișier care a schimbat doar cazul numelui fișierului . Crede-mă, există o șansă bună că te va salva probleme.

0
adăugat
Nu văd de ce este încă o problemă. Windows XP și de mai sus, cu o modificare specifică a registrului, poate avea sensibilitate la caz. Este doar utilitățile clientului, cum ar fi TortoiseSVN, care nu o suportă. Ar trebui să fie o opțiune de instalare pentru a seta acest registru la instalarea acestor utilitare client svn.
adăugat autor TamusJRoyce, sursa

Acest lucru a fost discutat pe lista de discuții a utilizatorilor cu subversiune cu ceva timp în urmă. Acest mesaj , în special, are câteva idei utile.

0
adăugat

I forgot to enter a comment while committing. Didn't have time to figure out why my pre-revprop-change hook wasn't working. So the following svnadmin command worked for me to enter a commit message: svnadmin setlog --bypass-hooks -r 117 junk, where "junk" is the file containing the text which I wanted to be the comment. svn setlog help has more usage info...

0
adăugat

Pentru cei care caută un pre-revprop-change.bat pentru o operație snvsync :

https://gist.github.com/1679659

@ECHO OFF

set user=%3

if /I '%user%'=='syncuser' goto ERROR_REV

exit 0

:ERROR_REV echo "Only the syncuser user may change revision properties" >&2
exit 1

Acesta vine doar de aici: http: / /chestofbooks.com/computers/revision-control/subversion-svn/Repository-Replication-Reposadmin-Maint-Replication.html și a fost adaptat pentru Windows.

0
adăugat