Vous êtes sur la page 1sur 77

Introduction `a la gestion de versions avec Git

Thibault Cholez thibault.cholez@loria.fr

`a la gestion de versions avec Git Thibault Cholez thibault.cholez@loria.fr TELECOM Nancy, premi`ere ann´ee 28/09/17

TELECOM Nancy, premi`ere ann´ee

`a la gestion de versions avec Git Thibault Cholez thibault.cholez@loria.fr TELECOM Nancy, premi`ere ann´ee 28/09/17
`a la gestion de versions avec Git Thibault Cholez thibault.cholez@loria.fr TELECOM Nancy, premi`ere ann´ee 28/09/17

28/09/17

Introduction aux SCM

Outline

Git

Introduction aux SCM

2
2

Git Architecture Commandes de base Outils et pratique au quotidien

Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue
Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue

SCM et int´egration continue

SCM et int´egration continue

Biblio

Introduction aux SCM

Outline

Git

Introduction aux SCM

2
2

Git Architecture Commandes de base Outils et pratique au quotidien

Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue
Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue

SCM et int´egration continue

SCM et int´egration continue

Biblio

Introduction aux SCM

D´efinition

Git

SCM et int´egration continue

Biblio

D´efinition

Syst`eme permettant le suivi (dans le temps) des diff´erentes modifications apport´ees `a un ensemble de fichiers observ´es.D´efinition Pr´ecision : indiff´erent au langage utilis´e et ne se limite pas au code (fichiers de

Pr´ecision : indiff´erent au langage utilis´e et ne se limite pas au code (fichiers de configuration, sources LaTeX, etc.).permettant le suivi (dans le temps) des diff´erentes modifications apport´ees `a un ensemble de fichiers observ´es.

Plusieurs accronymes

SCM : Source Code ManagementPlusieurs accronymes VCS : Version Control System RCS : Revision Control System

VCS : Version Control SystemPlusieurs accronymes SCM : Source Code Management RCS : Revision Control System

RCS : Revision Control SystemPlusieurs accronymes SCM : Source Code Management VCS : Version Control System

Introduction aux SCM

Git

Pourquoi les SCM ?

SCM et int´egration continue

Biblio

Probl`eme

Maˆıtriser de code produit durant un d´eveloppement logiciel implique de savoir ce qui a ´et´e fait :

Par l’ensemble des d´eveloppeurs (Qui ? ) Qui ? )

Dans le temps (Quand ? ) Quand ? )

Pour quel motif/fonctionnalit´e (Pourquoi ? ) Pourquoi ? )

Impliquant de nombreuses fonctions, dans de nombreux fichiers (O`u ? Comment ? ) O`u ? Comment ? )

Leur utilit´e ne se limite pas au travail `a plusieurs.

Introduction aux SCM

Git

Pourquoi les SCM ?

SCM et int´egration continue

Biblio

Utilit´e

Permettre la tra¸cabilit´e d’un d´eveloppement (historique des changements)Utilit´e Faciliter la collaboration, ´eviter les conflits ou aider `a la leur r´esolution Garder une version

Faciliter la collaboration, ´eviter les conflits ou aider `a la leur r´esolutiond’un d´eveloppement (historique des changements) Garder une version du code source toujours fonctionnelle,

Garder une version du code source toujours fonctionnelle, tout en travaillant sur plusieurs fonctionnalit´es (notion de branche)´eviter les conflits ou aider `a la leur r´esolution Permettre des sch´emas organisationnels structurant les

Permettre des sch´emas organisationnels structurant les d´eveloppements (workflows)une version du code source toujours fonctionnelle, tout en travaillant sur plusieurs fonctionnalit´es (notion de branche)

Introduction aux SCM

Historique

Git

SCM et int´egration continue

Biblio

Principaux SCM

cp -old (vieille blague, mais toujours utilis´e)Principaux SCM CVS (1990) : centralis´e, travaille sur des fichiers, limit´e SVN (2000) : centralis´e, travaille

CVS (1990) : centralis´e, travaille sur des fichiers, limit´eSCM cp -old (vieille blague, mais toujours utilis´e) SVN (2000) : centralis´e, travaille sur des fichiers,

SVN (2000) : centralis´e, travaille sur des fichiers, workflows limit´es(1990) : centralis´e, travaille sur des fichiers, limit´e Git (2005) : d´ecentralis´e, travaille sur des

Git (2005) : d´ecentralis´e, travaille sur des arborescences de contenustravaille sur des fichiers, workflows limit´es et beaucoup d’autres, libres (Mercurial, Bazaar) ou

et beaucoup d’autres, libres (Mercurial, Bazaar) ou propri´etaires (Microsoft, HP, IBM)travaille sur des arborescences de contenus → Quelque soit le SCM utilis´e, il est important d’en

Quelque soit le SCM utilis´e, il est important d’en utiliser un et de maˆıtriser les op´erations de base.

Introduction aux SCM

Git

Git

SCM et int´egration continue

Biblio

aux SCM Git Git SCM et int´egration continue Biblio 28/09/17 Introduction `a la gestion de versions

Introduction aux SCM

Git

Un peu de vocabulaire

SCM et int´egration continue

Biblio

Principaux termes

Repository ou d´epˆot : r´epertoire versionn´e (peut ˆetre local ou distant)Principaux termes Commit : Enregistrement des derni`eres modifications dans le d´epˆot Version ou revision : ´etat

Commit : Enregistrement des derni`eres modifications dans le d´epˆot: r´epertoire versionn´e (peut ˆetre local ou distant) Version ou revision : ´etat du code source

Version ou revision : ´etat du code source arrˆet´e par un commitdes derni`eres modifications dans le d´epˆot Branche : version alternative du code source li´ee `a une

Branche : version alternative du code source li´ee `a une tentative de d´eveloppement sp´ecifiqueou revision : ´etat du code source arrˆet´e par un commit Head : version la plus

Head : version la plus r´ecente d’une branche (dernier commit)li´ee `a une tentative de d´eveloppement sp´ecifique Trunk ou tronc ou master : branche principale du

Trunk ou tronc ou master : branche principale du code source: version la plus r´ecente d’une branche (dernier commit) Merge : tentative d’unification de deux branches

Merge : tentative d’unification de deux branchesTrunk ou tronc ou master : branche principale du code source Conflit : probl`eme de merge

