“Salva con Nome” è la più semplice ed usata forma di Version Control – ovvero la gestione delle revisioni di un documento. Tipo:
- BlogPost.txt
- BlogPost_V1.txt
- BlogPost_V2_Links.txt
- BlogPost_Final.txt
- BlogPost_Final_OK.txt
Eccetera. Siccome lo screenshot a destra è una veritiera rappresentazione della mia cartella di sviluppo per ALCE, ho deciso che è giunta l’ora di adottare una qualche forma di controllo versione, ovvero: Subclipse (un plugin per Flash Builder 4.6 che gestisce il supporto a Subversion).
Sto ancora imparando: in questo post ho raccolto una serie di informazioni che spero possano servire da riferimento per l’installazione ed il setup di un repository locale (cioè non su server) a chi, come me, sta giusto cominciando a mettere un po’ di ordine nel caos.
Subversion e Subclipse
Se l’argomento ti è nuovo, ti consiglio di leggere questa chiarissima Visual Guide to Version Control System (VCS). Spiega tutti i concetti del version control e la sua terminologia.
In pratica, nel paradigma centralizzato (opposto a quello distribuito), definisci un Repository: una cartella (locale o su un server remoto) che contiene una copia di riferimento del tuo codice. Puoi fare Check Out (scaricarlo) sulla tua macchina per sviluppare; poi Sincronizzi col Repository e infine fai Check In (anche detto Commit), ovvero carichi nel repository la tua versione. Il sistema traccia i cambiamenti (come somma di differenze), definisce le revisioni, funge da backup; in più, puoi ramificare lo sviluppo (Branch) ovvero duplicare la versione principale del codice (Trunk) per sperimentare nuove implementazioni – per poi eventualmente riunirla (Merge). Più una lunga serie di altre funzioni il cui senso ancora mi sfugge.
Subversion è un comune sistema di Version Control, conosciuto anche come svn (il tool a riga di comando). Se vuoi sentire parlar male di Subversion, Linus Torvalds è un’ottima fonte. Se ti stai chiedendo perché scegliere Subclipse e non Subversive come plugin per Eclipse (e quindi Flash Builder), vale la pena leggere questa Q&A.
Installazione
In Flash Builder (io uso la versione 4.6 ma sono propenso a credere che valga anche per la 4.5 e 4.0), vai al menu:
Help – Eclipse Marketplace
E nella finestra seguente cerca “Subclipse”:
Clicca il pulsante Install e riavvia Flash Builder. Il che pare sufficiente per considerare Subclipse installato.
Setup di un Repository locale
Molti dei tutorial che ho letto a questo punto ti mostrano come creare un repo (conosciamo il gergo, eh? ;-)) su un server remoto. Peccato che a me non serva, né ho la più pallida idea di come impostare un server remoto. Tutto quello che mi occorre è una cartella sul mio disco. Dopo un paio di tentativi finiti male (uno dei quali basato su MAMP), ho capito che il processo è:
-
Identificare una cartella e dire a svn (non Subclipse: svn, il tool a riga di comando) di creare un repository.
-
Puntare Subclipse a quello.
Il che ha senso – ma senza queste informazioni ti trovi a fissare Flash Builder (come ho fatto io) pensando: e ora che faccio?
Creare un repository
Subclipse non può creare un repository. Ma non è un grosso problema.
Poniamo di volere la cartella “repo” (che conterrà i repository) nella Home – userò prima Finder per creare “repo” come una cartella qualsiasi. Poi, nel Terminale:
Occorrono un paio di comandi:
cd repo
Il primo entra nella cartella “repo” appena creata
svnadmin create ALCE_repo
Il secondo dice a svn di creare, nella cartella “repo”, un vero repository chiamato “ALCE_repo” (che conterrà il mio progetto ALCE).
Infatti “repo” conterrà i vari repository, uno per ogni progetto che voglio monitorare. Nello screenshot puoi vedere che un repository è ben più di una semplice cartella.
Riempire un repository
Abbiamo un repo nuovo di zecca: il secondo passo è riempirlo con un progetto di Flash Builder (una CS extension, o qualsiasi altro codice Flash/AIR).
In Flash Builder, dal menu Window – Open Perspective – Other… scegli SVN Repository Exploring.
Questa vista ti da accesso al pannello SVN Repositories, che dovrebbe essere vuoto. Per comunicare a Flash Builder l’esistenza del repository, fai click destro dentro al pannello (nello spazio bianco) e seleziona New – Repository Location… e quindi nella finestra seguente digita:
file:///Users/[your user]/repo/ALCE_repo
Nota bene che “file:///” ha tre slash.
Una nuova location dovrebbe essere creata, come vedi nello screenshot a destra – ovvero Flash Builder ora sa che esiste un repository.
Il prossimo ed ultimo passo è di collegare un progetto a questo repo. I comandi Subclipse nel Flash Builder IDE stanno nel menu Team. Per accedervi, torna alla vista standard (Flex o Extension Builder), e nel pannello Package Explorer fai click destro sul progetto che ti interessa aggiungere al repository, quindi seleziona:
Team – Share
Nella finestra seguente scegli SVN come tipo di repository:
quindi Use existing repository location:
ed infine Use project name as folder name:
Non ti preoccupare se la Console riporterà un messaggio di errore:
Filesystem has no item svn: URL 'file:///Users/Davide/repo/ALCE_repo/myTest' non-existent in that revision
Puoi tranquillamente ignorarlo (il comando successivo, mkdir, creerà la cartella myTest mancante). Secondo la documentazione, a questo punto il progetto sarà committed – ovvero: i files copiati nel repository.
Per ragioni che mi sfuggono, a me questo non succede, devo farlo manualmente: click destro sul progetto (myTest in questo caso, vedi lo screenshot sulla destra) nel pannello Package Explorer, scegliendo:
Team – Commit
Nella finestra che segue, puoi selezionare quali risorse copiare nel repository – aggiungendo anche un commento:
E’ tutto! Se il processo è andato a buon fine, la Console dovrebbe contenere alcuni messaggi di log.
Inoltre, vai nel pannello SVN repositories e clicca sul pulsante di refresh (le due frecce gialle) per aggiornare la vista: il repository ora contiene la cartella myTest e tutti i file del progetto.
Adesso puoi cominciare ad usare il Version Control System – scrivi il tuo codice e fai Check in (Commit) ogni volta che desideri definire una nuova revisione – che poi troverai nel pannello History.
Spero che queste informazioni ti possano far risparmiare un po’ di tempo! Nel prossimo post della serie, mi soffermerò più approfonditamente (ehi, sto ancora imparando!) su Tag, Branches, revisioni, ecc. Quindi… a presto!
Links
Cercando di capire come funziona Subclipse e un VCS, ho letto parecchio materiale – parte del quale può tornare utile anche a te:
- Version Control with Subversion, pdf del manuale di Subversion (pubblicato anche da O’Reilly); esiste anche la versione in italiano, ma apparentemente meno aggiornata.
- Guy Rutemberg blog, Creating Local SVN Repository (con il tool a riga di comando svn).
- Documentazione IBM: Subversion and Eclipse.
- North Carolina State University, seminario Subclipse for Configuration Management.