-
1. Per Iniziare
- 1.1 Il Controllo di Versione
- 1.2 Una Breve Storia di Git
- 1.3 Basi di Git
- 1.4 Installare Git
- 1.5 Prima Configurazione di Git
- 1.6 Ottenere Aiuto
- 1.7 Riassunto
-
2. Basi di Git
-
3. Diramazioni in Git
- 3.1 Cos'è un Ramo
- 3.2 Basi di Diramazione e Fusione
- 3.3 Amministrazione dei Rami
- 3.4 Flusso di Lavoro con le Ramificazioni
- 3.5 Rami Remoti
- 3.6 Rifondazione
- 3.7 Riassunto
-
4. Git sul Server
- 4.1 I Protocolli
- 4.2 Ottenere Git su di un Server
- 4.3 Generare la Propria Chiave Pubblica SSH
- 4.4 Configurare il Server
- 4.5 Accesso Pubblico
- 4.6 GitWeb
- 4.7 Gitosis
- 4.8 Gitolite
- 4.9 Demone Git
- 4.10 Hosted Git
- 4.11 Riassunto
-
5. Git distribuito
- 5.1 Workflows distribuiti
- 5.2 Contribuire ad un Progetto
- 5.3 Mantenere un Progetto
- 5.4 Summary
-
6. Git Tools
-
7. Customizing Git
- 7.1 Configurazione di Git
- 7.2 Attributi di Git
- 7.3 Git Hooks
-
8. Git e altri sistemi
- 8.1 Git e Subversion
-
9. Git Internals
- 9.1 Plumbing and Porcelain
- 9.2 Gli oggetti di Git
- 9.3 I riferimenti di Git
- 9.4 Packfiles
- 9.5 The Refspec
- 9.6 Transfer Protocols
- 9.7 Maintenance and Data Recovery
- 9.8 Summary
9.1 Git Internals - Plumbing and Porcelain
Plumbing and Porcelain
Questo libro parla di come usare Git utilizzando più di 30 verbi, tra i quali checkout, branch, remote e così via.
Siccome Git è stato inizialmente sviluppato come insieme di strumenti per un VCS piuttosto che un completo VCS user-friendly
comprende un mucchio di verbi per fare lavori di basso livello e progettati per essere concatenati insieme in stile UNIX
o invocati da script. Di solito ci si riferisce a questi comandi come "plumbing", mentre i comandi più user-friendly
sono detti comandi "porcelain".
I primi otto capitoli del libro hanno a che fare quasi esclusivamente con comandi porcelain. In questo capitolo invece vedremo i comandi plumbing di basso livello, perchè permettono di accedere al funzionamento interno di Git ed aiutano a dimostrare come e perchè Git fà quello che fà. Questi comandi non sono pensati per essere lanciati manualmente dalla linea di comando ma sono da considerare piuttosto come mattoni con i quali costruire nuovi strumenti e script personallizzati.
Lanciando git init in una directory nuova o esistente Git provvederà a creare la directory .git che contiene praticamente
tutti i dati sui quali che Git. Se volete fare un backup o un clone del vostro repository vi basta copiare
questa directory dal qualche altra parte per avere praticamente tutto quello che vi serve.
Tutto questo capitolo ha a che fare con il contenuto di questa direcotry. La sua struttura è la seguente:
$ ls
HEAD
branches/
config
description
hooks/
index
info/
objects/
refs/
Potreste trovare altri file, ma questo è il risultato di git init — è quello che vedete di default.
La directory branches non è utilizzata dalle versioni più recenti di Git e il file description è
utilizzato solamente dal programma GitHub, quindi potete ignorarli.
Il file config contiene le configurazioni specifiche per il progetto e la directory info mantiene
un file di exclude globale per ignorare i pattern dei quali non volete tenere traccia un in file .gitignore.
La directory hooks contiene i vostri script di hook client- o server-side, dei quali abbiamo parlato in dettaglio
nel capitolo 6.
Non abbiamo parlato di quattro voci: i file HEAD e index e le directory objects e refs.
Queste sono le parti principali di Git. La directory objects conserva tutto il contenuto del vostro database,
la directory refs conserva i puntatori agli oggetti commit (branches), il file HEAD punta al branch di cui avete
fatto il checkout e il file index è dove Git conserva la informazioni sulla vostra area di staging
Vedremo in dettaglio ognuna di queste sezioni per capire in che modo opera Git.