Conflit : probl`eme de merge n´ecessitant une prise de d´ecisioncommit) Trunk ou tronc ou master : branche principale du code source Merge : tentative d’unification

Introduction aux SCM

Git

Git

SCM et int´egration continue

Biblio

Pourquoi ´etudier Git ?

Cr´e´e par Linus Torwarld pour g´erer les sources du noyau LinuxPourquoi ´etudier Git ? Tr`es souple et puissant mais complexe et peu intuitif → apprentissage ardu

Tr`es souple et puissant mais complexe et peu intuitif → apprentissage ardu apprentissage ardu

SCM le plus utilis´e actuellement, libre (GPL), communaut´e tr`es activemais complexe et peu intuitif → apprentissage ardu Devient un standard (l’est d´ej`a dans le monde

Devient un standard (l’est d´ej`a dans le monde du libre)ardu SCM le plus utilis´e actuellement, libre (GPL), communaut´e tr`es active SVN est trivial en comparaison

SVN est trivial en comparaisonactuellement, libre (GPL), communaut´e tr`es active Devient un standard (l’est d´ej`a dans le monde du libre)

dans le monde du libre) SVN est trivial en comparaison 28/09/17 Introduction `a la gestion de

Introduction aux SCM

Git

Git

SCM et int´egration continue

Biblio

Avantages par rapport `a SVN

Pas de serveur central (´el´ement critique)Avantages par rapport `a SVN Utilisable mˆeme si d´econnect´e Organisation du travail plus souple

Utilisable mˆeme si d´econnect´eAvantages par rapport `a SVN Pas de serveur central (´el´ement critique) Organisation du travail plus souple

Organisation du travail plus soupleAvantages par rapport `a SVN Pas de serveur central (´el´ement critique) Utilisable mˆeme si d´econnect´e

Introduction aux SCM

Git

Git

SCM et int´egration continue

Biblio

aux SCM Git Git SCM et int´egration continue Biblio Figure : Gestionnaire de version centralis´e vs

Figure : Gestionnaire de version centralis´e vs d´ecentralis´e [1]

Introduction aux SCM

Git

Git

SCM et int´egration continue

Biblio

aux SCM Git Git SCM et int´egration continue Biblio Figure : Gestionnaire de version centralis´e vs

Figure : Gestionnaire de version centralis´e vs d´ecentralis´e [1]

Introduction aux SCM

Git

Git

SCM et int´egration continue

Biblio

Objectifs

 
A court terme (module GP/Pr´epa Info) : comprendre le

A

court terme (module GP/Pr´epa Info) : comprendre le

fonctionnement de git et maˆıtriser les commandes de base

A moyen terme (diplˆome) :

A

moyen terme (diplˆome) :

 

utiliser git dans tous vos projets `a l’´ecole (nouveau serveur GitLab) 

maˆıtriser les commandes avanc´eestous vos projets `a l’´ecole (nouveau serveur GitLab) Vous AUREZ `a utiliser un SCM tˆot ou

Vous AUREZ `a utiliser un SCM tˆot ou tard profitez de votre scolarit´e pour (faire des erreurs et) monter en comp´etence !

Introduction aux SCM

Git

Git

SCM et int´egration continue

Introduction aux SCM Git Git SCM et int´egration continue Figure : xkcd 1597 : Git Biblio

Figure : xkcd 1597 : Git

Biblio

Introduction aux SCM

Outline

Git

Introduction aux SCM

2
2

Git Architecture Commandes de base Outils et pratique au quotidien

Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue
Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue

SCM et int´egration continue

SCM et int´egration continue

Biblio

Introduction aux SCM Architecture

Outline

Git

Introduction aux SCM

2
2

Git Architecture Commandes de base Outils et pratique au quotidien

Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue
Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue

SCM et int´egration continue

SCM et int´egration continue

Biblio

Introduction aux SCM Architecture

SCM d´ecentralis´e

Git

SCM et int´egration continue

Biblio

Principes fondateurs

Chaque client git ex´ecute son propre d´epˆot en localPrincipes fondateurs Chaque utilisateur d’un d´epˆot partag´e poss`ede une copie de tout l’historique des

Chaque utilisateur d’un d´epˆot partag´e poss`ede une copie de tout l’historique des changements enregistr´es (full mirroring)Chaque client git ex´ecute son propre d´epˆot en local Abandon d’une vision chronologique des changements (pas

Abandon d’une vision chronologique des changements (pas d’ordre strict entre les commits) pour une vision structurelle (graphe de commits)des changements enregistr´es (full mirroring) But : faciliter les d´eveloppements parall`eles, permettre

But : faciliter les d´eveloppements parall`eles, permettre au code de diverger/converger rapidementchronologique des changements (pas d’ordre strict entre les commits) pour une vision structurelle (graphe de commits)

Introduction aux SCM Architecture

Zones de stockage dans git

Git

SCM et int´egration continue

Biblio

D´ecoupage interne en trois zones

le r´epertoire de travail (working directory) local o`u sont r´ealis´es les changementsD´ecoupage interne en trois zones la ”staging area” (aussi appel´e index) o`u sont pr´e-enregistr´es les

la ”staging area” (aussi appel´e index) o`u sont pr´e-enregistr´es les changements (en attente de commit)(working directory) local o`u sont r´ealis´es les changements le d´epˆot git o`u sont enregistr´es les changements

le d´epˆot git o`u sont enregistr´es les changementsla ”staging area” (aussi appel´e index) o`u sont pr´e-enregistr´es les changements (en attente de commit)

le d´epˆot git o`u sont enregistr´es les changements 28/09/17 Introduction `a la gestion de versions avec

Introduction aux SCM Architecture

Staging area

Git

SCM et int´egration continue

Biblio

Index interm´ediaire

Sert `a pr´eparer les commits progressivementIndex interm´ediaire git commit enregistre les modifications index´ees La staging area peut ˆetre bypass´ee : git

git commit enregistre les modifications index´eesIndex interm´ediaire Sert `a pr´eparer les commits progressivement La staging area peut ˆetre bypass´ee : git

La staging area peut ˆetre bypass´ee : git commit -aIndex interm´ediaire Sert `a pr´eparer les commits progressivement git commit enregistre les modifications index´ees

La staging area peut ˆetre bypass´ee : git commit -a Figure : Diff´erents ´etats d’un fichier

Figure : Diff´erents ´etats d’un fichier dans git [1]

Introduction aux SCM Architecture

Organisation des informations

Git

SCM et int´egration continue

Biblio

Stockage par snapshots

CVS, SVN ne stockent que les deltas des fichiers modifi´es par un commitStockage par snapshots Git stocke tout le contenu des fichiers modifi´es par un commit (mais utilise

Git stocke tout le contenu des fichiers modifi´es par un commit (mais utilise une compression intelligente bas´ee sur la version ant´erieure la plus proche)par snapshots CVS, SVN ne stockent que les deltas des fichiers modifi´es par un commit Permet

Permet une grande souplessemodifi´es par un commit (mais utilise une compression intelligente bas´ee sur la version ant´erieure la plus

Introduction aux SCM Architecture

Stockage par snapshots

Git

SCM et int´egration continue

Biblio

par snapshots Git SCM et int´egration continue Biblio Figure : Delta vs Snapshot storage [1] 28/09/17

Figure : Delta vs Snapshot storage [1]

Introduction aux SCM Architecture

Stockage par snapshots

Git

SCM et int´egration continue

Biblio

par snapshots Git SCM et int´egration continue Biblio Figure : Delta vs Snapshot storage [1] 28/09/17

Figure : Delta vs Snapshot storage [1]

Introduction aux SCM Architecture

Organisation des informations

Git

SCM et int´egration continue

Biblio

Types de donn´ees Git

Blob : contenu d’une version d’un fichier (Binary Large Object) : contenu d’une version d’un fichier (Binary Large Object)

Tree (structure r´ecursive) : arborescence de r´ef´erences vers d’autres Trees et Blobs (structure r´ecursive) : arborescence de r´ef´erences vers d’autres Trees et Blobs

Commit (structure r´ecursive) : pointe sur un Tree, sur le Commit parent et contient des metadonn´ees (structure r´ecursive) : pointe sur un Tree, sur le Commit parent et contient des metadonn´ees (date, auteur, etc.)

Tag : annotation manuelle d’un commit et cr´eant une branche statique : annotation manuelle d’un commit et cr´eant une branche statique

Identifiant unique pour tout objet : hash SHA1 (Secure Hash Algorithm). Peut ˆetre tronqu´e si non ambigu.contient des metadonn´ees (date, auteur, etc.) Tag : annotation manuelle d’un commit et cr´eant une branche

Introduction aux SCM Architecture

Organisation des informations

Git

SCM et int´egration continue

Biblio

des informations Git SCM et int´egration continue Biblio Figure : Data structure d’un commit [1] 28/09/17

Figure : Data structure d’un commit [1]

Introduction aux SCM Architecture

Organisation des informations

Git

SCM et int´egration continue

Biblio

des informations Git SCM et int´egration continue Biblio Figure : Data structure d’un commit [1] 28/09/17

Figure : Data structure d’un commit [1]

Introduction aux SCM Architecture

Organisation des informations

Git

SCM et int´egration continue

Biblio

Emplacement du d´epˆot local

Les donn´ees propres `a git sont stock´ees dans un unique r´epertoire .git `a la racine du projet. C’est le d´epˆot local.

R´ef´erences

L’historique du projet est un graphe de commit. Certaines r´ef´erences sur ce graphe sont utiles :

master : r´ef´erence la branche principalecommit. Certaines r´ef´erences sur ce graphe sont utiles : HEAD : par d´efaut, r´ef´erence le commit

HEAD : par d´efaut, r´ef´erence le commit le plus r´ecent de la branche courante (sera le parent du prochain commit)sur ce graphe sont utiles : master : r´ef´erence la branche principale HEAD-2 : deux commits

HEAD-2 : deux commits avant la HEADHEAD : par d´efaut, r´ef´erence le commit le plus r´ecent de la branche courante (sera le

Introduction aux SCM Architecture

Git

SCM et int´egration continue

Biblio

R´ef´erences sur l’arbre des commits

continue Biblio R´ef´erences sur l’arbre des commits Figure : R´ef´erences sur l’arbre des commits [1]

Figure : R´ef´erences sur l’arbre des commits [1]

Introduction aux SCM Architecture

Git

Bonnes pratiques

SCM et int´egration continue

Biblio

Ne pas versionner de fichiers g´en´er´es automatiquement (logs, pdf, ex´ecutables, etc.) ou personnels pas versionner de fichiers g´en´er´es automatiquement (logs, pdf, ex´ecutables, etc.) ou personnels

Faire de petits commits r´eguliers et facile `a int´egrer, leur donner un nom explicite(logs, pdf, ex´ecutables, etc.) ou personnels Utiliser les branches pour : les d´eveloppements `a

Utiliser les branches pour :et facile `a int´egrer, leur donner un nom explicite les d´eveloppements `a plusieurs chaque d´eveloppement

les d´eveloppements `a plusieursleur donner un nom explicite Utiliser les branches pour : chaque d´eveloppement cons´equent d’une nouvelle

chaque d´eveloppement cons´equent d’une nouvelle fonctionnalit´eles branches pour : les d´eveloppements `a plusieurs Ne pas d´evelopper sur la branche master `a

Ne pas d´evelopper sur la branche master `a plusieurs pour ´eviter les conflits lors des pullcons´equent d’une nouvelle fonctionnalit´e Faire de petits commits locaux, et pusher des commits plus

Faire de petits commits locaux, et pusher des commits plus cons´equents, toujours test´es et fonctionnels !`a plusieurs pour ´eviter les conflits lors des pull Faire des pull r´eguli`erement 28/09/17 Introduction `a

Faire des pull r´eguli`erementplus cons´equents, toujours test´es et fonctionnels ! 28/09/17 Introduction `a la gestion de versions avec Git

Introduction aux SCM Architecture

Comment Git fusionne-t-il les versions ?

Git

SCM et int´egration continue

Biblio

Principes

Structure des donn´ees git : DAG (Directed Acyclic Graph) de commitsPrincipes Comparaison r´ealis´ee grˆace `a diff3 : utilitaire a pour comparer 3 fichiers Fusion r´ealis´ee par

Comparaison r´ealis´ee grˆace `a diff3 : utilitaire a pour comparer 3 fichiersdes donn´ees git : DAG (Directed Acyclic Graph) de commits Fusion r´ealis´ee par l’algorithme three-way merge

Fusion r´ealis´ee par l’algorithme three-way merge three-way merge

3-way merge

Pour fusionner A&B : A&B=A+B-C, C ´etant l’ancˆetre commun le plus r´ecent `a A et B3-way merge Revient `a appliquer A-C `a B et B-C `a A Fait intervenir le longest

Revient `a appliquer A-C `a B et B-C `a AC ´etant l’ancˆetre commun le plus r´ecent `a A et B Fait intervenir le longest common

Fait intervenir le longest common subsequence problem longest common subsequence problem

Introduction aux SCM Architecture

Comment Git fusionne-t-il les versions ?

Git

SCM et int´egration continue

Biblio

Application du 3-way merge

Supposons A align´e avec C et B align´e avec C (application du LCS)Application du 3-way merge On retient pour le merge tout contenu : commun aux 3 pr´esent

On retient pour le merge tout contenu :A align´e avec C et B align´e avec C (application du LCS) commun aux 3 pr´esent

commun aux 3(application du LCS) On retient pour le merge tout contenu : pr´esent dans A mais absent

pr´esent dans A mais absent dans B et Cdu LCS) On retient pour le merge tout contenu : commun aux 3 pr´esent dans B

pr´esent dans B mais absent dans A et C: commun aux 3 pr´esent dans A mais absent dans B et C pr´esent dans A

pr´esent dans A et B mais absent dans Cabsent dans B et C pr´esent dans B mais absent dans A et C On supprime

On supprime pour le merge tout contenu :absent dans A et C pr´esent dans A et B mais absent dans C pr´esent dans

pr´esent dans A et C mais absent dans Bmais absent dans C On supprime pour le merge tout contenu : pr´esent dans B et

pr´esent dans B et C mais absent dans AOn supprime pour le merge tout contenu : pr´esent dans A et C mais absent dans

pr´esent dans C mais absent dans A et BOn supprime pour le merge tout contenu : pr´esent dans A et C mais absent dans

Introduction aux SCM Architecture

Git

Exemple de 3-way merge

SCM et int´egration continue

A:

C:

B:

->

merged:

milk

milk

milk

milk

juice

juice

flour

flour

flour

flour

 

sausage

sausage

eggs

eggs

eggs

eggs

butter

butter

Biblio

Introduction aux SCM Architecture

 

Git

SCM et int´egration continue

Biblio

Visualisation des conflits

 
 

Quand un mˆeme bloc de C est modifi´e diff´eremment par A et B. Git pr´esente par exemple :

 

<<<<<<<

A

 

I

had

one

egg

and

three

sausages

for

breakfast.

=======

 

I

had

two

eggs

and

two

sausages

for

breakfast.

>>>>>>>

B

 

Marqueurs de conflits

   

<<<<<<< : Indique les d´ebut des lignes en conflit (version locale) : Indique les d´ebut des lignes en conflit (version locale)

======= : S´epare la version locale (au dessus) de l’autre version (en dessous)Indique les d´ebut des lignes en conflit (version locale) >>>>>>> : Indique la fin de

>>>>>>> : Indique la fin de l’autre version en conflit. : Indique la fin de l’autre version en conflit.

28/09/17

 

Introduction `a la gestion de versions avec Git

 

30 / 71

Introduction aux SCM Architecture

Visualisation des conflits

Git

SCM et int´egration continue

Biblio

Possibilit´e de visualiser la version ant´erieure :

<<<<<<<

A

 

I

had

one

egg

and

three

sausages

for

breakfast.

|||||||

C

 

I

had

one

egg

and

two

sausages

for

breakfast.

=======

 

I

had

two

eggs

and

two

sausages

for

breakfast.

>>>>>>>

B

 

Marqueurs de conflits

Marqueurs de conflits
Marqueurs de conflits ||||||| : Indique la version de l’ancˆetre commun

||||||| : Indique la version de l’ancˆetre commun

Introduction aux SCM Commandes de base

Outline

Git

Introduction aux SCM

2
2

Git Architecture Commandes de base Outils et pratique au quotidien

Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue
Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue

SCM et int´egration continue

SCM et int´egration continue

Biblio

Introduction aux SCM Commandes de base

Configuration et aide

Git

SCM et int´egration continue

Biblio

Aide

Manuel d’utilisation : man gitAide Aide g´en´erale : git help Aide d’une commande : git help commande

Aide g´en´erale : git helpAide Manuel d’utilisation : man git Aide d’une commande : git help commande

Aide d’une commande : git help commande commande

Configuration globale

Configuration commune `a tous les d´epˆots d’un utilisateur, voir le fichier $HOME/.gitconfigConfiguration globale git config –global user.name ”Thibault Cholez” git config –global user.email

git config –global user.name ”Thibault Cholez”d’un utilisateur, voir le fichier $HOME/.gitconfig git config –global user.email

git config –global user.email thibault.cholez@telecomnancy.eule fichier $HOME/.gitconfig git config –global user.name ”Thibault Cholez” git config –global color.ui true

git config –global color.ui truegit config –global user.name ”Thibault Cholez” git config –global user.email thibault.cholez@telecomnancy.eu

Introduction aux SCM Commandes de base

Git

SCM et int´egration continue

Biblio

Premi`eres commandes

 
 

Initialisation du d´epˆot

   

Versionner un r´epertoire courant : git init (cr´eer un d´epˆot en g´en´erant le r´epertoire .git `a la racine)    Initialisation du d´epˆot     T´el´echarger un d´epˆot existant : git clone url

T´el´echarger un d´epˆot existant : git clone url url

Enregistrement des modifications

 

Ajouter un fichier `a suivre pour le prochain commit :: git clone url Enregistrement des modifications   git add fichier Enregistrer les modifications dans le

git add fichier

Enregistrer les modifications dans le d´epˆot local :`a suivre pour le prochain commit : git add fichier git commit fichier ou git commit

git commit fichier ou git commit -m ”Description du commit” ou git commit -a (pour all, commit tous les fichiers modifi´es sans passer par la staging area)

28/09/17

 

Introduction `a la gestion de versions avec Git

34 / 71

Introduction aux SCM Commandes de base

Partage des versions

Git

SCM et int´egration continue

Biblio

Propagation et r´ecup´eration

Un d´epˆot distant est toujours accessible et permet de partager les commits entre d´eveloppeurs (ex : GitHub).

Si besoin, lier un d´epˆot local avec un d´epˆot distant :de partager les commits entre d´eveloppeurs (ex : GitHub). git remote add nom serveur adresse depot

git remote add nom serveur adresse depot

Envoyer les derniers enregistrements vers le d´epˆot distant :distant : git remote add nom serveur adresse depot git push ( nom serveur nom branche

git push (nom serveur nom branche locale :nom branche distante)

R´ecup´erer et int´egrer les derniers enregistrements :( nom serveur nom branche locale : nom branche distante ) git pull ( nom serveur

git pull (nom serveur nom branche distante) Le nom par d´efaut d’un serveur est origin.

R´ecup´erer les derniers enregistrements sans les int´egrer :nom branche distante ) Le nom par d´efaut d’un serveur est origin . git fetch nom

git fetch nom serveur nom branche distante

Introduction aux SCM Commandes de base

Fichiers

Git

SCM et int´egration continue

Biblio

Manipulation de fichiers

Attention : pour ˆetre enregistr´es, les commandes manipulant le syst`eme de fichiers doivent ˆetre r´ealis´ees par l’interm´ediaire de git !

Renommer un fichier : git mv old name new name old name new name

Supprimer un fichier : git rm fichier fichier

Introduction aux SCM Commandes de base

Consultation des m´eta-donn´ees

Git

SCM et int´egration continue

Consulter les modifications du working dir depuis le dernier commit : git statusdes m´eta-donn´ees Git SCM et int´egration continue Consulter les modifications en cours du contenu des

Consulter les modifications en cours du contenu des fichiers suivis : git diffdu working dir depuis le dernier commit : git status Consulter les modifications du contenu des

Consulter les modifications du contenu des fichiers entre deux commits : git diff sha1 autre sha1 sha1 autre sha1

Consulter l’historique des commits : git logfichiers entre deux commits : git diff sha1 autre sha1 Consulter l’historique des manipulation du graphe

Consulter l’historique des manipulation du graphe (d´eplacement de HEAD) : git reflogautre sha1 Consulter l’historique des commits : git log Consulter qui a modifi´e quelles lignes d’un

Consulter qui a modifi´e quelles lignes d’un fichier : git blame nom fichier nom fichier

Consulter un objet git : git show sha1 sha1

Biblio

Introduction aux SCM Commandes de base

Annuler des modifications

Git

SCM et int´egration continue

Biblio

Sur un fichier

Retirer les modifications d’un fichier index´ees dans la staging area (inverse de git add) : git reset nom fichier nom fichier

Annuler les modifications courantes d’un fichier ou r´epertoire du working dir en rappelant celles :staging area (inverse de git add) : git reset nom fichier de la staging area :

de la staging area : git checkout nom fichier nom fichier

d’un commit : git checkout SHA1 nom fichier SHA1 nom fichier

Introduction aux SCM Commandes de base

Annuler des modifications

Git

SCM et int´egration continue

Biblio

des modifications Git SCM et int´egration continue Biblio Figure : Manipulations de fichiers entre zones de

Figure : Manipulations de fichiers entre zones de git 1

1. sch´ema de Thibault Jouannic :

Introduction aux SCM Commandes de base

Annuler des modifications

Git

SCM et int´egration continue

Biblio

Sur un ensemble de modifications en cours

Changer la HEAD, ´equivalent `a un ”go to” : git reset SHA1 –soft SHA1 –soft

Changer la HEAD et r´einitialiser la staging area `a cette version : git reset SHA1 –mixed (option par d´efaut) SHA1 –mixed (option par d´efaut)

Changer la HEAD et r´einitialiser la stating area et le working dir `a cette version : git reset SHA1 –hard SHA1 –hard

Sur un commit

Annuler un commit en cr´eant un nouveau commit annulant les modifications du premier : git revert SHA1 SHA1

Modifier (corriger) un commit avec les modifications courantes : git commit –amendannulant les modifications du premier : git revert SHA1 28/09/17 Introduction `a la gestion de versions

Introduction aux SCM Commandes de base

Gestion des branches

Git

SCM et int´egration continue

Biblio

Cr´eation et navigation

Les branches permettent de r´ealiser un d´eveloppement en parall`ele la branche principale afin de limiter les impacts.

Lister les branches existantes : git branchla branche principale afin de limiter les impacts. Cr´eer une nouvelle branche : git branch nom

Cr´eer une nouvelle branche : git branch nom branche ( nom racine ou SHA1 ) nom branche (nom racine ou SHA1 )

Changer la branche active : git checkout nom branche (revient `a d´eplacer la r´ef´erence HEAD vers le commit le plus r´ecent de nom branche (revient `a d´eplacer la r´ef´erence HEAD vers le commit le plus r´ecent de cette branche)

Revenir sur la branche principale : git checkout masterHEAD vers le commit le plus r´ecent de cette branche) Placer HEAD sur un commit particulier

Placer HEAD sur un commit particulier : git checkout SHA1 SHA1

Introduction aux SCM Commandes de base

Gestion des branches

Git

SCM et int´egration continue

Biblio

Regroupement et supression

Les branches ont vocation `a ˆetre r´eint´egr´ees `a la branche principale.

Fusion de la branche courante avec une autre : git merge nom branche (g´en`ere un commit avec deux parents, un dans chaque branche) nom branche (g´en`ere un commit avec deux parents, un dans chaque branche)

Supprimer une branche : git branch -d nom branche nom branche

Introduction aux SCM Commandes de base

Gestion des branches

Git

SCM et int´egration continue

Biblio

des branches Git SCM et int´egration continue Biblio Figure : Branches divergentes avant fusion [1] 28/09/17

Figure : Branches divergentes avant fusion [1]

Introduction aux SCM Commandes de base

Gestion des conflits

Git

SCM et int´egration continue

Biblio

Dus `a des modifications diff´erentes au mˆeme endroit dans un mˆeme fichier.

Deux choix

Git entre en mode r´esolution des conflits. Deux mani`eres d’en sortir :

Ne pas fusionner : git merge –abortr´esolution des conflits. Deux mani`eres d’en sortir : R´esoudre les conflits : ´ Editer les fichiers

R´esoudre les conflits :d’en sortir : Ne pas fusionner : git merge –abort ´ Editer les fichiers sources de

´

Editer les fichiers sources de conflitssortir : Ne pas fusionner : git merge –abort R´esoudre les conflits : ´ Terminer la

Terminer la r´esolution par git commitsortir : Ne pas fusionner : git merge –abort R´esoudre les conflits : ´ Editer les

Introduction aux SCM Commandes de base

Gestion des conflits

Git

SCM et int´egration continue

Biblio

Commandes utiles pour visualiser les conflits

Afficher les conflits au format diff3 (permet de visualiser l’ancˆetre commun, ce qui aide `a la r´esolution) : git config –global merge.conflictstyle diff3Commandes utiles pour visualiser les conflits Si certains conflits r´ecurrents, r´eutiliser r´esolution pass´ee

Si certains conflits r´ecurrents, r´eutiliser r´esolution pass´ee (reuse recorded resolution) : git config –global rerere.enabled 1: git config –global merge.conflictstyle diff3 R´ef´erence pratique : MERGE HEAD pointe sur la tˆete de

R´ef´erence pratique : MERGE HEAD pointe sur la tˆete de la branche distante `a fusionner(reuse recorded resolution) : git config –global rerere.enabled 1 Comparer les versions HEAD et MERGE HEAD

Comparer les versions HEAD et MERGE HEAD : git diff–global rerere.enabled 1 R´ef´erence pratique : MERGE HEAD pointe sur la tˆete de la branche distante

Introduction aux SCM Commandes de base

Gestion des conflits

Git

SCM et int´egration continue

Biblio

Commandes utiles pour visualiser les conflits

Trouver l’ancˆetre commun : git merge-base nom branche distante nom branche locale nom branche distante nom branche locale

Voir les diff´erences : git diff SHA1 ancˆetre nom branche distante fichier SHA1 ancˆetre nom branche distante fichier

git log SHA1 ancˆetre nom branche distante –follow -p – fichier SHA1 ancˆetre nom branche distante –follow -p – fichier

git log SHA1 ancˆetre HEAD –follow -p – fichier SHA1 ancˆetre HEAD –follow -p – fichier

Introduction aux SCM Commandes de base

Gestion des conflits

Git

SCM et int´egration continue

Biblio

Les strat´egies automatiques de r´esolutinon

R´esoudre automatiquement les conflits avec une strat´egie pr´e-d´efinie : git merge -s strat´egie strat´egie

Toujours favoriser notre version : oursconflits avec une strat´egie pr´e-d´efinie : git merge -s strat´egie Toujours favoriser l’autre version : theirs

Toujours favoriser l’autre version : theirsles conflits avec une strat´egie pr´e-d´efinie : git merge -s strat´egie Toujours favoriser notre version :

Introduction aux SCM Commandes de base

G´erer le graphe des commits

Git

SCM et int´egration continue

Biblio

Transplantation de branches (rebase)

Permet de d’int´egrer les modifications d’une branche dans une autre afin d’´eviter un merge par fusion : donne l’illusion d’un d´eveloppement lin´eaire a posteriori.

Int´egreation progressive des commits pr´ec´edents `a la head : head :

git rebase -i SHA1 (du commit `a partir duquel commencer)

Pour chaque commit parcouru, 3 options : 

 

pick : commit directement appliqu´e `a la headPour chaque commit parcouru, 3 options :   edit : commit appliqu´e et modification possible avant

edit : commit appliqu´e et modification possible avant l’int´egration du suivant:   pick : commit directement appliqu´e `a la head squash : commit appliqu´e et fusionn´e

squash : commit appliqu´e et fusionn´e avec le pr´ec´edentet modification possible avant l’int´egration du suivant R´e´ecrit l’histoire du d´epˆot. A faire uniquement

R´e´ecrit l’histoire du d´epˆot. A faire uniquement localement. En cas

de conflit git rebase –continue (apr`es r´esolution) ou git rebase –abort.

Introduction aux SCM Commandes de base

Transplantation de commits

Git

´

Etat du graphe :

SCM et int´egration continue

Biblio

-

A

-

B

-

C

-

D

-

remote

HEAD

 

\

 

E

-

F

-

G

-

local

HEAD

Apr`es un merge :

 

-

A

-

B

-

C

-

D

-

remote

HEAD

 

\

\

 

E

-

F

-

G

-

local

HEAD

-

new

local

 

HEAD

Apr`es un rebase :

 

-

A

-

B

-

C

-

D

-

remote

HEAD

-

E’

-

F’

-

G’

-

local

HEAD’

Introduction aux SCM Commandes de base

G´erer le graphe des commits

Git

SCM et int´egration continue

Pull and rebase

git pull est ´equivalent `a git fetch + git mergegit pull –rebase est ´equivalent git fetch + git rebase R´e´ecrit les commits locaux interm´ediaires

git pull –rebase est ´equivalent git fetch + git rebasegit pull est ´equivalent `a git fetch + git merge R´e´ecrit les commits locaux interm´ediaires de

git pull –rebase est ´equivalent git fetch + git rebase R´e´ecrit les commits locaux interm´ediaires de

R´e´ecrit les commits locaux interm´ediaires de mani`ere `a s’inscrire dans la continuit´e de l’autre branche (peut faciliter la r´esolution des conflits) : git pull –rebase (nom branche distante nom branche locale)

Biblio

Introduction aux SCM Commandes de base

G´erer le graphe des commits

Git

SCM et int´egration continue

Biblio

Squashing

Permet de regrouper plusieurs commits successifs d’une branche avant un merge.

git merge –squashplusieurs commits successifs d’une branche avant un merge. git pull –squash Squashing et Rebasing : simplifier

git pull –squashd’une branche avant un merge. git merge –squash Squashing et Rebasing : simplifier le graphe de

Squashing et Rebasing : simplifier le graphe de commits pour laisser le d´epˆot principal propre et lisible (anyway, toujours suivre la politique de l’entreprise si d´efinie)

Introduction aux SCM Commandes de base

Autres commandes utiles

Git

SCM et int´egration continue

Biblio

Stash (stash)

Sauvegarde puis annule les modifications du working dir et de l’index pour les r´e-appliquer plus tard : git stashStash (stash) Lister les modifications sauvegard´ees : git stash list Inspecter les modifications sauvegard´ees : git

Lister les modifications sauvegard´ees : git stash listde l’index pour les r´e-appliquer plus tard : git stash Inspecter les modifications sauvegard´ees : git

Inspecter les modifications sauvegard´ees : git stash showr´e-appliquer plus tard : git stash Lister les modifications sauvegard´ees : git stash list Restaurer :

Restaurer : git stash applyLister les modifications sauvegard´ees : git stash list Inspecter les modifications sauvegard´ees : git stash show

Introduction aux SCM Commandes de base

Autres commandes utiles

Git

SCM et int´egration continue

Biblio

Et bien d’autres

´

Etiqueter une version (copie l’arbre et interdit touteEt bien d’autres ´ modification) : git tag nom tag ( SHA1 ) Int´egrer `a la

modification) : git tag nom tag (SHA1 )

Int´egrer `a la branche courante les modifications d’un commit pr´ecis : git cherry-pick sha1 sha1

Recherche dichotomique pour trouver l’origine d’un bug entre un good et un bad commit : git bisect good et un bad commit : git bisect

Introduction aux SCM Commandes de base

Attention

Git

SCM et int´egration continue

Biblio

Git est tr`es puissant mais un grand pouvoir impliquede base Attention Git SCM et int´egration continue Biblio Certaines commandes dangereuses ex : git push

Certaines commandes dangereusesBiblio Git est tr`es puissant mais un grand pouvoir implique ex : git push –force Ne

Ne pas utiliser de commande sans s’ˆetre document´eCertaines commandes dangereuses ex : git push –force 28/09/17 Introduction `a la gestion de versions avec

Introduction aux SCM Outils et pratique au quotidien

Outline

Git

Introduction aux SCM

2
2

Git Architecture Commandes de base Outils et pratique au quotidien

Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue
Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue

SCM et int´egration continue

SCM et int´egration continue

Biblio

Introduction aux SCM Outils et pratique au quotidien

Outils graphiques

Git

SCM et int´egration continue

Biblio

G´erer les arbres `a l’aide des commandes peut se r´ev´eler d´elicat. Certains outils graphiques peuvent aider mais sont toujours plus limit´es que la console :

gitk ou gitg : simple interface graphique qui permet de visualiser l’historique (branches et commits). Chaque commit peut ˆetre visualis´e (liste des fichiers modifi´es, changements, etc.).aider mais sont toujours plus limit´es que la console : git-gui : client complet permettant de

git-gui : client complet permettant de pr´eparer ses commits(liste des fichiers modifi´es, changements, etc.). git-cola : client git graphique (pull, push, commit,

git-cola : client git graphique (pull, push, commit, diff-viewer, etc.): client complet permettant de pr´eparer ses commits Smart Git : client git complet, nombreuses

Smart Git : client git complet, nombreuses fonctionnalit´es, cross-platformgit graphique (pull, push, commit, diff-viewer, etc.) Giggle : interface de visualisation, ´equivalent `a gitk

Giggle : interface de visualisation, ´equivalent `a gitkgit complet, nombreuses fonctionnalit´es, cross-platform 28/09/17 Introduction `a la gestion de versions avec Git

Introduction aux SCM Outils et pratique au quotidien

Outils graphiques

Git

SCM et int´egration continue

Biblio

Outils graphiques Git SCM et int´egration continue Biblio 28/09/17 Introduction `a la gestion de versions avec

Introduction aux SCM Outils et pratique au quotidien

Outils graphiques

Git

SCM et int´egration continue

Biblio

Outils graphiques Git SCM et int´egration continue Biblio 28/09/17 Introduction `a la gestion de versions avec

Introduction aux SCM Outils et pratique au quotidien

Outils en ligne

Git

SCM et int´egration continue

Biblio

Services de d´epˆots en ligne

GitHub, BitBucket, Gitorious, GitLab, etc.

Plateformes d’h´ebergement

GitLab, FusionForge, etc. Offre souvent beaucoup d’autres services : sites web, wiki, mailing lists, forums, bugtrackers, gestion des releases etc.

Introduction aux SCM Outils et pratique au quotidien

Organisation du travail

Git

SCM et int´egration continue

Biblio

Plusieurs workflow possibles

Force de git : souplesse dans l’organisation des workflowPlusieurs workflow possibles Avec/sans d´epˆot commun distant Avec/sans int´egrateur (notion de pull request)

Avec/sans d´epˆot commun distantpossibles Force de git : souplesse dans l’organisation des workflow Avec/sans int´egrateur (notion de pull request)

Avec/sans int´egrateur (notion de pull request)workflow possibles Force de git : souplesse dans l’organisation des workflow Avec/sans d´epˆot commun distant

Introduction aux SCM Outils et pratique au quotidien

Organisation du travail

Git

SCM et int´egration continue

Biblio

du travail Git SCM et int´egration continue Biblio Figure : Workflow possibles [1] 28/09/17 Introduction

Figure : Workflow possibles [1]

Introduction aux SCM Outils et pratique au quotidien

Organisation du travail

Git

SCM et int´egration continue

Biblio

du travail Git SCM et int´egration continue Biblio Figure : Workflow possibles [1] 28/09/17 Introduction

Figure : Workflow possibles [1]

Introduction aux SCM Outils et pratique au quotidien

Organisation du travail

Git

SCM et int´egration continue

Biblio

du travail Git SCM et int´egration continue Biblio 28/09/17 Figure : Workflow possibles [1] Introduction `a

28/09/17

Figure : Workflow possibles [1]

Introduction `a la gestion de versions avec Git

60 / 71

Introduction aux SCM Outils et pratique au quotidien

Organisation du travail

Git

SCM et int´egration continue

Biblio

Github Workflow

Anything in the master branch is deployableGithub Workflow To work on something new, create a descriptively named branch off of master Commit

To work on something new, create a descriptively named branch off of masterGithub Workflow Anything in the master branch is deployable Commit to that branch locally and regularly

Commit to that branch locally and regularly push your work to the same named branch on the servernew, create a descriptively named branch off of master When you need feedback or help, or

When you need feedback or help, or you think the branch is ready for merging, open a pull requestpush your work to the same named branch on the server After someone else has reviewed

After someone else has reviewed and signed off on the feature, you can merge it into masterthink the branch is ready for merging, open a pull request Once it is merged and

Once it is merged and pushed to master, you can and should deploy immediatelymerging, open a pull request After someone else has reviewed and signed off on the feature,

Introduction aux SCM

Outline

Git

Introduction aux SCM

2
2

Git Architecture Commandes de base Outils et pratique au quotidien

Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue
Commandes de base Outils et pratique au quotidien SCM et int´egration continue SCM et int´egration continue

SCM et int´egration continue

SCM et int´egration continue

Biblio

Introduction aux SCM

Besoins

Git

SCM et int´egration continue

Biblio

´

Etapes d’un projet de d´eveloppement logiciel

1
1

Offre (proposition, budg´etisation, pr´esentation),

2
2

Sp´ecifications fonctionnelles et planification (chef de projet)

3
3

Gestion des ressources humaines (chef de projet, RH),

4
4

Sp´ecifications techniques (architecte logiciel), gestion des ressources mat´erielles

5
5

Mise en place des environnements (devops)

´

6
6

Ecriture du code source, tests unitaires, tests d’int´egration

(d´eveloppeurs)

7
7

Tests fonctionnels (´equipe d´edi´ee)

8
8

Corrections des erreurs (d´eveloppeurs)

9
9

Livraison, mise en production (ing´enieurs syst`eme)

28/09/17

Les SCM ne couvrent qu’un besoin ( estion du code source)

Introduction `a la gestion de versions avec Git

63 / 71

Introduction aux SCM

Besoins

Git

SCM et int´egration continue

Biblio

Production logicielle

Besoin d’automatisation :

Raccourcir les cycles de d´eveloppement (points 6,7,8, voire 9) (SDLC automation ”Software Development Life Cycle”)Production logicielle Besoin d’automatisation : ´ Eviter les fautes, pouvoir corriger rapidement D´egager du temps

´

Eviter les fautes, pouvoir corriger rapidement(SDLC automation ”Software Development Life Cycle”) ´ D´egager du temps utile Proc´ed´es actuels :

D´egager du temps utileCycle”) ´ Eviter les fautes, pouvoir corriger rapidement Proc´ed´es actuels : int´egration continue ”CI”

Proc´ed´es actuels : int´egration continue ”CI” (voire mˆeme livraison continue ”CD”). Similaire `a la production industrielle en flux tendu.

Similaire `a la production industrielle en flux tendu. 28/09/17 Introduction `a la gestion de versions avec

Introduction aux SCM

Git

L’int´egration continue

SCM et int´egration continue

Biblio

Proc´edure automatique

Les d´eveloppeurs enregistrent les modifications stables sur une branche du SCM Le serveur d’int´egration continue

Les d´eveloppeurs enregistrent les modifications stables sur une branche du SCM Le serveur d’int´egration continue r´ealise alors :

r´ecup´eration du code source depuis le SCM et compilation

1 2
1
2
 

r´ecup´eration des configurations des environnements depuis le SCM

3
3

ex´ecution des tests unitaires

4
4

ex´ecution des tests d’int´egration

5
5

cr´eation d’un build

6
6

d´eploiement

report automatique de tout probl`eme dans le processus

report automatique de tout probl`eme dans le processus

le SCM est un ´el´ement essentiel de la chaˆıne de CI

le SCM est un ´el´ement essentiel de la chaˆıne de CI

Introduction aux SCM

Git

Exemples d’outils de CI

SCM et int´egration continue

Biblio

Maven : gestion et automatisation de production de logiciels Java (description du projet et configuration en XML, gestion des d´ependances avec t´el´echargement automatique, etc.)d’outils de CI SCM et int´egration continue Biblio Jenkins : build et tests automatiques de projets

Jenkins : build et tests automatiques de projetsdes d´ependances avec t´el´echargement automatique, etc.) Docker : automatise le d´eploiement d’applications dans

Docker : automatise le d´eploiement d’applications dans des conteneurs logiciels dont la construction est param´etrable. Permet de d´eployer dans un environnement isol´e et facilement partageable.etc.) Jenkins : build et tests automatiques de projets Ansible : d´eploiement de logiciels sur clusters

Ansible : d´eploiement de logiciels sur clusters et gestion des configurationsdans un environnement isol´e et facilement partageable. Puppet : gestion de la configuration de serveurs,

Puppet : gestion de la configuration de serveurs, d´eploiement de VM et d’applicationsde logiciels sur clusters et gestion des configurations 28/09/17 Introduction `a la gestion de versions avec

Introduction aux SCM

Git

Git `a TELECOM Nancy

SCM et int´egration continue

Biblio

GitLab

GitLab : logiciel libre de forge (GitLab Community Edition)GitLab D´eploy´e `a l’´ecole : https://gitlab.telecomnancy.univ-lorraine.fr/ Login : prenom.nom@telecomnancy.eu, Mdp

D´eploy´e `a l’´ecole :GitLab : logiciel libre de forge (GitLab Community Edition) https://gitlab.telecomnancy.univ-lorraine.fr/ Login :

Login : prenom.nom@telecomnancy.eu, Mdp : LDAPl’´ecole : https://gitlab.telecomnancy.univ-lorraine.fr/ Ne pas confondre avec GitLab.com : le service de forge en

Ne pas confondre avec GitLab.com : le service de forge en ligne, bas´e sur GitLab Enterprise Edition (similaire `a GitHub ou BitBucket)Login : prenom.nom@telecomnancy.eu, Mdp : LDAP Utilis´e en entreprise (IBM, Sony, CERN, SpaceX, etc.)

Utilis´e en entreprise (IBM, Sony, CERN, SpaceX, etc.)avec GitLab.com : le service de forge en ligne, bas´e sur GitLab Enterprise Edition (similaire `a

Introduction aux SCM

Git

Git `a TELECOM Nancy

SCM et int´egration continue

Biblio

Fonctionnalit´es de GitLab

D´epˆot git (of course) avec inferface web, mais pas queFonctionnalit´es de GitLab Outils collaboratif : gestion des membres, Mattermost (slack-like), revue de code, etc. Outils

Outils collaboratif : gestion des membres, Mattermost (slack-like), revue de code, etc.D´epˆot git (of course) avec inferface web, mais pas que Outils de suivi : gestion des

Outils de suivi : gestion des tickets, des versions, des releases, bug tracker, statistiques, etc.des membres, Mattermost (slack-like), revue de code, etc. Outils de CI : recettes Docker, routines et

Outils de CI : recettes Docker, routines et tests automatiques, etc.des versions, des releases, bug tracker, statistiques, etc. Outils pour la communaut´e : pages web, wiki

Outils pour la communaut´e : pages web, wikietc. Outils de CI : recettes Docker, routines et tests automatiques, etc. Voir https://about.gitlab.com/features/

Introduction aux SCM

Git

Encore des liens

SCM et int´egration continue

Biblio

M´emos :

Introduction aux SCM

References

Git

SCM et int´egration continue

Biblio

[1] S. Chacon and B. Straub, “Pro git.” http ://git-scm.com/book/fr/, 2014.

[2] L. Nussbaum, “Gestion de versions avec git.” https ://members.loria.fr/LNussbaum/asrall/o5-git.pdf, 2013.

[3] B. Lynn, “Git magic.” http ://www-cs-students.stanford.edu/ blynn/gitmagic/, 2010.

[4] N. Villa, “Introduction `a git.” http ://nathalievilla.org/spip.php ?article91, 2013.