Git QuickStart




 By Guido Levi
Mai sentito parlare di peer-to-peer ?




DRCS – Distributed Revision Control System
Distributed Revision Control System – La Vision


Architetturale

•  Working Directory accoppiata con il repository
•  No single-point of failure
•  Utilizzo della rete non legato all’operatività quotidiana.
•  Supporto nativo a progetti multi-site

Processuale

•  Definizione di workflow collaborativi e di revisione del codice.
•  Peer-to-Peer alignment
•  Continous Branching and Merging


DRCS – Vision
Centralized Revision Control System – La Vision




       •  Un server, tante working copy client
       •  Security and Access Control centralizzati
       •  Backup Centralizzato
       •  Mirroring complicato e in sola lettura




Centralized RCS – Vision
Ciascun utente ha una copia del repository in locale
    clonata da un altro repository




DRCS – Come funziona
Git

 •  Creato da Linus Torvalds per supportare lo sviluppo di Linux
 worldwide nel 2005

 •  Utilizzato da grandi progetti open source
      •  Linux
      •  Android
      •  Eclipse
      •  KDE

 •  Svariate GUI, soluzioni open source per i vari sistemi
 operativi e servizi di hosting

 •  Community molto attiva (frequentata anche da Google)

Un pò di storia…
Git


        •  Totalmente Distribuito
        •  Scalabile
        •  Efficiente
        •  Garantisce Integrità dei dati
        •  Forte supporto al lavoro parallelo
        •  Immutabilità e transazioni atomiche




GIT – Le caratteristiche
Cosa ci serve..




     Linux
        •  apt-get install git-core

     Mac
       •  http://code.google.com/p/git-osx-installer/

     Windows
        •  http://code.google.com/p/msysgit/



GIT – Si comincia
.. Git è stato creato da Linus.. Due considerazioni

        •  Impariamo a usarlo da shell
        •  Per padroneggiarlo dobbiamo partire dalla sua
        struttura dati




Avvertenza
Snapshot




Git Basics
Commit




Git Basics
Commit Graph




•  git show 98ca9 ….



Git Commit graph
HEAD


             Voi siete qui !

             •  git show HEAD~2 (oppure HEAD^^)
             •  git show HEAD@{yesterday}
             •  git show HEAD@{2.days.ago}
             •  git show HEAD^2 (in caso di più ancestor)
             •  git show HEAD~3^2




Git Basics
Work ow Utente




Git Basics
Staging Area (Index)

•  Un’area intermedia tra la working directory e il repository.
L’operazione di commit versiona il contenuto della staging area


                           git add
                           Aggiunge i file modificati alla staging

                           git commit

                            Versiona il contenuto della staging




Git Basics
Work ow di un le




Git Basics
git status
 •  Riassume la situazione della working directory rispetto alla
 staging area.

                git diff
                Confronta la working directory con la staging area




                git diff --staged
                Confronta la staging area con la HEAD




Git Basics
Reverting

•  Git fornisce diverse possibilità di intervento su commit già
eseguite

                     •  Sovrascrittura di commit esistenti (amend)
                     •  Rimozione di commit esistenti (reset)
                     •  Revert di commit precedenti (revert)
                      Attenzione !! Alcune sono irreversibili !
                      Modificano il grafo delle commit !
                      Prima di usarle pensarci molto bene !
                      Non usarle MAI su commit già inviate ai
                      server remoti !



Git Basics
Object References

•  Un branch è un reference a una commit !
•  Un puntatore che si sposta nel grafo delle commit
•  Il default branch è master..




•  cat .git/refs/heads/master

Git Branching
Git Branching
•  git checkout master




•  git merge iss53




Git Merging
Questo era quello semplice….
•  C’e’ un altro modo per eseguire il merge di due rami..

Rebase…


                                    •  git checkout experiment
                                    •  git rebase master



•  Fast-Forward…


 •  Stesso risultato del merge semplice ma…

Git Merging
Rebase

    •  La storia è più ‘pulita’, si perde traccia dell’avvenuta
    ramificazione
    •  In caso di integrazione di una patch, chi integra deve
    solo eseguire un fast-forward..




Git Merging
Rebase
  Una storia molto più lineare !!


                   Non fate rebase su commit
                   che avete già inviato a repository remoti

                   Si deve usare solo per rendere
                   più lineare la storia del proprio lavoro
                   prima di eseguire operazioni di push
                   verso altri repository




