1. SVN...
...ed Eclipse...
...e Jira
1. Elementi base
Marchio/Logo
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
vittorio avallone
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
2. LA FILOSOFIA Fundamental Concepts
REVISIONEach time the repository accepts a commit, this creates a new state of the filesystem tree, called a revision. Eac
signed a unique natural number, one greater than the number of the previous revision. The initial revision of a fr
pository is numbered 0 and consists of nothing but an empty root directory.
Figure 1.7, “The repository” illustrates a nice way to visualize the repository. Imagine an array of revision numb
stretching from left to right. Each revision number has a filesystem tree hanging below it, and each tree is a “snap
the repository looked after a commit.
• A differenza di CVS in cui ogni file ha Figure 1.7. The repository
una propria revisione (ovvero un
proprio numero di versione) in SVN
esiste una Revision che riguarda tutto il
Repository.
Quando diciamo (erroneamente!) la
Revision 5 del file pippo.java, in realtà
ci stiamo riferendo (correttamente!)
allo stato del file pippo.java quando il
repository era alla Revision 5. 1. Elementi base
Marchio/Logo
• Quindi, ogni volta che effettuiamo un Global Revision Numbers
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
Unlike most version control systems, Subversion's revision numbers apply lato per la base, che consente gli elementi.leggibilità, è
sempre proporzione esistente tra tutti not individual files.
entire trees, una buona La dimen-
commit, viene creata una nuova
sione minima
number selects an entire tree, a particular state of the repository after some committed change. Another way to
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
is that revision N represents the state of the repository filesystem after the ad autorizzazione. internet), vanno valutate e
oggettistica molto piccola e banner
sottoposte Nth commit. When Subversion us
“revision 5 of foo.c,” they really mean “foo.c as it appears in revision 5.” Notice that in general, revisions
Revision di tutto il repository. file do not necessarily differ! Many other version control systems use per-file revision numbers, so this conc
unusual at first. (Former CVS users might want to see Appendix B, Subversion for CVS Users for more details.
It's important to note that working copies do not always correspond to any single revision in the repository; they
from several different revisions. For example, suppose you check out a working copy from a repository whose mo
is 4:
3. lately, the youngest revision number for the repository keeps climbin
LA FILOSOFIA
A middle-ground approach can be taken, too. For example, project
might have a few repositories with a handful of projects in each repo
can do so easily, and as new revisions are added to the repository, at
remotely related to everyone who uses that repository.
LA FLESSIBILITÀ DEL REPOSITORY 1yourBecause Subversion usesreposito
After deciding how to organize
within the repositories themselves.
projects with respect to
regula
Branching and Merging), the Subversion community recommends th
“topmost” directory that contains data related in whatever way you see
Lay out your repository to that project—and th
ing the directory underectory isthedirectory is a directory. Ultimately, y
which a main project development occurs
main development line; and tags, which is a
named branches of the who work on the projects that live there.
troyed, but never changed. 3
• SVN non ha una gestione rigida né di progetto, né In the name of full disclosure, though, we'll m
di branch o tag. branches directories this:
For example, your repository might look like live in the root directory o
• Supponiamo di gestire più progetti all’interno di un / /
trunk/
unico repository, e supponiamo (come è ovvio) di calc/
calc/
trunk/
utilizzare le funzionalità di branch, merge, tag, ecc. tags/
calendar/
spreadsheet/
branches/ …
calendar/
• Supponiamo che il path del nostro repository sia / trunk/
tags/
calc/
svn/repo. tags/ calendar/
branches/ spreadsheet/
spreadsheet/ …
• A questo punto, come si vede dalla figura, ci sono trunk/ branches/
calc/
almeno 2 possibilità di strutturare i diversi tags/
branches/ calendar/
progetti. … spreadsheet/ 1. Elementi base
…
Marchio/Logo
• In realtà questa è solo una convezione: dal punto Note that it doesn't matter where in your repository each about such
There's nothing particularly incorrect project ro
di vista di SVN trunk, tags e branches sono Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
place to put each project root is at the root of thatwith manyrespectiv
large, multiproject situations project's users, tho
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
directory normali e cioè non hanno alcun arrange them in groups itory. But the projects-as-branch-siblings appro
inside the repository, perhaps putting projects
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
maybe just grouping them alphabetically. Such an arrangement issue,
projects as a single entity. That's a social migh
significato. ons—it's easier to ask about (or modify, or migra
path that holds the entire history—past, present, ta
/
utils/
calc/ Deciding Where and How
4. Branching and Merging), the Su
“topmost” directory that contain
ing the directory under which t
LA FILOSOFIA named branches of the main dev
troyed, but never changed. 3
LA FLESSIBILITÀ DEL REPOSITORY 2 your repository mi
For example,
• In pratica il modo in cui strutturiamo il repository è una
nostra scelta. /
calc/
• La convenzione che useremo è la prima trunk/
tags/
• A che servono 3 cartelle?
branches/
• Trunk: contiene il flusso di lavoro principale. calendar/
Quando iniziamo un progetto si lavora solo sul Trunk. trunk/
tags/
• Branch: creiamo un Branch per evitare di lavorare branches/
sul Trunk. Ad esempio per la creazione di una Feature spreadsheet/
non banale mentre il resto del team deve continuare trunk/
a lavorare sul flusso principale. Oppure quando
stiamo per creare una Release.
tags/
branches/ 1. Elementi base
• Tag: Rappresentano uno snapshot di un progetto in … Marchio/Logo
un determinato progetto. Il tag quindi si crea in un Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
determinato momento e poi non va più modificato!
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
Note that it doesn't matter whe
sottoposte ad autorizzazione.
place to put each project root is
arrange them in groups inside th
maybe just grouping them alpha
5. BRANCH
CICLO DI LAVORO NORMALE
• creo il branch
• lavoro sul branch (modifico il mio workspace)
• sincronizzo col branch (workspace->branch)
• merge del branch col trunk (trunk->branch)
• test e correzioni
• sincronizzo col branch (workspace->branch)
1. Elementi base
• switch al trunk (trunk->workspace) Marchio/Logo
• merge il trunk col branch (branch->trunk)
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
• opzionalmente rimuovo il branch dal repository
6. BRANCH BEST PRACTICES
RELEASE BRANCH
• Il lavoro quotidiano va fatto sul trunk (nuove funzioni, bugfix, ecc.)
• Quando si è pronti per una release, si crea un “release 1.0” branch.
• Eventualmente gli sviluppatori continuano a lavorare sul trunk (per quella che sarà la
release 2.0), ma chi segue la release 1.0 si occupa di fare il testing e bugfix sul branch.
Eventuali bugfix si “copiano” tra branch e trunk in entrambe le direzioni
• Quando il testing è finito, si crea un “release 1.0” tag basata sul branch.
Il Tag NON VA MAI PIU’ MODIFICATO 1. Elementi base
Marchio/Logo
• Eventuali bugfix della release 1.0 vanno portati sul branch 1.0 e non sul Tag. Quando
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
si saranno apportate numerose modifiche al branch, si potrà creare un Tag “release
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
1.0.1”.
7. BRANCH BEST PRACTICES
FEATURE BRANCH
• Modifiche rilevanti eseguite da uno o più sviluppatori non
vanno fatte sul Trunk, ma va creato un feature Branch
• Ladifferenza con i Branch precedenti è che questi non vanno
supportati all’infinito (con bugfix, nuove release, ecc.) ma
hanno senso di esistere solo fino alla fine dello sviluppo della
nuova funzionalità. 1. Elementi base
Marchio/Logo
• Ultimato lo sviluppo, si esegue il merge col Trunk e poi è
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
possibile eliminare il Branch.
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
8. SVN - ECLIPSE
L’INSTALLAZIONE
• N.B. Parliamo di Eclipse 3.x e relativo plugin Subclipse 1.6.x
• L’installazione del plugin può essere fatta direttamente tramite
Eclipse. Il sito a cui puntare per fare il download del plugin è al
momento http://subclipse.tigris.org/update_1.6.x. 1. Elementi base
Marchio/Logo
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
9. SVN - ECLIPSE
CONDIVIDERE UN PROPRIO PROGETTO SU SVN
(WORKSPACE->SVN)
• La directory riservata al proprio progetto deve essere già presente su SVN. Se così non
fosse, vedi sotto
• Nella vista SVN Repositories, selezionare il repository, tasto destro New Remote Folder, e
scrivere il nome della cartella (va bene il nome del progetto)
• Tasto destro sul progetto da condividere, Team -> Share Project->SVN, scegliere il repository.
• A questo punto è necessario specificare manualmente il nome della cartella. Tramite il tasto 1. Elementi base
Select navigare il repository fino alla cartella precedentemente creata e selezionarla. Marchio/Logo
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
• Di default dovremmo otterremo un nome errato del tipo nomeprogetto/nomeprogetto.
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
Trasformare quindi in modo da ottenere nomeprogetto/trunk e cliccare su Fine.
sottoposte ad autorizzazione.
10. SVN - ECLIPSE
PRENDERE UN PROGETTO DAL REPOSITORY
(SVN->WORKSPACE)
• Nella vista SVN Repositories, navigare il repository fino a
trovare la cartella del proprio progetto e all’interno di questa
la cartella trunk.
• Tasto destro su trunk e poi CheckOut Project. Il progetto
dovrebbe avere automaticamente il nome “corretto” e NON 1. Elementi base
trunk.
Marchio/Logo
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
11. SVN - ECLIPSE
FEATURE BRANCH - CREAZIONE
• Tasto destro sul progetto, Team -> Branch/Tag.
• Specificare l’url in cui andrà il nostro Branch. L’url, per convenzione, dovrà essere del
tipo repository/nomeprogetto/branches/nomebranch. Se la cartella branches non è ancora
stata creata, è necessario flaggare l’opzione Crate any intermediate folders that are
missing.
• Nella pagina successiva, specificare il branch da cosa deve essere originato. Tipicamente,
il branch viene generato dal Trunk, e quindi va bene l’opzione HEAD revision in repository.
• A questo punto il Branch è stato creato, ma la nostra working copy non è stata 1. Elementi base
modificata (ovvero è ancora connessa al Trunk). Per iniziare a lavorare sul nuovo BranchMarchio/Logo
tasto destro sul progetto, Team -> Switch to another Branch/Tag/Revision e selezionare il
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
Branch appena creato (attenzione, potrebbe essere necessario fare un refresh nella vista
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
SVN Repositories)
12. SVN - ECLIPSE
FEATURE BRANCH - GESTIONE 1
• Le modifiche fatte alla nostra working copy vanno sincronizzate col Branch
sul repository con una normale sincronizzazione.
• Se nel frattempo procede anche il lavoro sul Trunk (ad esempio per
bugfix), potrebbe essere necessario portare queste modifiche dal Trunk al
Branch.
L’operazione è un merge.
• Tasto destro sul progetto, Team -> Merge. 1. Elementi base
Marchio/Logo
• Scegliere l’opzione Merge a range of revisions. Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
• Andare avanti ed effettuare il merge dal Trunk.
13. SVN - ECLIPSE
FEATURE BRANCH - GESTIONE 2
• Ultimata la feature che stiamo sviluppando, è necessario riportare tutto il lavoro nel Trunk.
• Sincronizziamo completamente il nostro Branch
• Effettuiamo uno switch al Trunk. Rasto destro sul progetto, Team -> Switch to another Branch/Tag/Revision
• Selezionare il Trunk. A questo punto la nostra working copy corrisponde al Trunk.
• Facciamo un merge dal Branch al Trunk
• Team -> Merge
• Scegliere l’opzione Reintegrate a branch. 1. Elementi base
Marchio/Logo
• Selezionare il Branch di cui vogliamo fare il Merge
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
• A questo punto la nostra working copy corrisponderà al Trunk + il Branch. Con una sincronizzazione
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
aggiorniamo anche il Trunk sul repository.
14. SVN - ECLIPSE
TAG - CREAZIONE
• Un Tag, a
conferma di quanto detto prima, va creato
esattamente come il Branch.
• Naturalmente non ha un ciclo di vita complesso come il
Branch: una volta creato non va più modificato. 1. Elementi base
Marchio/Logo
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
15. SVN - JIRA
DAL COMMIT ALL’ISSUE
• Jira
e SVN possono interfacciarsi in modo fornire ai
programmatori utili informazioni a costo zero!
• Come? Quando facciamo il commit di uno o più file, se questi
riguardano un Issue di un progetto su Jira basta indicare nel
commento al commit i nomi degli issue (ad es. “risolvo i bug
PROG-13 e PROG-14”).
1. Elementi base
• Cosa ottengo? Se vado su Jira e apro il dettaglio dell’issue Marchio/Logo
PROG-13 o PROG-14, vedrò tutti i file committati e le eventuali
Riduzione minima Il Marchio/Logo può essere ridotto o ingrandito, mantenendo
sempre la proporzione esistente tra tutti gli elementi. La dimen-
sione minima per la base, che consente una buona leggibilità, è
di 19 mm. Riduzioni minori, dovute a motivi tecnici (ad es. su
oggettistica molto piccola e banner internet), vanno valutate e
sottoposte ad autorizzazione.
modifiche fatte!