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).