Git Merging
Branching workflow
•  Master – codice stabile pronto per il rilascio
•  Branch di sviluppo (long-running)
•  Topic – branches usa e getta (tipo hotfix)




Git Branching Work ow
Remote
•  Ora che sappiamo lavorare sul nostro repo.. Dobbiamo
imparare a interagire con gli altri repository

git remote -v
•  Se abbiamo clonato il nostro repo troviamo configurato il
repository remoto origin

git remote add <nome_remote> <indirizzo>
•  Aggiunge il repository specificato dall’indirizzo, all’elenco dei
remoti con il nome che vogliamo dargli
•  Possiamo riferirci al nuovo remote con il nome che gli abbiamo
dato


Git Remote
Remote Branches




Git Remote Branches
Remote Branches




Git Remote Branches
Un Git server è un repository remoto (sempre
    accessibile), utilizzato per la collaboration.




Git On Server
Ci sono diversi protocolli configurabili per rendere un
    git server raggiungibile




Git On Server
Workflow Distribuiti


•  Git è peer-to-peer. Potenzialmente qualunque peer può
ricevere e inviare dati da e verso gli altri peer.


•  Si possono definire le relazioni tra i peer per stabilire dei
workflow collaborativi..


•  Non tutti i repository sono uguali !
•  Solo alcuni repository possono eseguire push sui repo
“blessed”



Work ow Distribuiti
Centralized Workflow
 •  Peer alignment
 •  Per eseguire il push nello shared repo, devo prima essere
 aggiornato (pull)… Vi ricorda qualcosa ??




Work ow Distribuiti
Dittatore – Luogotenenti Workflow

•  Usato per lo sviluppo del kernel linux
•  I luogotenenti integrano il lavoro dei developer nel proprio
master
•  Il dittatore integra i master branches dei luogotenenti nel suo




Work ow Distribuiti
Bibliografia


        •  http://progit.org/
        •  http://git-scm.com/



 Git Scm Italia


        •  http://www.git-scm.it




Biblioga a
Emerasoft s.r.l.

C.so Orbassano, 336 - 10137 Torino (TO)
Tel. 011 19879273

Professional Services Manager:
Guido Levi
guido.levi@emerasoft.com

