Lavorare con Subversion
Il server mantiene un "repository" centrale, che è il database principale che
contiene il codice comune del progetto. I singoli sviluppatori hanno le loro
"copie di lavoro", che sono copie locali del database a partire da un certo
momento, insieme alle modifiche locali che lo sviluppatore non ha ancora
caricato sul server. Quando uno sviluppatore vuole condividere le sue modifiche
con il resto del gruppo semplicemente "committa" le sue modifiche sul server
usando il programma client, che avrà cura di caricarle e unirle con le
modifiche fatte da altri sviluppatori.
Se state usando Linux, FreeBSD o un altro clone UNIX moderno dovete semplicemente
installare il software SVN ufficiale, versione 1.0 o successiva, per il vostro OS.
Tutte le distribuzioni di Linux comuni hanno SVN incluso al loro interno.
C'è anche un'interfaccia GUI QT a svn chiamata eSVN,
disponibile per gli Unix (distribuzioni GNU/Linux, FreeBSD,Sun Solaris e altre),
Mac OS X e Windows.
Nota
Il server gira su subversion 1.1 al quale si può accedere con i client
nelle versioni 1.0, 1.1 o 1.2.
SVN non funzione con la localizzazione UTF-8. Dovete settare il locale a ISO8859
prima di ogni azione SVN.
Se state usando AmigaOS, avete bisogno di uno stack TCP/IP e qualche port
installato. Una opzione è il port Amiga di Olaf Barthel che potete trovare su
AmiNET (cerca "subversion").
Se state usando Microsoft Windows (TM) potete usare il client TortoiseSVN,
specialmente se vi piace usare Windows Explorer. Questo programma è Open Source
e libero, ha tante caratteristiche ed è supportato. Per favore assicuratevi anche
che i file che aggiungete hanno dei fine riga in stile UNIX, altrimenti potreste
ostacolare la generazione del codice. Se i file che state modificando hanno
un set proprietario di SVN eol-style:native (non vale per i nuovi file comunque)
potete anche non pensarci, e i fine riga (EOL) saranno automaticamente
convertiti. Esempi di editor che salvano con questi EOL sono
Notepad++, TigerPad (versione gratuita
e migliorata di Notepad), DOS Navigator OSP, e altri.
E' disponibile anche eSvn, come specificato sopra.
Se state usando MaxOS X potete usare uno dei tanti port SVN disponibili, come
il Port subversion di Martin Ott. Dopo aver fatto questo, potreste volere
installare una GUI SVN aggiuntiva come Versions o svnX. svnX è il client SVN più
aggiornato e supporta anche l'integrazione, fra gli altri, del texteditor
freeware Textwrangler (precedentemente noto come BBedit Lite).
Notate che quando usare Textwrangler o altri editor di testo Mac, dovete
cambiare la codifica dei caratteri da 'Macos roman' a 'ISO latin 1' (ISO8859)
per i vostri documenti (cambiatelo nelle preferenze). Per quanto rigurda TW
tutte le altre impostazioni sono corrette di default. Tutte le applicazioni
specificate sono freeware e disponibili come Universal Binary per i Mac PPC e
Intel. C'è anche il client eSvn, come specificato sopra.
A differenza di CVS, non avete bisogno di loggarti sul server. Invece, SVN ti
chiederà login e password quando serve.
Nota
Il repository di AROS gira su un server protetto da password, ciò significa
che devi ottenerne l'accesso per poter collaborare allo sviluppo. Su
richiesta di Amiga Inc., l'accesso anonimo di sola lettura al repository è
stato disabilitato.
Per avere una copia dei sorgenti di AROS potete usare il comando "checkout",
così:
> svn checkout https://svn.aros.org/svn/aros/trunk/AROS
Questo creerà una directory chiamata AROS e la popolerà con tutti i sorgenti,
può impiegarci un po' di tempo se avete una connessione lenta. Il modulo
"contrib" contiene i programmi di terze parti che sono stati portati su AROS.
Dovete farne il checkout al fine di compilarli:
> cd AROS
> svn checkout https://svn.aros.org/svn/aros/trunk/contrib
Consiglio
Dopo il checkout, SVN ricorderà da dove vengono i sorgenti.
Oltre ai sorgenti principali di AROS che abbiamo scaricato nella sezione
precedente, ci sono anche altre cose sul server SVN non direttamente legate al
cuore del sistema operativo. Per esempio, i moduli "binaries" che contengono
immagini come screenshot, sfondi e roba simile, e il modulo "documentation" che
contiene i sorgenti del sito web.
Potete ottenere una lista dei moduli disponibili col comando:
> svn ls https://svn.aros.org/svn/aros/trunk/
Dopo aver fatto il checkout dei sorgenti, potreste volerli aggiornare
periodicamente per avere le ultime modifiche che gli altri sviluppatori hanno
committato. Per far ciò usate il comando "update":
> cd AROS
> svn update
Questo unirà tutte le modifiche che altri sviluppatori hanno fatto ai vostri
sorgenti e scaricherà inoltre nuovi file e directory che sono state aggiunti.
Se qualcuno ha committato modifiche a un file che anche voi avete modificato
localmente, SVN tenterà di unire le modifiche automaticamente. Se entrambi
avete modificato le stesse righe, SVN potrebbe fallire nell'intento di unire i
sorgenti. Quando questo succede, SVN si lamenterà e inserirà entrambe le
versioni nel file, separate da <<<< Dovrete quindi modificare il file e
risolvere il conflitto manualmente.
Avvertenza
Solo perchè SVN ha unito con successo le tue modifiche con quelle degli
altri sviluppatori non significa che tutto è a posto. SVN tratta solo il
contenuto testuale; potrebbero sempre esserci dei conflitti di logica
dopo l'unione (es. un altro sviluppatore potrebbe aver modificato le
semantiche di qualche funzione che avete usato nelle vostre modifiche).
Dovete sempre verificare i file che avete unito per vedere se hanno ancora
senso.
Se avete fatto qualche modifica e sentite di voler condividere il vostro lavoro
con gli altri sviluppatori, potete usare il comando "commit":
> svn commit
Potete specificare una lista di file da committare; diversamente SVN esaminerà
la directory corrente e troverà tutti i file che avete modificato e li
committerà. Prima di inviare le vostre modifiche al server per l'incorporazione,
SVN vi chiederà di inserire un messaggio di log. Questo messaggio deve contenere
una breve descrizione e in certi casi una motivazione. I messaggi di log ben
scritti sono molto importanti, perchè rendono più semplice per gli altri
sviluppatori, capire velocemente quello che avete fatto e forse anche il perchè.
I messaggi di log vengono raccolti e quindi inviati in una mail giornaliera alla
mailing list di sviluppo, cosìcchè ognuno può tenersi aggiornato sullo sviluppo
del codice.
Prima di committare le vostre modifiche in una directory, dovreste sempre fare
prima di tutto un update per vedere se qualcuno ha modificato i file mentre ci
stavate lavorando. Nel caso ciò accada, dovete risolvere tutti i problemi prima
di committare. Inoltre per favore, assicuratevi di avere testato le vostre
modifiche prima di committarle; per lo meno che non danneggino la compilazione.
Per aggiungere nuovi file e directory al repository, usate il comando "add":
> svn add file.c
> svn add dir
SVN non esaminerà automaticamente le nuove directory aggiungendone i contenuti;
dovete farlo voi. Dopo aver aggiunti il file, dovete usare il comando "commit"
per aggiungerlo definitivamente al repository.
Nota
Non aggiungere file generati (in genere mmakefile, strings.h) al
repository. Altrimenti questi file non saranno aggiornati quando il file
sorgente viene modificato.
I vari sistemi operativi differiscono nei codici usati per i fine riga. Per
assicurarsi che i file di testo che non sono generati/modificati su Linux,
abbiamo il corretto codice di fine riga è necessario lanciare ciò che segue:
svn propset svn:eol-style native <source.c>
Subversion può sostituire le parole chive speciali nei file sorgente. Per
abilitare questa funzione è necessario lanciare:
svn propset svn:keywords Author Date Id Revision <main.c>
Nota
Puoi configurare Subversion affinchè setti automaticamente le proprietà per
certi tipi di file. Per favore, consulta la documentazione di Subversion.
Quando volete aggiungere un insieme più grande di file, ad esempio il codice
sorgente di qualche software esistente, "svn add" diventa presto noioso. Per
questo dovreste usare il comando "svn import". Sfortunatamente, la sezione
riguardante il comando di import nel manuale SVN è scritta male, quindi un
esempio è nell'ordine:
Mettete i file e le directory che volete importare dove preferite, basta che
non siano all'interno della vostra copia di lavoro. Lanciare il comando
"import" su una directory situata all'interno della copia di lavoro SVN può
portare a risultati molto strani, quindi è meglio evitare.
Spostatevi nella directory che contiene i file che desiderate importare:
> cd name-1.2.3
Importate i file con il comando "svn import":
> svn import -m <messaggioDiLog> <PercorsoDiDestinazione>
Questo importerà ricorsivamente nel repository tutti i file della directory
corrente e di quelle interne, nel percorso di destinazione e col messaggio
di log che avete specificato. Attualmente, non tutti i file vengono
aggiunti: SVN ignorerà i nomi di file che comunemente sono file di backup o
nascosti, come #?.bak, .#? e #?~.
Non di meno, dovreste rimuovere tutti i file che non volete far finire nel
repository prima di iniziare l'import. Comunque non tentate di interrompere
SVN durante l'importazione mentre vedere che sta aggiungendo un file che non
volevate aggiungere. Mettete giusto una note e cancellate il file
successivamente.
Per esempio, diciamo che volete importare i sorgenti di SVN 1.1.3 nella
directory "contrib/development/versioning/svn":
> cd subversion-1.1.3
> svn import -m "Initial import of SVN 1.11.12"
\ https://svn.aros.org/svn/aros/trunk/contrib/development/versioning/svn
Informazioni più dettagliate su SVN possono, ovviamente, essere trovare nelle
pagine del manuale e nei file info distribuiti con SVN stesso, e ci sono anche
numerosi siti che contengono tutorials e guide che possono essere più facili da
leggere. Le pagine seguenti sono altamente consigliate:
|
|