Controllo di versione con Subversion

per Subversion 1.2

(libro compilato da Revision 6066)

Ben Collins-Sussman

Brian W. Fitzpatrick

C. Michael Pilato

This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Questo lavoro è rilasciato sotto la licenza Creative Commons Attribution. Per vedere una copia di questa licenza consultare il sito http://creativecommons.org/licenses/by/2.0/ od inviare una lettera a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

(TBA)


Indice

Premessa
Prefazione
A chi è rivolto questo libro
Come leggere questo libro
Convenzioni utilizzate in questo libro
Convenzioni tipografiche
Icone
Organizzazione di questo libro
Questo libro è libero
Ringraziamenti
Da Ben Collins-Sussman
Da Brian W. Fitzpatrick
Da C. Michael Pilato
1. Introduzione
Cos'è Subversion?
La storia di Subversion
Le caratteristiche di Subversion
Architettura di Subversion
Installazione di Subversion
I Componenti di Subversion
Un rapido inizio
2. Concetti base
Il repository
I modelli di versionamento
Il problema della condivisione dei file
La soluzione blocca-modifica-sblocca (Lock-Modify-Unlock)
La soluzione copia-modifica-fondi (Copy-Modify-Merge)
Subversion in Azione
Copie di lavoro
Revisioni
Come le copie di lavoro sono in relazione con il repository
Copie di lavoro con revisioni miste
Update e commit sono azioni separate
È normale avere revisioni miste
Le revisioni miste sono utili
Le revisioni miste hanno dei limiti
Sommario
3. Visita guidata
Aiuto!
Import
Revisioni: numeri, chiavi e date, accidenti!
Numeri di revisione
Chiavi per le revisioni
Date di revisione
Checkout iniziale
Ciclo base di lavoro
Aggiornare la propria copia di lavoro
Apportare modifiche alla propria copia di lavoro
Esaminare le modifiche apportate
svn status
svn diff
svn revert
Risolvere i conflitti(Mettere insieme i cambiamenti operati da altri)
Risolvere i conflitti a mano
Copiare un file nel proprio file di lavoro
Punting: Usando il comando svn revert
Fare la commit delle modifiche
Esaminare lo storico
svn log
svn diff
Esaminare le modifiche locali
Confrontare la copia di lavoro con il repository
Confrontare Repository con Repository
svn cat
svn list
La parola finale di una storia
Altri comandi utili
svn cleanup
svn import
Riassunto
4. Ramificazioni e fusioni
Che cos'è un ramo?
Usare i rami
Creare un ramo
Lavorare con il vostro ramo
Concetti chiave dietro i rami
Copiare modifiche tra i rami
Copiare modifiche specifiche
Concetto chiave dietro la fusione
Regole d'arte per la fusione
Tenere a mano traccia delle fusioni
Anteprima delle fusioni
Conflitti delle fusioni
Notare o ignorare ascendenza
Casi di uso comuni
Fondere ramo intero nel altro
Disfare i cambiamenti
Risuscitare elementi cancellati
Tipi comuni di ramificazione
Rami di rilascio
Rami di 'caratteristica'
Cambiare una copia di lavoro
Targhe
Creare una targa semplice
Creare una targa complessa
Mantenimento dei rami
Forma del deposito(repository)
Arco di vita dei dati
Sommario
5. Repository Administration
Repository: Concetti di base
Capire le transazioni e le revisioni
Unversioned Properties
Repository Data Stores
Berkeley DB
FSFS
Repository Creation and Configuration
Hook Scripts
Berkeley DB Configuration
Repository Maintenance
An Administrator's Toolkit
svnlook
svnadmin
svndumpfilter
Berkeley DB Utilities
Repository Cleanup
Managing Disk Space
Repository Recovery
Migrating a Repository
Repository Backup
Adding Projects
Choosing a Repository Layout
Creating the Layout, and Importing Initial Data
Summary
6. Configurazione del server
Sommario
Network Model
Requests and Responses
Client Credentials Caching
svnserve, a custom server
Invoking the Server
Built-in authentication and authorization
Create a 'users' file and realm
Set access controls
SSH authentication and authorization
SSH configuration tricks
Initial setup
Controlling the invoked command
httpd, the Apache HTTP server
Prerequisites
Basic Apache Configuration
Authentication Options
Basic HTTP Authentication
SSL Certificate Management
Authorization Options
Blanket Access Control
Per-Directory Access Control
Disabling Path-based Checks
Extra Goodies
Repository Browsing
Other Features
Supporting Multiple Repository Access Methods
7. Temi avanzati
Area di configurazione di esecuzione
Layout della sezione di configurazione
Configurazione e il registro di Windows
Opzioni di configurazione
Server
Config
Proprietà
Perchè le proprietà?
Manipolare le proprietà
Proprietà speciali
svn:eseguibile
svn:mime-type
svn:ignore
svn:parolechiave
svn:eol-stile
svn:externals
svn:special
svn:needs-lock
Settaggio automatico delle proprietà
Locking
Creating locks
Discovering locks
Breaking and stealing locks
Lock Communication
Peg and Operative Revisions
Externals Definitions
Vendor branches
General Vendor Branch Management Procedure
svn_load_dirs.pl
Localization
Understanding locales
Subversion's use of locales
Using External Differencing Tools
External diff
External diff3
Subversion Repository URLs
8. Informazioni per lo sviluppatore
Il disegno a strati delle librerie
Strato repository
Strato di accesso al repository
RA-DAV (Accesso al repository utilizzando HTTP/DAV)
RA-SVN (Accesso con protocollo personalizzato al repository)
RA-Local (Accesso diretto al repository)
La vostra libreria RA qui
Strato client
Utilizzare le API
La libreria runtime portatile di Apache
Requisiti di URL e percorsi
Utilizzare altri linguaggi oltre C e C++
All'interno dell'area di amminstrazione della copia di lavoro
Il file entries
Copie originarie e file di proprietà
WebDAV
Programmare con i pool di memoria
Contribuire a Subversion
Unirsi alla comunità
Prendere il codice sorgente
Prendere familiarità con le politiche della comunità
Fare e testare i propri cambiamenti
Donare i propri cambiamenti
9. Riferimento completo di Subversion
Cliente a riga di comando di Subversion: svn
Opzioni di svn
Sottocomandi di svn
svn add
svn blame
svn cat
svn checkout
svn cleanup
svn commit
svn copy
svn delete
svn diff
svn export
svn help
svn import
svn info
svn list
svn lock
svn log
svn merge
svn mkdir
svn move
svn propdel
svn propedit
svn propget
svn proplist
svn propset
svn resolved
svn revert
svn status
svn switch
svn unlock
svn update
svnadmin
svnadmin Switches
svnadmin Subcommands
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin help
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lslocks
svnadmin lstxns
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin verify
svnlook
svnlook Switches
svnlook
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook help
svnlook history
svnlook info
svnlook lock
svnlook log
svnlook propget
svnlook proplist
svnlook tree
svnlook uuid
svnlook youngest
svnserve
svnserve Switches
svnversion
svnversion
mod_dav_svn
mod_dav_svn Configuration Directives
Subversion properties
Subversion-defined properties
A. Subversion per utenti CVS
Adesso i numeri di revisione sono differenti
Versioni delle directory
Più operazioni disconnessi
Distinzione tra Stato e Aggiornamento
Stato
Update
Rami e tag
Metadati proprietà
Risoluzione dei conflitti
File binari e traduzioni
Moduli versionati
Autenticazione
Convertire un repository da CVS a Subversion
B. WebDAV e autoversionamento
Concetti base di WebDAV
WebDAV originale
Estensioni DeltaV
Subversion e DeltaV
Autoversionamento
Interoperabilità tra client
Applicazioni WebDAV autonome
Microsoft Office, Dreamweaver, Photoshop
Cadaver, esploratore DAV
File-explorer WebDAV extensions
Microsoft Web Folders
Nautilus, Konqueror
Implementazione del filesystem WebDAV
WebDrive, NetDrive
Mac OS X
Linux davfs2
C. Strumenti dai terzi
D. Copyright

