GIT 101Lorenz Cuno Klopfenstein — Saverio Delpriori
@lorenzck — @dlpswr
Il problema
Che non credevate di avere.
Versioning dei file
progetto.zip
Versioning dei file
progetto-1.zip
progetto-2.zip
progetto-3.zip
progetto-4.zip
progetto-5.zip
progetto-6.zip
progetto-7.zip
…
progetto-42.zip
Versioning nella realtà
progetto-1.zip
progetto-2.zip
progetto-1b.zip
progetto-ok.zip
progetto-backup.zip
progetto-xluca.zip
progetto-3.zip
progetto-fine.zip
progetto-consegnato.zip
progetto-sulserio.zip
Backup dei file
Conflitti
Pubblicazione
Pubblicazione
Fattore coolness
DEAL WITH
La soluzione
Forse.
Source Control
Source Control
Source Control
Source Control
Source Control
Source Control
Source Control
Source Control
Elementi di git
Repository, commit, conflitti, merge, etc.
Repository
Commit
Commit
Filesystem / Git
Filesystem / Git
Checkout
Filesystem / Git
Staging
Ciclo di vita delle modifiche
Checkout
Modifica
(su filesystem)
Staging
Commit
Demo
La mia prima repository.
Lavorare in parallelo
Lavorare in parallelo
Lavorare in parallelo
Lavorare in parallelo
Branch
master
develop
Branch
master
develop
Demo
Creare branch e farne il checkout.
Merging
master
develop
Demo
Effettuare il merge di due branch.
“Git-flow” branching
Fork
Pull request
?
Pull request
5 fasi
1. Rifiuto
2. Rabbia
3. Negoziazione
4. Depressione
5. Accettazione
Demo
Fork e pull request su Github.
Tutto risolto…
 Versioning
 Backup
 Gestione dei conflitti
 Collaborazione
 Pubblicazione
…eccetto la coolness
Domande?
Non abbiamo risposte.

Git 101 (Introduzione a Git)

Editor's Notes

  • #13 Margaret Hamilton, sistema operativo del Moon Lander Apollo 11 Source control „fisico“ in dipartimento del codice sorgente
  • #14 Bell Labs, Marc Rochkind 1972, SCCS
  • #15 Revision Control System, link simbolici su mainframe, molta gente lavora su stessi file
  • #16 Concurrent Version Control, 1986: lavorare su PIÙ file insieme, unico sistema di gestione Dick Grune: più lavoratori con orari diversi – il sistema effettua merge dei file di più persone (problema rimane: locking)
  • #17 Arriva TCP/IP CVS (e Subversion) diventano utilizzabili anche tramite TCP/IP: repository remota, con più lavoratori sulla propria workstation
  • #18 Cambio “sociale”: SourceForge Primo hosting online per progetti (open-source) CVS, Subversion, poi Mercurial e Git Github dell’epoca
  • #19 2005: stesso anno, GNU Bazaar, Mercurial, Git. Source control diventa distribuito: macchina locale ha copia totale di tutta la storia. Lavorare, branching, merging: tutto avviene in locale, non c’è una sorgente “autorevole”.
  • #20 Coding diventa “sociale”: piattaforma di collaborazione, basata su Git. Prima le piccolo modifiche ad altri progetti rimanevano locali, dei propri autori. Ora è più facile farli online: fork, pull request, commenti, editing del codice nel browser…
  • #34 Branch: «filone» di lavoro. «Etichetta» che identifica/punta ad un commit in particolare. Alias dell’ID univoco del commit.
  • #35 Branch: «filone» di lavoro. «Etichetta» che identifica/punta ad un commit in particolare. Alias dell’ID univoco del commit.