mai multe commituri, o singura tranzactie de SVN

Oarecum related cu frustrarile mele recente legate de taguri in SVN, ne-am apucat sa lucram pe modelul pe care l-am zis eu: cand se marcheaza codul din trunk ca "production ready", i se pune tagul "production" si se semnaleaza scriptul de build si release. Dar totusi ne rodea ceva: ca sa muti tagul, trebuie sa il stergi si sa-l refaci, adica:

svn rm $repo/tags/prod -m "dropped old prod tag"; svn cp $repo/trunk $repo/tags/production -m "retagged prod"

Doua commituri consecutive, care pe langa ca e urat, ne zgarie si pe nervi la capitolul atomicitate.

Intamplator am dat azi peste solutie: svnmucc (care pana la svn 1.5 se chema mucc, adica Multiple URL Command Client). Nu e pachet separat, e tot din sursele svn-ului. Nu m-am uitat foarte atent in surse, dar poate rula mai multe comenzi in aceeasi tranzactie, astfel incat chestia de mai sus devine:

svnmucc -m "retagged prod" rm $repo/tags/prod cp HEAD $repo/trunk $repo/tags/trunk

Pare genul de unealta de care e bine sa stii pentru acele corner-case-uri care apar o data la 2 ani dar iti mananca nervii. Pacat ca e incredibil de prost documentat si advertised (vestita carte de svn are la ora actuala un wishlist bug sa-l pomeneasca pe undeva), dar macar plange de proper usage daca e apelat fara argumente, tot e ceva. HTH.

Acum daca l-as convinge si pe git-svn sa faca tagurile de svn taguri de git, as fi un om fericit (din punctul asta de vedere).

Comments are closed.