Prima della espansione universale di Internet, i programmatori lavoravano nella stessa struttura immobiliare, solitamente un unico palazzo, e potevano facilmente interagire tra loro per via della loro vicinanza fisica. Con l'avvento della rete globale i gruppi di lavoro sono diventati sempre più internazionali e i progetti sono sviluppati da persone che si trovano anche a migliaia di chilometri di distanza tra loro. In questo articolo esaminiamo, in maniera molto generale ma chiara ed esauriente, due diverse piattaforme di collaborazione remota: SVN e Git.
Introduzione
Quando ero un giovane programmatore decisi di sviluppare un software in collaborazione con un collega che abitava a circa 600 chilometri da me. Internet non era ancora diffuso come oggi e i lavori di analisi, codifica, scambio di idee, aggiornamenti ed altro non potevano essere portati avanti comodamente. Discussioni fatte al telefono, con esose bollette telefoniche (prima si pagava l'interurbana) limitavano un po' le varie attività. Gli aggiornamenti erano portati avanti per mezzo di spedizione dei floppy disk attraverso il servizio di posta ordinaria, con tanto di costi di pacco e francobolli e per la logistica delle operazioni più "banali" potevano passare anche parecchie settimane. A volte succedeva che sia io che il collega mettevamo le mani allo stesso codice, senza saperlo, e le modifiche finali, ovviamente, andavano a confondere tutto il listato. Non esisteva, in questo modo, un sincronismo tra i programmatori, e la programmazione del software era molto faticosa e problematica. La sincronizzazione dei files, ultimi aggiornamenti automatici, notifiche e altro sono adesso assicurati da due valide piattaforme: SVN e Git. I programmatori non conoscono più le distanze tra nazioni e il progetto può essere sviluppato come se i componenti di squadra si trovassero vicini tra loro.
Subversion (SVN)
L'SVN è sicuramente il più vetusto ma risulta molto affidabile e stabile. Grazie ad esso il programmatore può avere sotto controllo tutte quelle operazioni che, solitamente, farebbero perder tempo e complicherebbero il lavoro di controllo. Alcuni software e progetti sono così complessi e composti da migliaia di files che sarebbe fisicamente impossibile conoscere tutte le locazioni dei documenti, chi ha effettuato l'ultima modifica, ecc. Il sistema, dunque, permette d effettuare alcune operazioni automaticamente come, ad esempio, comunicare se due o più programmatori stanno eseguendo operazioni che mandano in conflitto il lavoro, oppure tenere il controllo delle modifiche in corso, e altri automatismi fondamentali, imprescindibili quando si lavora in gruppo, specialmente dislocato in modo promiscuo e distante.
Si tratta di un software freeware e opensource. Gestisce i dati e i sorgenti in un server remoto, memorizzati in dei repository (ossia gli archivi centralizzati dei dati). Quando il programmatore accede a tali dati con un client SVN, in realtà essi sono copiati nel proprio hard disk locale (anche se cambia la relativa icona).
Le modifiche dei sorgenti sono quindi effettuate in locale e poi trasferite sul server remoto (commit). Con questa filosofia un singolo file può essere anche revisionato da diversi programmatori. Sarà poi il Subversion a stabilire l'esistenza di eventuali conflitti e a bloccare, casomai, le procedure che hanno procurato l'errore. Il tutto in modo estremamente facile, trasparente e automatico. In pratica il sistema gestisce i dati come un elenco di modifiche ai files, come mostrato in figura 1.
Il client TortoiseSVN
La parola tortoise, in inglese, [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2375 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Bell’articolo, chiaro e semplice. Consiglio, come sistema di controllo versione distribuito o decentralizzato (DVCS da Distributed Version Control System), anche BitBucket: uno strumento comodo per la condivisione all’interno di un gruppo di software e documenti scritti in linguaggi di markup come LaTeX o Markdown.
L’avvento di internet e quindi dell’allargamento dei progetti ha permesso diciamo così la nascita di nuovi tool SVN. Una panoramica molto interessante su un argomento di spiccato interesse.
Domanda da primo approccio. Quando si definisce il comando:
svn checkout http://indirizzo_repository c:/cartella_locale
significa che devo avere uno spazio mio su di un webserver aperto a tutti senza alcuna protezione al sorgente? Ovvero noto il link http://indirizzo_repository tutti possono poi accedere al sorgente?
Quali sono dei repository da utilizzare tipici?
Altra domanda. Ha senso usare tool di questo tipo SVN per progetti in cui ci si lavora in un solo programmatore?
Ciao.
Se sei un utente di SVN e accedi ai sorgenti, devi solo copiare il tutto sul tuo HD, con il comando checkout. Non devi avere un webserver.
Ovviamente il repository è protetto da password, infatti se tenti di fare un aggiornamento, la prima cosa che chiede sono le credenziali.
Se sei un programmatore solo, non vedo tanta utilità… specialmente se i sorgenti sono ben ordinati e residenti in un unico disco.