Lista delle figure

1.1. Architettura di Subversion
2.1. Un tipico sistema client/server
2.2. Il problema da evitare
2.3. La soluzione blocca-modifica-sblocca
2.4. La soluzione copia-modifica-fondi
2.5. La soluzione copia-modifica-fondi (continua)
2.6. Il filesystem del repository
2.7. Il repository
4.1. Rami di sviluppo
4.2. Forma iniziale del deposito(repository)
4.3. Deposito con la nuova copia
4.4. Ramificazione della storia d'un file
8.1. File e directory in due dimensioni
8.2. Tempo di versionamento—la terza dimensione!

Lista delle tabelle

2.1. URL di accesso al repository
5.1. Repository Data Store Comparison
6.1. Confrontro tra i Server
8.1. A Brief Inventory of the Subversion Libraries
8.2. Un breve inventario delle librerie di Subversion
B.1. Common WebDAV Clients
B.2. Client WebDAV comuni

Lista degli esempi

5.1. txn-info.sh (Reporting Outstanding Transactions)
6.1. A sample configuration for anonymous access.
6.2. A sample configuration for authenticated access.
6.3. A sample configuration for mixed authenticated/anonymous access.
6.4. Disabling path checks altogether
7.1. Esempio di file di registrazione(.reg) .
7.2. diffwrap.sh
7.3. diffwrap.bat
7.4. diff3wrap.sh
7.5. diff3wrap.bat
8.1. Utilizzare lo strato repository
8.2. Utilizzare lo strato repository con Python
8.3. Un ricercatore di stato in Python
8.4. Contenuti di un tipico file .svn/entries
8.5. Effective Pool Usage