domenica, aprile 06, 2008

Subversion: primi test con Visual Studio 2005

Primi test con SubVersion e Visual Studio 2005. Risultato: funziona... ma che bel casino!


Al momento sto valutando 2 approcci diversi per l'integrazione frs SVN e VS2005:
TortoiseSVN sembra decisamente più stabile e robusto ma AnkhSVN è molto più comodo da usare: tutte le attività possono essere fatte all'interno di Visual Studio.
Inoltre TortoiseSVN ha strumenti molto più sofisticati per la gestione dei conflitti. Ovviamente si possono usare entrambi: Ankhsvn per le attività "normali", TortoiseSvn per quelle speciali e sofisticate.

Dopo vari casini sono riuscito a mettere su anche Apache con il ModSvn e ad attivare l'Https. A dire la verità i grossi casini sono più nel creare un certificato di prova https per Apache che impostare subversion.



[Update 16/04/2008]

Primi test seri di sviluppo multi-utente: qui cominciano i veri problemi!
Il grosso problema è la fase di merge: è abbastanza comune che 2 sviluppatori abbiano bisogno di mettere mano agli stessi file di codice sorgente. Ad esempio il primo modifica un metodo e il secondo ne aggiunge uno nuovo. Fin qui non ci sono grossi problemi: il più delle volte Ankhsvn è in grado di fare il merge in automatico. In altri casi invece, non riesce a risolvere i conflitti è l'unica è risolverli "a mano" con TortoiseMerge: per ogni riga e/o blocco in conflitto bisogna decidere chi vince oppure se farli vincere entrambi. Se i 2 sviluppatori di prima aggiungono entrambi un nuovo metodo nella stessa zona di codice, si crea un conflitto.



In questo caso è probabile che la soluzione sia di farli convivere entrambi nella file finale.




Ma i veri casini arrivano quando si iniziano ad usare elementi gestiti in modo più o meno automatico da VS2005. Un esempio per tutti: i Typed DataSet. Personalmente li uso molto e come purtroppo immaginavo creano grossi problemi a Subversion. O meglio: subversion crea grossi problemi ai typed dataset. Il problema come al solito è il merge. C'è un dataset che ha già una datatable, 2 utenti lo modificano, ad esempio aggiungendo una datatable a testa. Ovviamente c'è un problema di merge. Ma il typed dataset è più complesso di un semplice file .cs. In gioco ci sono 4 file:
  • MyDS.xsd : dataset vero e proprio (xml)
  • MyDS.Deseigner.cs : file di codice autogenerato da VS2005
  • MyDS.xsc : autogenerato da vs2005
  • MyDS.xss : autogenerato da vs2005. Contiente le informazioni per la rappresentazione a video degli elementi (coordinate xy, larghezza, ecc.)
Il conflitto si può presentare su tutti e 4 i file ma il più importante è il file XSD. Nel mio caso con il tool di Merge ho risolto il conflitto anche se lavorare e muoversi all'interno del xml di un XSD non è la cosa più agevole di questo mondo. Il risultato, dopo vari click e calci in quel posto ai tool coinvolti è stato:




Ma... non è finita. Provo a muovere una tabella e mi becco un bel errore da VS2005.



Dopo vari tentativi, ho cancellato il file .xss e Designer.cs. A questo punto VS li crea nuovamente e tutto sembra tornare a funzionare.

Conclusione (per ora): continuo a fare prove ma non porto nulla in produzione. Subversion e compagni mi convincono ogni giorno sempre di meno.

Nessun commento: