|
1 | | -=== Il controllo di versione |
| 1 | +//// |
| 2 | +=== About Version Control |
| 3 | +//// |
| 4 | +
|
| 5 | +=== Il Controllo di Versione |
2 | 6 |
|
3 | 7 | (((version control))) |
4 | | -Cos'è il "controllo di versione", e perché dovrebbe interessarti? |
5 | | -Il controllo di versione è un sistema che tiene traccia, nel tempo, di tutte le modifiche a un file o un insieme di file, così che sia possibile recuperare una qualsiasi versione precedente in qualsiasi momento. |
6 | | -Per gli esempi di questo manuale versioneremo dei file di codice sorgente, ma in pratica potrai eseguirli con qualsiasi tipo di file che sia sul tuo calcolatore. |
| 8 | +//// |
| 9 | +What is ``version control'', and why should you care? |
| 10 | +Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. |
| 11 | +For the examples in this book, you will use software source code as the files being version controlled, though in reality you can do this with nearly any type of file on a computer. |
| 12 | +//// |
| 13 | +
|
| 14 | +
|
| 15 | +Cos'è il "controllo di versione", e perché dovresti usarlo? |
| 16 | +Il controllo di versione è un sistema che registra, nel tempo, i cambiamenti ad un file o ad una serie di file, così da poter richiamare una specifica versione in un secondo momento. |
| 17 | +Per gli esempi di questo libro verrà usato il codice sorgente di un software come file sotto controllo di versione, anche se in realtà gli esempi si possono eseguire quasi con ogni tipo di file sul computer. |
| 18 | +
|
| 19 | +//// |
| 20 | +If you are a graphic or web designer and want to keep every version of an image or layout (which you would most certainly want to), a Version Control System (VCS) is a very wise thing to use. |
| 21 | +It allows you to revert selected files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more. |
| 22 | +Using a VCS also generally means that if you screw things up or lose files, you can easily recover. |
| 23 | +In addition, you get all this for very little overhead. |
| 24 | +//// |
7 | 25 |
|
8 | | -Se sei un grafico o un web designer e vuoi mantenere traccia di tutte le versioni di una immagine o di uno schema/layout (e molto probabilmente è ciò che vuoi), un sistema di controllo delle versioni (VCS - Version Control System in inglese) è una saggio strumento da usare. |
9 | | -Ti permette di recuperare un file in uno stato precedente, tornare indietro con tutto il progetto a una versione precedente, confrontare le modifiche fatte nel tempo, vedere chi ha modificato qualcosa che può causare problemi, chi e quando ha introdotto un problema e molto altro. |
10 | | -Usando un VCS significa anche che se fai un macello o perdi qualche file, generalmente, puoi recuperare facilmente il tuo lavoro. |
11 | | -E tutto questo lo ottieni con pochissima fatica. |
12 | 26 |
|
13 | | -==== Sistemi locali di controllo di versione |
| 27 | +Se sei un grafico o un webdesigner e vuoi tenere tutte le versioni di un'immagine o di un layout (cosa che sicuramente vorresti), un Sistema per il Controllo di Versione (VCS) è una cosa saggia da utilizzare. |
| 28 | +Un VCS ti permette di ripristinare i file ad una versione precedente, ripristinare l'intero progetto a uno stato precedente, revisionare le modifiche fatte nel tempo, vedere chi ha cambiato qualcosa che può aver causato un problema, chi ha introdotto un problema e quando, e molto altro ancora. |
| 29 | +Usare un VCS, in generale, significa anche che se fai un pasticcio o perdi qualche file, puoi facilmente recuperare la situazione. |
| 30 | +E ottieni tutto questo con poca fatica. |
| 31 | +
|
| 32 | +//// |
| 33 | +==== Local Version Control Systems |
| 34 | +//// |
| 35 | +
|
| 36 | +==== Sistema di Controllo di Versione Locale |
14 | 37 |
|
15 | 38 | (((version control,local))) |
16 | | -Il sistema preferito da molte persone per gestire le versioni è copiare i file in un'altra cartella (magari chiamandola con la data della copia, se sono furbi). |
17 | | -Questo approccio è comunissimo perché molto semplice, ma è incredibilmente soggetto a errori. |
18 | | -È facile dimenticare in quale directory sei e modificare il file sbagliato o copiare dei file che non volevi. |
19 | 39 |
|
20 | | -Per far fronte a questo problema, molto tempo fa, dei programmatori svilupparono dei VCS locali che avevano un database semplice che registrava tutte le modifiche ai file controllati |
| 40 | +//// |
| 41 | +Many people's version-control method of choice is to copy files into another directory (perhaps a time-stamped directory, if they're clever). |
| 42 | +This approach is very common because it is so simple, but it is also incredibly error prone. |
| 43 | +It is easy to forget which directory you're in and accidentally write to the wrong file or copy over files you don't mean to. |
| 44 | +//// |
| 45 | +
|
| 46 | +
|
| 47 | +Molte persone gestiscono le diverse versioni copiando i file in un'altra directory (magari una directory denominata con la data, se sono furbi). |
| 48 | +Questo approccio è molto comune perché è molto semplice, ma è anche incredibilmente soggetto ad errori. |
| 49 | +É facile dimenticare in quale directory sei e modificare il file sbagliato o copiare dei file che non intendevi copiare. |
21 | 50 |
|
| 51 | +//// |
| 52 | +To deal with this issue, programmers long ago developed local VCSs that had a simple database that kept all the changes to files under revision control. |
| 53 | +//// |
| 54 | +
|
| 55 | +Per far fronte a questo problema, i programmatori svilupparono VCS locali che avevano un database semplice che manteneva tutti i cambiamenti dei file sotto controllo di revisione. |
| 56 | +
|
| 57 | +//// |
22 | 58 | .Local version control. |
23 | | -image::images/local.png[Diagramma di un sistema locale di controllo] |
| 59 | +image::images/local.png[Local version control diagram] |
| 60 | +//// |
| 61 | +
|
| 62 | +.Controllo di versione locale. |
| 63 | +image::images/local.png[Schema di controllo di versione locale] |
| 64 | +
|
| 65 | +//// |
| 66 | +One of the most popular VCS tools was a system called RCS, which is still distributed with many computers today. |
| 67 | +RCS works by keeping patch sets (that is, the differences between files) in a special format on disk; it can then re-create what any file looked like at any point in time by adding up all the patches. |
| 68 | +//// |
24 | 69 |
|
25 | | -Uno dei più popolari VCS era un sistema chiamato RCS, che ancora oggi si trova in molti computer. |
26 | | -Anche il famoro Mac OS X installa il comando 'rcs' quando installi gli strumenti di sviluppo (Developer Tools). |
27 | | -RCS salva in un formato speciale sul disco una serie di patch (ovvero le differenze tra i file) tra una versione e l'altra. In questo modo può ricreare lo stato in cui era un qualsiasi file in qualsiasi preciso momento, aggiungendo una dopo l'altra le varie patch. |
| 70 | +Uno dei più popolari strumenti VCS era un sistema chiamato RCS, che è ancora oggi distribuito con molti computer. |
| 71 | +RCS funziona salvando sul disco in un formato specifico un insieme di patch (ovvero le differenze tra i file); |
| 72 | +può quindi ricreare lo stato di qualsiasi file in qualsiasi momento determinato, aggiungendo le varie patch. |
28 | 73 |
|
29 | | -==== Sistemi centralizzati di controllo di versione |
| 74 | +//// |
| 75 | +==== Centralized Version Control Systems |
| 76 | +//// |
| 77 | +
|
| 78 | +==== Sistemi di Controllo di Versione Centralizzati |
30 | 79 |
|
31 | 80 | (((version control,centralized))) |
32 | | -Il successivo grosso problema da risolvere riguarda la necessità di collaborare con sviluppatori che usino altri sistemi. |
33 | | -Per risolverlo nacquero i sistemi centralizzati di controllo di versione (CVCS - Centralized Version Control Systems in inglese). |
34 | | -Questi sistemi, come CVS, Subversion, e Perforce, hanno un unico server che registra tutte le versioni dei file controllati, e un numero di utenti che scaricano i file dal quel server centrale. Questo è stato lo standard per il controllo di versione per molti anni |
| 81 | +//// |
| 82 | +The next major issue that people encounter is that they need to collaborate with developers on other systems. |
| 83 | +To deal with this problem, Centralized Version Control Systems (CVCSs) were developed. |
| 84 | +These systems (such as CVS, Subversion, and Perforce) have a single server that contains all the versioned files, and a number of clients that check out files from that central place. (((CVS)))(((Subversion)))(((Perforce))) |
| 85 | +For many years, this has been the standard for version control. |
| 86 | +//// |
| 87 | +
|
| 88 | +
|
| 89 | +Successivamente queste persone dovettero affrontare il problema del collaborare con altri sviluppatori su altri sistemi. |
| 90 | +Per far fronte a questo problema, vennero sviluppati sistemi di controllo di versione centralizzati (CVCS). |
| 91 | +Questi sistemi (come CVS, Subversion e Perforce) hanno un unico server che contiene tutte le versioni dei file e un numero di utenti che scaricano i file dal server centrale. (((CVS)))(((Subversion)))(((Perforce))) |
| 92 | +Questo è stato lo standard del controllo di versione per molti anni. |
| 93 | +
|
| 94 | +//// |
| 95 | +.Centralized version control. |
| 96 | +image::images/centralized.png[Centralized version control diagram] |
| 97 | +//// |
35 | 98 |
|
36 | | -.Il controllo centralizzato di versione. |
37 | | -image::images/centralized.png[Diagramma del controllo centralizzato di versione] |
38 | 99 |
|
39 | | -Questa configurazione ha parecchi vantaggi, specialmente rispetto ai VCS locali. |
40 | | -Tutti sanno, con una certa approssimazione, cosa fanno le atre persone di un progetto.Gli amministratori hanno un controllo preciso su chi può fare cosa, ed è molto più facile amministrare un CVCS che un database locale su ogni client. |
41 | | -Gli amministratori hanno un controllo preciso su chi può fare cosa, ed è molto più facile amministrare un CVCS che un database locale su ogni calcolatore. |
| 100 | +.Controllo di versione centralizzato. |
| 101 | +image::images/centralized.png[Schema di controllo di versione centralizzato] |
42 | 102 |
|
43 | | -Questa configurazione ha però numerosi svantaggi. |
44 | | -Il più ovvio è che il server centralizzato è il punto di rottura del sistema. |
45 | | -Se il server va giù per un'ora,nessuno può collaborare o salvare una nuova versione di qualsiasi cosa su cui sta lavorando finché non viene ripristinato. |
46 | | -Se si danneggia il disco rigido del database centrale e non ci sono dei backup adeguati, perdi assolutamente tutto: tutta la cronologia del progetto ad eccezione delle singole istantanee (snapshot in inglese) che le varie persone possono avere sulle loro macchine locali. |
47 | | -Anche i sistemi locali di VCS hanno lo stesso problema: ogni volta che conservi tutta la cronologia di un progetto in un unico posto, rischi di perdere tutto. |
| 103 | +//// |
| 104 | +This setup offers many advantages, especially over local VCSs. |
| 105 | +For example, everyone knows to a certain degree what everyone else on the project is doing. |
| 106 | +Administrators have fine-grained control over who can do what, and it's far easier to administer a CVCS than it is to deal with local databases on every client. |
| 107 | +//// |
48 | 108 |
|
49 | | -==== Sistemi distribuiti di controllo di versione |
| 109 | +
|
| 110 | +Questa impostazione offre molti vantaggi, specialmente rispetto ai VCS locali. |
| 111 | +Per esempio, chiunque sa, con una certa approssimazione, cosa stia facendo un'altra persona del progetto. |
| 112 | +Gli amministratori hanno un controllo preciso su chi può fare cosa, ed è molto più facile amministrare un CVCS che un database locale su ogni client. |
| 113 | +
|
| 114 | +
|
| 115 | +//// |
| 116 | +However, this setup also has some serious downsides. |
| 117 | +The most obvious is the single point of failure that the centralized server represents. |
| 118 | +If that server goes down for an hour, then during that hour nobody can collaborate at all or save versioned changes to anything they're working on. |
| 119 | +If the hard disk the central database is on becomes corrupted, and proper backups haven't been kept, you lose absolutely everything -- the entire history of the project except whatever single snapshots people happen to have on their local machines. |
| 120 | +Local VCS systems suffer from this same problem -- whenever you have the entire history of the project in a single place, you risk losing everything. |
| 121 | +//// |
| 122 | +
|
| 123 | +
|
| 124 | +Questa configurazione ha tuttavia alcune gravi controindicazioni. |
| 125 | +La più ovvia è che il server centralizzato rappresenta il singolo punto di rottura del sistema. |
| 126 | +Se questo va giù per un'ora, in quel periodo nessuno può collaborare o salvare una nuova versione di qualsiasi cosa su cui sta lavorando. |
| 127 | +Se il disco rigido del database centrale si danneggia, e non ci sono i backup, perdi assolutamente tutto -- tutta la storia del progetto ad eccezione dei singoli snapshot (istantanee) che le persone possono avere in locale sulle loro macchine. |
| 128 | +Anche i sistemi locali di VCS soffrono di questo problema -- ogni volta che tutta la storia del progetto è in un unico posto, si rischia di perdere tutto. |
| 129 | +
|
| 130 | +//// |
| 131 | +==== Distributed Version Control Systems |
| 132 | +//// |
| 133 | +
|
| 134 | +
|
| 135 | +==== Sistemi di Controllo di Versione Distribuiti |
50 | 136 |
|
51 | 137 | (((version control,distributed))) |
52 | | -Ed è questo il momento in cui entrano in scena i sistemi distribuiti di controllo ((DVCSs - Distributed Version Control Systems). |
53 | | -In un DVCS (come Git, Mercurial, Bazaar o Darcs), i membri del gruppo non solo scaricano l'ultimo stato dei file, ma copiano tutto il repository completo. |
54 | | -In questo modo se un server si rompesse mentre i sistemi ci stavano interagendo, da qualsiasi calcolatore sarà possibile ricopiare il contenuto per ripristinare l'intero repository. |
55 | | -Ogni clona è un backup completo di tutti i dati. |
56 | 138 |
|
57 | | -.Controllo distribuito di versione. |
58 | | -image::images/distributed.png[Diagramma del controllo distribuito di versione.] |
| 139 | +//// |
| 140 | +This is where Distributed Version Control Systems (DVCSs) step in. |
| 141 | +In a DVCS (such as Git, Mercurial, Bazaar or Darcs), clients don't just check out the latest snapshot of the files; rather, they fully mirror the repository, including its full history. |
| 142 | +Thus, if any server dies, and these systems were collaborating via that server, any of the client repositories can be copied back up to the server to restore it. |
| 143 | +Every clone is really a full backup of all the data. |
| 144 | +//// |
| 145 | +
|
| 146 | +
|
| 147 | +E qui entrano in gioco i Sistemi di Controllo di Versione Distribuiti (DVCS). |
| 148 | +In un DVCS (come Git, Mercurial, Bazaar o Darcs), i client non solo controllano lo snapshot più recente dei file, ma piuttosto fanno una copia identica dell'archivio (repository), completa di tutta la propria storia. |
| 149 | +In questo modo se un server smettesse di funzionare e se i sistemi interagissero tramite questo server, il repository di un qualsiasi client potrebbe essere copiato sul server per ripristinarlo. |
| 150 | +Ogni clone è proprio un backup completo di tutti i dati. |
| 151 | +
|
| 152 | +
|
| 153 | +//// |
| 154 | +.Distributed version control. |
| 155 | +image::images/distributed.png[Distributed version control diagram] |
| 156 | +//// |
| 157 | +
|
| 158 | +
|
| 159 | +.Controllo di versione distribuito. |
| 160 | +image::images/distributed.png[Schema del controllo di versione distribuito] |
| 161 | +
|
| 162 | +//// |
| 163 | +Furthermore, many of these systems deal pretty well with having several remote repositories they can work with, so you can collaborate with different groups of people in different ways simultaneously within the same project. |
| 164 | +This allows you to set up several types of workflows that aren't possible in centralized systems, such as hierarchical models. |
| 165 | +//// |
| 166 | +
|
59 | 167 |
|
60 | | -Molti di questi sistemi, inoltre, gestiscono bene molteplici repository remoti. Così puoi lavorare contemporaneamente allo stesso progetto con persone o gruppi diversi |
61 | | -Questo ti permette di avere diversi tipi di flussi di lavoro, che non sono possibili in sistemi centralizzati, come i modelli gerarchici. |
| 168 | +Inoltre, molti di questi sistemi trattano bene l'avere più repository remoti su cui poter lavorare, così puoi collaborare con gruppi differenti di persone in modi differenti, simultaneamente sullo stesso progetto. |
| 169 | +Questo ti permette di impostare diversi tipi di flussi di lavoro che non sono possibili in sistemi centralizzati, come i modelli gerarchici. |
0 commit comments