Emerasoft Git quickstart

  • 1.
  • 2.
    Mai sentito parlaredi peer-to-peer ? DRCS – Distributed Revision Control System
  • 3.
    Distributed Revision ControlSystem – La Vision Architetturale •  Working Directory accoppiata con il repository •  No single-point of failure •  Utilizzo della rete non legato all’operatività quotidiana. •  Supporto nativo a progetti multi-site Processuale •  Definizione di workflow collaborativi e di revisione del codice. •  Peer-to-Peer alignment •  Continous Branching and Merging DRCS – Vision
  • 4.
    Centralized Revision ControlSystem – La Vision •  Un server, tante working copy client •  Security and Access Control centralizzati •  Backup Centralizzato •  Mirroring complicato e in sola lettura Centralized RCS – Vision
  • 5.
    Ciascun utente hauna copia del repository in locale clonata da un altro repository DRCS – Come funziona
  • 6.
    Git •  Creatoda Linus Torvalds per supportare lo sviluppo di Linux worldwide nel 2005 •  Utilizzato da grandi progetti open source •  Linux •  Android •  Eclipse •  KDE •  Svariate GUI, soluzioni open source per i vari sistemi operativi e servizi di hosting •  Community molto attiva (frequentata anche da Google) Un pò di storia…
  • 7.
    Git •  Totalmente Distribuito •  Scalabile •  Efficiente •  Garantisce Integrità dei dati •  Forte supporto al lavoro parallelo •  Immutabilità e transazioni atomiche GIT – Le caratteristiche
  • 8.
    Cosa ci serve.. Linux •  apt-get install git-core Mac •  http://code.google.com/p/git-osx-installer/ Windows •  http://code.google.com/p/msysgit/ GIT – Si comincia
  • 9.
    .. Git èstato creato da Linus.. Due considerazioni •  Impariamo a usarlo da shell •  Per padroneggiarlo dobbiamo partire dalla sua struttura dati Avvertenza
  • 10.
  • 11.
  • 12.
    Commit Graph •  gitshow 98ca9 …. Git Commit graph
  • 13.
    HEAD Voi siete qui ! •  git show HEAD~2 (oppure HEAD^^) •  git show HEAD@{yesterday} •  git show HEAD@{2.days.ago} •  git show HEAD^2 (in caso di più ancestor) •  git show HEAD~3^2 Git Basics
  • 14.
  • 15.
    Staging Area (Index) • Un’area intermedia tra la working directory e il repository. L’operazione di commit versiona il contenuto della staging area git add Aggiunge i file modificati alla staging git commit Versiona il contenuto della staging Git Basics
  • 16.
    Work ow diun le Git Basics
  • 17.
    git status • Riassume la situazione della working directory rispetto alla staging area. git diff Confronta la working directory con la staging area git diff --staged Confronta la staging area con la HEAD Git Basics
  • 18.
    Reverting •  Git forniscediverse possibilità di intervento su commit già eseguite •  Sovrascrittura di commit esistenti (amend) •  Rimozione di commit esistenti (reset) •  Revert di commit precedenti (revert) Attenzione !! Alcune sono irreversibili ! Modificano il grafo delle commit ! Prima di usarle pensarci molto bene ! Non usarle MAI su commit già inviate ai server remoti ! Git Basics
  • 19.
    Object References •  Unbranch è un reference a una commit ! •  Un puntatore che si sposta nel grafo delle commit •  Il default branch è master.. •  cat .git/refs/heads/master Git Branching
  • 20.
  • 21.
    •  git checkoutmaster •  git merge iss53 Git Merging
  • 22.
    Questo era quellosemplice…. •  C’e’ un altro modo per eseguire il merge di due rami.. Rebase… •  git checkout experiment •  git rebase master •  Fast-Forward… •  Stesso risultato del merge semplice ma… Git Merging
  • 23.
    Rebase •  La storia è più ‘pulita’, si perde traccia dell’avvenuta ramificazione •  In caso di integrazione di una patch, chi integra deve solo eseguire un fast-forward.. Git Merging
  • 24.
    Rebase Unastoria molto più lineare !! Non fate rebase su commit che avete già inviato a repository remoti Si deve usare solo per rendere più lineare la storia del proprio lavoro prima di eseguire operazioni di push verso altri repository Git Merging
  • 25.
    Branching workflow •  Master– codice stabile pronto per il rilascio •  Branch di sviluppo (long-running) •  Topic – branches usa e getta (tipo hotfix) Git Branching Work ow
  • 26.
    Remote •  Ora chesappiamo lavorare sul nostro repo.. Dobbiamo imparare a interagire con gli altri repository git remote -v •  Se abbiamo clonato il nostro repo troviamo configurato il repository remoto origin git remote add <nome_remote> <indirizzo> •  Aggiunge il repository specificato dall’indirizzo, all’elenco dei remoti con il nome che vogliamo dargli •  Possiamo riferirci al nuovo remote con il nome che gli abbiamo dato Git Remote
  • 27.
  • 28.
  • 29.
    Un Git serverè un repository remoto (sempre accessibile), utilizzato per la collaboration. Git On Server
  • 30.
    Ci sono diversiprotocolli configurabili per rendere un git server raggiungibile Git On Server
  • 31.
    Workflow Distribuiti •  Gitè peer-to-peer. Potenzialmente qualunque peer può ricevere e inviare dati da e verso gli altri peer. •  Si possono definire le relazioni tra i peer per stabilire dei workflow collaborativi.. •  Non tutti i repository sono uguali ! •  Solo alcuni repository possono eseguire push sui repo “blessed” Work ow Distribuiti
  • 32.
    Centralized Workflow • Peer alignment •  Per eseguire il push nello shared repo, devo prima essere aggiornato (pull)… Vi ricorda qualcosa ?? Work ow Distribuiti
  • 33.
    Dittatore – LuogotenentiWorkflow •  Usato per lo sviluppo del kernel linux •  I luogotenenti integrano il lavoro dei developer nel proprio master •  Il dittatore integra i master branches dei luogotenenti nel suo Work ow Distribuiti
  • 34.
    Bibliografia •  http://progit.org/ •  http://git-scm.com/ Git Scm Italia •  http://www.git-scm.it Biblioga a
  • 35.
    Emerasoft s.r.l. C.so Orbassano,336 - 10137 Torino (TO) Tel. 011 19879273 Professional Services Manager: Guido Levi guido.levi@emerasoft.com