SlideShare une entreprise Scribd logo
16/06/2016
1
Formation Git Avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
Formation
Git avancé
16/06/2016
2
Formation Git Avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de Git
• Les connaissances requises
16/06/2016
2
Formation Git Avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de Git
• Les connaissances requises
16/06/2016
2
Formation Git Avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de Git
• Les connaissances requises
16/06/2016
5
Formation Git Avancé alphorm.com™©
Plan de la formation
• Git sur le serveur
Protocoles
Installation de Git sur un
serveur
Mise en place du serveur
Git daemon et Git HTTP
GitWeb
GitLab
• Git distribué
Développements distribués
Guide pour validation
Projet d'une petite équipe
Équipe privée importante
Projet public dupliqué
Projet public via email
Appliquer des patchs
16/06/2016
6
Formation Git Avancé alphorm.com™©
Objectifs de la formation
• Étudier Git pour pouvoir l’utiliser pour des projets personnels ou
professionnels.
• Git surclasse les autres outils SCM (Source Code Management) par sa
performance, la taille des dépôts et ses fonctionnalités uniques.
• Cette formation est la seconde du cursus GIT, nous allons étudier
précisément comment travailler avec GIT en entreprise et avec un projet
important.
• À l’issue de la formation, vous aurez appris à configurer et utiliser GIT
dans un contexte de gestion quotidienne des sources d’un projet
professionnel.
16/06/2016
7
Formation Git Avancé alphorm.com™©
Public concerné
• À qui s’adresse cette formation :
Aux étudiants
Aux développeurs
Aux chefs de projet
Aux amoureux des nouvelles technologies
Aux personnes souhaitant mieux s’organiser
• À tout le monde !
16/06/2016
8
Formation Git Avancé alphorm.com™©
Les possibilités de Git
•Git permet :
De versionner ses fichiers (code, images, documents, …)
De mettre en attente une version et de travailler sur une autre
De pouvoir fusionner un même fichier sur lequel plusieurs personnes ont
travaillé
Organiser son travail par version
Publier en production son code à partir d’une version donnée
Avoir un historique précis de son projet
De pouvoir blâmer quelqu’un ! ;-)
…
16/06/2016
9
Formation Git Avancé alphorm.com™©
Les connaissances requises
• Formation Git, le système de contrôle de version :
http://www.alphorm.com/tutoriel/formation-en-ligne-git-le-systeme-
de-controle-de-version
16/06/2016
10
Formation Git Avancé alphorm.com™©
Liens et ressources
• https://git-scm.com/ : Site official de Git
• Http://github.com : Plateforme en ligne de Git
• http://gitref.org/ : Pour ne jamais oublier les commandes
• https://try.github.io/ : Pour s’entrainer
16/06/2016
11
Formation Git Avancé alphorm.com™©
Let’s Git ☺
16/06/2016
12
Formation Git Avancé alphorm.com™©
Les protocoles
Git serveur
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
16/06/2016
13
Formation Git Avancé alphorm.com™©
Plan
•Protocole local
•Protocole HTTP
•Protocole SSH
•Protocole Git
16/06/2016
14
Formation Git Avancé alphorm.com™©
Protocole local
• Pour cloner un répertoire local
$> git clone /path/to/project.git
• Pour ajouter un projet en local
$> git remote add local_proj /path/to/project.git
• Avantage ☺
Facile à mettre en place
• Inconvénients
Il est généralement difficile de rendre disponible un partage réseau et d’y
accéder en dehors d’un réseau local.
16/06/2016
15
Formation Git Avancé alphorm.com™©
Protocole HTTP
• Deux manières de communiquer en HTTP
1. HTTP intelligent (comprends une couche d’authentification)
2. HTTP idiot :
• Les fichiers sont simplement placer sur un serveur web.
• Nécessite l’ajout un post-hook.
• Avantage ☺ (http intelligent)
Une seule URL
HTTP / HTTPS, la plupart des firewalls sont ouverts sur le port 80/443
• Inconvénients
Plus compliqué à mettre en place.
16/06/2016
16
Formation Git Avancé alphorm.com™©
Protocole SSH
• Pour accéder à un GIT
$> git clone ssh://utilisateur@serveur/projet.git
• Avantage ☺
Basé sur le protocole SSH (Connexion cryptée + authentification)
• Inconvénients
Impossible de proposer un accès anonyme
16/06/2016
17
Formation Git Avancé alphorm.com™©
Protocole Git
• Le protocole Git. Celui-ci est géré par un daemon spécial livré avec Git.
• Avantage ☺
Protocole plus rapide
• Inconvénients
Pas d’authentification, tout le monde peut pousser
16/06/2016
18
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Les différents protocoles disponibles :
Protocole local
Protocole HTTP
Protocole SSH
Protocole Git
• Prochaine vidéo :
Installation de Git sur un serveur
16/06/2016
19
Formation Git Avancé alphorm.com™©
Copie d’un projet git sur
un serveur
Git serveur
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
16/06/2016
20
Formation Git Avancé alphorm.com™©
Plan
•Copie du projet
•Copie du dépôt nu sur un serveur
•Petites installations
•Génération des clés publiques SSH
•Ajout des clefs SSH au serveur
16/06/2016
21
Formation Git Avancé alphorm.com™©
Copie du projet
• Pour réaliser l’installation initiale d’un serveur Git, il faut
exporter un dépôt existant dans un nouveau dépôt nu
$> git clone --bare mon_project mon_projet.git
• Equivalent à :
$ cp -Rf mon_projet/.git mon_projet.git
16/06/2016
22
Formation Git Avancé alphorm.com™©
Copie du dépôt nu sur un serveur
• A présent on peut copier notre projet sur notre serveur :
$> scp -r mon_projet.git git@git.exemple.com:/opt/git
• Et le cloner :
$ git clone git@git.exemple.com:/opt/git/mon_projet.git
• Git ajoutera automatiquement les droits de groupe en écriture à un
dépôt si vous lancez la commande git init avec l’option --shared.
$ ssh git@git.exemple.com
$ cd /opt/git/mon_projet.git
$ git init --bare --shared
16/06/2016
23
Formation Git Avancé alphorm.com™©
Petit installation
• A partir du protocole SSH, on peut :
Soit créer plusieurs utilisateurs et partager le groupe entre ces
utilisateurs.
Soit créer un utilisateur et partager la clef privée.
Soit ajouter plusieurs clef ssh publique et les ajouter au compte git.
16/06/2016
24
Formation Git Avancé alphorm.com™©
Génération des clés publiques SSH
•Sur les postes utilisateurs :
$> ssh-keygen
•Le résultat :
$> cat ~/.ssh/id_rsa.pub
16/06/2016
25
Formation Git Avancé alphorm.com™©
Ajout des clefs SSH au serveur
• Sur le serveur :
$> sudo adduser git
$> su git
$> cd
$> mkdir .ssh && chmod 700 .ssh
$> touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
• Puis ajouter les clefs publiques :
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
16/06/2016
26
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment
Comment copier un repertoire pour l’exporter sur un serveur
Les 3 methodes pour partager le serveur avec le protocole SSH
Comment créer les clefs SSH
• Prochaine vidéo
Mise en place du serveur
16/06/2016
27
Formation Git Avancé alphorm.com™©
Création d’un projet
git sur le serveur
Git Serveur
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
16/06/2016
28
Formation Git Avancé alphorm.com™©
Plan
•Création du répertoire GIT
•Première configuration
•Configuration des PC utilisateurs
•Restriction du compte ‘git’ sur le serveur
16/06/2016
29
Formation Git Avancé alphorm.com™©
Création du répertoire GIT
• Maintenant, vous pouvez créer un dépôt vide nu en lançant
la commande git init avec l’option --bare, ce qui initialise un
dépôt sans répertoire de travail :
$> cd /opt/git
$> mkdir project.git
$> cd project.git
$> git init --bare
16/06/2016
30
Formation Git Avancé alphorm.com™©
Première configuration
• Sur le premier PC :
$> cd monproject
$> git init
$> git add .
$> git commit -m 'première validation'
$> git remote add origin git@gitserveur:/opt/git/projet.git
$> git push origin master
16/06/2016
31
Formation Git Avancé alphorm.com™©
Configuration des PC utilisateurs
• Sur les autres PC des utilisateurs :
$> git clone git@gitserveur:repository/projet.git
$> cd projet
$> emacs LISEZMOI
$> git commit -am 'correction du fichier LISEZMOI'
$> git push origin master
16/06/2016
32
Formation Git Avancé alphorm.com™©
Restriction du compte ‘git’ sur le serveur
• Vous pouvez simplement restreindre l’utilisateur git à des actions Git
avec un shell limité appelé git-shell qui est fourni avec Git.
$ cat /etc/shells # voir si `git-shell` est déjà déclaré. Sinon...
$ which git-shell # s'assurer que git-shell est installé sur le système
$ sudo vim /etc/shells # et ajouter le chemin complet vers git-shell
$ sudo chsh git # saisir le chemin vers git-shell, souvent : /usr/bin/git-shell
• À présent, l’utilisateur git ne peut plus utiliser la connexion SSH que
pour pousser et tirer sur des dépôts Git
$ ssh git@gitserveur # retourne une erreur
16/06/2016
33
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment mettre en place un serveur
collaborative
• Prochaine vidéo
Démon (Daemon) Git
16/06/2016
34
Formation Git Avancé alphorm.com™©
Git daemon
et Git HTTP
Git Serveur
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
16/06/2016
35
Formation Git Avancé alphorm.com™©
Plan
•Git daemon
•Script de démarrage automatique
•Git HTTP
16/06/2016
36
Formation Git Avancé alphorm.com™©
Git Daemon
• Pour lancer le démon :
$> git daemon --reuseaddr --base-path=/opt/git/ /opt/git/
• Puis dans chaque projet il suffit de créer un fichier :
$> touch git-daemon-export-ok
16/06/2016
37
Formation Git Avancé alphorm.com™©
Script de démarrage automatique
• Avec Ubuntu, il est possible de créer un script de démarrage
automatique :
$> emacs /etc/event.d/local-git-daemon
• On inscrit le daemon
$> initctl start local-git-daemon
start on startup
stop on shutdown
exec /usr/bin/git daemon 
--user=git --group=git 
--reuseaddr 
--base-path=/opt/git/ 
/opt/git/
respawn
16/06/2016
38
Formation Git Avancé alphorm.com™©
Git HTTP
• Nous avons à présent un accès authentifié par SSH et un accès non
authentifié par git://, mais il existe aussi un protocole qui peut faire les
deux à la fois.
• La configuration d’un HTTP intelligent revient simplement à activer sur
le serveur un script CGI livré avec Git qui s’appelle git-http-backend.
• Nous utiliserons Apache2 comme serveur HTTP/CGI
16/06/2016
39
Formation Git Avancé alphorm.com™©
Git HTTP
• Sur Ubuntu / Debian, installons le apache à partir des paquets :
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
• Ensuite, nous devons ajouter quelques lignes à la configuration
d’Apache pour qu’il lance git-http-backend
SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
16/06/2016
40
Formation Git Avancé alphorm.com™©
Git HTTP
• Puis nous allons indiquer à Apache les repertoires de travail :
• Enfin, nous n’avons plus qu’à créer le fichier de mot de passe :
$> htdigest -c /opt/git/.htpasswd "Git Access" eferrari
<Directory "/usr/lib/git-core*">
Options ExecCGI Indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
AuthUserFile /opt/git/.htpasswd
Require valid-user
</LocationMatch>
16/06/2016
41
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment créer deux nouveaux types de
serveur GIT
• Prochaine vidéo:
GitWeb
16/06/2016
42
Formation Git Avancé alphorm.com™©
GitWeb
Git sur le serveur
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
16/06/2016
43
Formation Git Avancé alphorm.com™©
Plan
•GitWeb
•Démarrage
•Hébergement permanent
16/06/2016
44
Formation Git Avancé alphorm.com™©
GitWeb
• Après avoir réglé les accès de base en lecture/écriture et en
lecture seule pour vos projets, vous souhaiterez peut-être
mettre en place une interface web simple de visualisation.
• Git fournit un script CGI appelé GitWeb qui est souvent
utilisé à cette fin.
16/06/2016
45
Formation Git Avancé alphorm.com™©
GitWeb
16/06/2016
46
Formation Git Avancé alphorm.com™©
Démarrage
• Pour démarer
$> git instaweb --httpd=webrick
• Pour arrêter
$> git instaweb --httpd=webrick --stop
16/06/2016
47
Formation Git Avancé alphorm.com™©
Hébergement permanent
• Si vous souhaitez fournir l’interface web en permanence sur le serveur
pour votre équipe ou pour un projet open source que vous hébergez, il
sera nécessaire d’installer le script CGI pour qu’il soit appelé par votre
serveur web.
$ git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/opt/git" prefix=/usr gitweb
[…]
$ sudo cp -Rf gitweb /var/www/
16/06/2016
48
Formation Git Avancé alphorm.com™©
Hébergement permanent
• Puis il suffit de configurer apache :
<VirtualHost *:80>
ServerName gitserver
DocumentRoot /var/www/gitweb
<Directory /var/www/gitweb>
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
</Directory>
</VirtualHost>
16/06/2016
49
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment créer un serveur web pour avoir
une overview sur un projet Git.
• Prochaine vidéo:
GitLab
16/06/2016
50
Formation Git Avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
GitLab
Git sur le serveur
16/06/2016
51
Formation Git Avancé alphorm.com™©
Plan
•GitLab
•Mise en place
•Configuration des utilisateurs
•Configuration des groupes
16/06/2016
52
Formation Git Avancé alphorm.com™©
GitLab
• GitWeb reste tout de même simpliste.
• Si vous cherchez un serveur Git plus moderne et complet, il
existe quelques solutions libres pertinentes.
• Comme GitLab est un des plus populaires, nous allons
prendre son installation et son utilisation comme exemple.
• Cette solution est plus complexe que l’option GitWeb et
demandera indubitablement plus de maintenance, mais elle
est aussi plus complète.
16/06/2016
53
Formation Git Avancé alphorm.com™©
Mise en place
• GitLab est une application web reposant sur une base de
données.
• L’installation est très bien documentée et supportée.
• Nous pouvons installer GitLab de plusieurs façons :
Installation manuelle à partir des sources ou de packages.
Installation avec une image virtuelle
Installation « dans le cloud »
16/06/2016
54
Formation Git Avancé alphorm.com™©
Configuration des utilisateurs
16/06/2016
55
Formation Git Avancé alphorm.com™©
Configuration des groupes
16/06/2016
56
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment utiliser GitLab
• Prochain Chapitre :
Git distribué
16/06/2016
57
Formation Git Avancé alphorm.com™©
Développements
distribués
Git distribué
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
16/06/2016
58
Formation Git Avancé alphorm.com™©
Plan
•Développements distribués
•Gestion centralisée
•Mode du gestionnaire d’intégration
•Mode dictateur et ses lieutenants
16/06/2016
59
Formation Git Avancé alphorm.com™©
Introduction
• Dans ce chapitre, nous allons découvrir comment travailler
dans un environnement distribué avec Git en tant que
contributeur ou comme intégrateur.
• Nous allons voir une manière de contribuer efficacement à
un projet et de rendre la vie plus facile au mainteneur.
16/06/2016
60
Formation Git Avancé alphorm.com™©
Développements distribués
• La nature distribuée de Git permet une bien plus grande
flexibilité dans la manière dont les développeurs
collaborent sur un projet.
• Dans Git, tout développeur est potentiellement un nœud et
un concentrateur
• Chaque développeur peut à la fois contribuer du code vers
les autres dépôts et maintenir un dépôt public sur lequel
d’autres vont baser leur travail et auquel ils vont contribuer.
16/06/2016
61
Formation Git Avancé alphorm.com™©
Gestion centralisée
16/06/2016
62
Formation Git Avancé alphorm.com™©
Mode du gestionnaire d’intégration
16/06/2016
3
Formation Git Avancé alphorm.com™©
Présentation du formateur
Edouard FERRARI
• contact@ferrari.wf
• Développeur full stack chez Summview
• Mission de conseil, d’architecture et de migration
• Mes références :
LinkedIn : https://fr.linkedin.com/in/edouardferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari
Github : https://github.com/didouard
16/06/2016
3
Formation Git Avancé alphorm.com™©
Présentation du formateur
Edouard FERRARI
• contact@ferrari.wf
• Développeur full stack chez Summview
• Mission de conseil, d’architecture et de migration
• Mes références :
LinkedIn : https://fr.linkedin.com/in/edouardferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari
Github : https://github.com/didouard
16/06/2016
3
Formation Git Avancé alphorm.com™©
Présentation du formateur
Edouard FERRARI
• contact@ferrari.wf
• Développeur full stack chez Summview
• Mission de conseil, d’architecture et de migration
• Mes références :
LinkedIn : https://fr.linkedin.com/in/edouardferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari
Github : https://github.com/didouard
16/06/2016
3
Formation Git Avancé alphorm.com™©
Présentation du formateur
Edouard FERRARI
• contact@ferrari.wf
• Développeur full stack chez Summview
• Mission de conseil, d’architecture et de migration
• Mes références :
LinkedIn : https://fr.linkedin.com/in/edouardferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari
Github : https://github.com/didouard
16/06/2016
3
Formation Git Avancé alphorm.com™©
Présentation du formateur
Edouard FERRARI
• contact@ferrari.wf
• Développeur full stack chez Summview
• Mission de conseil, d’architecture et de migration
• Mes références :
LinkedIn : https://fr.linkedin.com/in/edouardferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari
Github : https://github.com/didouard
16/06/2016
3
Formation Git Avancé alphorm.com™©
Présentation du formateur
Edouard FERRARI
• contact@ferrari.wf
• Développeur full stack chez Summview
• Mission de conseil, d’architecture et de migration
• Mes références :
LinkedIn : https://fr.linkedin.com/in/edouardferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari
Github : https://github.com/didouard
16/06/2016
69
Formation Git Avancé alphorm.com™©
Un sujet = une validation
• Ne développez pas pendant un week-end entier en traitant
de 5 problèmes différents.
• Assurez-vous de faire de chaque validation une
modification logiquement atomique.
• Faites une branche, avec 5 validations différentes.
• Cette approche simplifie aussi le retrait ou l’inversion
ultérieure d’une modification en cas de besoin.
16/06/2016
70
Formation Git Avancé alphorm.com™©
Le message de validation
• S’habituer à écrire des messages de validation de qualité facilite
grandement l’emploi et la collaboration avec Git.
• En règle générale, les messages doivent débuter par une ligne unique
d’au plus 50 caractères décrivant concisément la modification, suivie
d’une ligne vide, suivie d’une explication plus détaillée.
• Le projet Git exige que l’explication détaillée inclue la motivation de la
modification en contrastant le nouveau comportement par rapport à
l’ancien.
• Une bonne règle consiste aussi à utiliser le présent de l’impératif ou des
verbes substantivés dans le message:
« Ajoute des tests pour » ou « Ajout de tests pour ».
16/06/2016
71
Formation Git Avancé alphorm.com™©
Le message de validation
• Voici ci-dessous un modèle écrit par Tim Pope :
16/06/2016
72
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Quelles sont les « best practice » pour faire des validations
• Prochaine vidéo :
Contributation à un projet
16/06/2016
73
Formation Git Avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
Le cas d’une petite
équipe
Git distribué
16/06/2016
74
Formation Git Avancé alphorm.com™©
Plan
•Introduction
•Le travail à deux
16/06/2016
75
Formation Git Avancé alphorm.com™©
Introduction
• Chaque projet github est différent, il est difficile d’indiqué
une méthode globale de contribution à un projet.
• On peut décrire 3 grandes variables :
La taille du corps des contributeurs
Le mode de gestion utilisé pour le projet
La gestion des accès en écriture
16/06/2016
76
Formation Git Avancé alphorm.com™©
Le travail à deux
•Imaginons deux collaborateurs :
John
Jessica
16/06/2016
77
Formation Git Avancé alphorm.com™©
Le travail à deux
• Historique divergent de John
16/06/2016
78
Formation Git Avancé alphorm.com™©
Le travail à deux
• Le dépôt de John après la fusion d’origine/master.
16/06/2016
79
Formation Git Avancé alphorm.com™©
Le travail à deux
• Le dépôt de John après la fusion d’origine/master.
16/06/2016
80
Formation Git Avancé alphorm.com™©
Le travail à deux
• La branche thématique de Jessica
16/06/2016
81
Formation Git Avancé alphorm.com™©
Le travail à deux
• L’historique de Jessica après avoir récupéré les
modifications de John.
16/06/2016
82
Formation Git Avancé alphorm.com™©
Le travail à deux
• L’historique de Jessica après avoir fusionné les
modifications de John.
16/06/2016
83
Formation Git Avancé alphorm.com™©
Le travail à deux
•En résumé
16/06/2016
84
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu ensemble un des schémas les plus simples.
• Prochaines vidéo :
Contribution à un projet : Équipe privée importante
16/06/2016
85
Formation Git Avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
Équipe privée
importante
Git distribué
16/06/2016
86
Formation Git Avancé alphorm.com™©
Plan
• Équipe privée importante
16/06/2016
87
Formation Git Avancé alphorm.com™©
Le travail à deux
• Imaginons que John et Jessica travaillent ensemble sur une première
fonctionnalité.
• Tandis que Jessica et Josie travaillent sur une autre.
• Dans ce cas, l’entreprise utilise un mode d’opération de type «
gestionnaire d’intégration » où le travail des groupes est intégré par
certains ingénieurs, et la branche master du dépôt principal ne peut
être mise à jour que par ces ingénieurs.
• Dans ce scénario, tout le travail est validé dans des branches orientées
équipe, et tiré plus tard par les intégrateurs.
16/06/2016
88
Formation Git Avancé alphorm.com™©
Le travail à deux
• Historique initial de Jessica
16/06/2016
4
Formation Git Avancé alphorm.com™©
Mes formations
• Cursus complet sur NodeJS
• Formation, les fondamentaux sur Git
16/06/2016
90
Formation Git Avancé alphorm.com™©
Le travail à deux
• L’historique de Jessica après la fusion de ses deux branches
thématiques.
16/06/2016
91
Formation Git Avancé alphorm.com™©
Le travail à deux
• En résumé :
16/06/2016
92
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu ensemble un des schémas les plus utilisé en
entreprise.
• De nombreux groupes basculent vers Git du fait de cette
capacité à gérer plusieurs équipes travaillant en parallèle.
• Prochaine vidéo :
Contribution à un projet : Projet public via courriel
16/06/2016
93
Formation Git Avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
Projet public
dupliqué
Git distribué
16/06/2016
94
Formation Git Avancé alphorm.com™©
Plan
•Introduction
•Projet public dupliqué
16/06/2016
95
Formation Git Avancé alphorm.com™©
Introduction
• Contribuer à un projet public est assez différent. Il faut
présenter le travail au mainteneur.
• Vu que le projet est public, vous n’avez pas la possibilité de
mettre à jour directement des branches du projet.
• De nombreux sites proposent cette méthode (dont GitHub,
BitBucket, Google Code, repo.or.cz).
16/06/2016
96
Formation Git Avancé alphorm.com™©
Le travail à deux
• Historique initial des commits avec les modifications de
fonctionB.
16/06/2016
97
Formation Git Avancé alphorm.com™©
Le travail à deux
• Historique des validations après le travail sur fonctionA.
16/06/2016
98
Formation Git Avancé alphorm.com™©
Le travail à deux
• Historique des validations après le travail sur fonctionBv2.
16/06/2016
99
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment travailler sur un projet public.
• Prochaine vidéo :
Contribution à un projet : Projet public via email
16/06/2016
100
Formation Git Avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
Projet public
via email
Git distribué
16/06/2016
101
Formation Git Avancé alphorm.com™©
Plan
•Création d’un patch
•Envoyer un patch via Email
16/06/2016
102
Formation Git Avancé alphorm.com™©
Création d’un patch
• Il est possible de créer un export d’une validation grâce au
patch :
$> git format-patch –M origin/master
16/06/2016
103
Formation Git Avancé alphorm.com™©
Envoyer un patch via email
• Vous pouvez configurer gmail pour envoyer ces patchs, dans
~/.gitconfig :
• Puis vous pouvez envoyer les patchs dans votre répertoire ‘Drafts’ :
cat *.patch | git imap-send
• Vous retrouverez vos patchs dans votre Gmail, dans le répertoire
‘Drafts’. Il vous suffira d’ajouter le destinataire et d’envoyer l’email.
16/06/2016
104
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment créer des patchs et les envoyer par
email.
• Prochaine vidéo :
Contribution à un projet : Appliquer des patches
16/06/2016
105
Formation Git Avancé alphorm.com™©
Appliquer des patchs
Git distribué
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
16/06/2016
106
Formation Git Avancé alphorm.com™©
Plan
• Travail dans des branches thématiques
• Appliquer des patchs
• Application d’un patch avec apply
• Application d’un patch avec am
• Vérification des branches distantes
16/06/2016
107
Formation Git Avancé alphorm.com™©
Travail dans des branches thématiques
• Quand vous vous apprêtez à intégrer des contributions, une
bonne idée consiste à les essayer d’abord dans une branche
thématique.
• Par exemple vous pouvez créer une branche thématique
avec les initiaux du développeur suivi du nom de son travail
:
$> git checkout –b jp/js_client
16/06/2016
108
Formation Git Avancé alphorm.com™©
Appliquer des patches
• Il existe deux moyens d’appliquer un patch reçu par mail :
$> git apply
$> git am
16/06/2016
109
Formation Git Avancé alphorm.com™©
Application d’un patch avec apply
• Si vous avez reçu le patch de quelqu’un qui l’a généré avec la
commande git diff ou diff Unix, vous pouvez l’appliquer avec la
commande git apply.
$> git apply patch-js-client.patch
• Les fichiers dans votre copie de travail sont modifiés.
• C’est quasiment identique à la commande patch -p1 qui applique
directement les patchs.
• Vous pouvez aussi utiliser git apply pour voir si un patch s’applique
proprement avant de réellement l’appliquer :
$> git apply --check patch-js-client.patch
16/06/2016
110
Formation Git Avancé alphorm.com™©
Application d’un patch avec am
• Si le contributeur est un utilisateur de Git qui a été assez gentil d’utiliser
la commande format-patch pour générer ses patchs, le patch contient
alors déjà l’information d’auteur et le message de validation :
$> git am patch-js-client.patch
• Il est possible que le patch ne s’applique pas :
• Comme avec git rebase, on modifie le fichier, on git add et git am --
continue
16/06/2016
111
Formation Git Avancé alphorm.com™©
Vérification des branches distantes
• Si la contribution à été fournie par un utilisateur de qui a
mis en place son propre dépôt public, vous pouvez ajouter
en tant que dépôt distant et réaliser les fusions localement.
$ git remote add jessica git://github.com/jessica/monproject.git
$ git fetch jessica
$ git checkout -b jsclient jessica/js-client
16/06/2016
112
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu dans cette vidéo :
Comment appliquer des patches
Comment ajouter des branches distantes et ajouter leur modification
• Prochaine vidéo :
La conclusion
16/06/2016
113
Formation Git Avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : edouard.ferrari@gmail.com
Conclusion
16/06/2016
114
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons vu comment mettre en place un serveur GIT :
Par accès direct
Par SSH
Par protocole git
Par HTTP
• Différent serveur HTTP
GitWeb
GitLab
16/06/2016
115
Formation Git Avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons différentes méthodes de travail avec Git
Pour des petits groupes de travail
Pour des entreprises
Pour des grands groupes de travail
• Nous avons aussi vu comment contribuer et faire partager son travail
dans GIT
16/06/2016
116
Formation Git Avancé alphorm.com™©
Avez-vous des Questions / Remarques / Commentaires ?
16/06/2016
117
Formation Git Avancé alphorm.com™©
À bientôt ☺
Keep in touch !
E-mail : edouard@ferrari.wf
Linkedin : https://fr.linkedin.com/in/edouardferrari
Twitter : https://twitter.com/edouard_ferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari

Contenu connexe

PDF
Alphorm.com Support de la Formation Git
PPTX
Terraform
PDF
Alphorm.com Formation Hacking et Sécurité , avancé
PDF
Alphorm.com Formation Hacking et Sécurité 2020 (3of4) : Attaques Réseaux, Sys...
PDF
Formation autour de git et git lab
PPTX
Terraform
PDF
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
PDF
Support distributed computing and caching avec hazelcast
Alphorm.com Support de la Formation Git
Terraform
Alphorm.com Formation Hacking et Sécurité , avancé
Alphorm.com Formation Hacking et Sécurité 2020 (3of4) : Attaques Réseaux, Sys...
Formation autour de git et git lab
Terraform
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
Support distributed computing and caching avec hazelcast

Tendances (20)

PPTX
Présentation de git
PDF
Alphorm.com Formation Active Directory 2019 : Optimisation et Sécurisation av...
PDF
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
PDF
Support NodeJS avec TypeScript Express MongoDB
PDF
Terraform: An Overview & Introduction
PPT
Admin linux utilisateurs_et_groupes cours 1
PDF
Terraform Introduction
PPTX
Terraform
PDF
【勉強会資料】Systems Managerによるパッチ管理 for PCI DSS
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
PDF
Terraform
PDF
Gitlab CI : Integration et Déploiement Continue
PDF
Concevoir, développer et sécuriser des micro-services avec Spring Boot
PPTX
Terraform modules restructured
PDF
Alphorm.com Formation MySQL Administration(1Z0-883)
PDF
Alphorm.com Microsoft AZURE
PPTX
Les principales failles de sécurité des applications Web actuelles
PDF
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
PPTX
Terraform on Azure
PPTX
Comprehensive Terraform Training
Présentation de git
Alphorm.com Formation Active Directory 2019 : Optimisation et Sécurisation av...
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Support NodeJS avec TypeScript Express MongoDB
Terraform: An Overview & Introduction
Admin linux utilisateurs_et_groupes cours 1
Terraform Introduction
Terraform
【勉強会資料】Systems Managerによるパッチ管理 for PCI DSS
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
Terraform
Gitlab CI : Integration et Déploiement Continue
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Terraform modules restructured
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com Microsoft AZURE
Les principales failles de sécurité des applications Web actuelles
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Terraform on Azure
Comprehensive Terraform Training
Publicité

En vedette (20)

PDF
Alphorm.com Formation Docker (1/2) : Installation et Administration
PDF
Alphorm.com Formation TypeScript
PDF
Alphorm.com Formation Docker (2/2) - Administration Avancée
PDF
Alphorm.com-Formation MongoDB Administration
PDF
Alphorm.com Support de la formation Hacking et Sécurité Metasploit
PDF
Alphorm.com Support de la Formation Oracle VM Administration
PDF
Alphorm.com Formation Configuration des services avancés de Windows Server 20...
PDF
Alphorm.com Support de la formation Citrix NetScaler11
PDF
alphorm.com - Formation Microsoft Hyper-V 2012
PDF
Alphorm.com Formation Cisco CCNA v3 : mise à jour
PDF
Alphorm.com Formation VMware Horizon View 5.2
PDF
alphorm.com - Formation Windows Server Core 2008 (R2)
PDF
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
PDF
Alphorm.com-Formation windows phone 8.1
PDF
Alphorm.com Formation Microsoft ATA 2016 : Installation et Configuration
PDF
Alphorm.com Formation les fondamentaux de Matlab 2013 A
PDF
Alphorm.com Formation Security+ 1/2
PDF
Alphorm.com Formation VMware Workstation 11
PDF
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
PDF
alphorm.com - Formation VMware Mirage 3.6
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation TypeScript
Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com-Formation MongoDB Administration
Alphorm.com Support de la formation Hacking et Sécurité Metasploit
Alphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Formation Configuration des services avancés de Windows Server 20...
Alphorm.com Support de la formation Citrix NetScaler11
alphorm.com - Formation Microsoft Hyper-V 2012
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation VMware Horizon View 5.2
alphorm.com - Formation Windows Server Core 2008 (R2)
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com-Formation windows phone 8.1
Alphorm.com Formation Microsoft ATA 2016 : Installation et Configuration
Alphorm.com Formation les fondamentaux de Matlab 2013 A
Alphorm.com Formation Security+ 1/2
Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
alphorm.com - Formation VMware Mirage 3.6
Publicité

Similaire à Alphorm.com support de la formation Git avancé (20)

PPTX
Présentation Git & GitHub
PPT
Git l'essentiel
DOCX
Le système de versioning git
PDF
Les bases de git
PDF
Introduction à git.pdf
PDF
PDF
5. Approche Agile_gestion de version et qualité du code.pdf
PDF
Interface graphique pour "Git"
PDF
Débuter avec Git & github
PPTX
Git and Github.pptx
PDF
git-cmds-base.pdf
PDF
Cours sur github part3 git
PPTX
Versioning avec Git
PPTX
Git utilisation quotidienne
PDF
Présentation du retour d'expérience sur Git
PDF
Git pour les (pas si) nuls
PDF
Formation GIT gratuite par ippon 2014
PDF
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
PDF
Get startedwithgit2
Présentation Git & GitHub
Git l'essentiel
Le système de versioning git
Les bases de git
Introduction à git.pdf
5. Approche Agile_gestion de version et qualité du code.pdf
Interface graphique pour "Git"
Débuter avec Git & github
Git and Github.pptx
git-cmds-base.pdf
Cours sur github part3 git
Versioning avec Git
Git utilisation quotidienne
Présentation du retour d'expérience sur Git
Git pour les (pas si) nuls
Formation GIT gratuite par ippon 2014
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Get startedwithgit2

Plus de Alphorm (20)

PDF
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
PDF
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
PDF
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
PDF
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
PDF
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
PDF
Alphorm.com Formation Sage : Gestion Commerciale
PDF
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
PDF
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
PDF
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
PDF
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
PDF
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
PDF
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
PDF
Alphorm.com Formation PHP 8 : Les bases de la POO
PDF
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
PDF
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
PDF
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
PDF
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
PDF
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
PDF
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
PDF
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API

Alphorm.com support de la formation Git avancé

  • 1. 16/06/2016 1 Formation Git Avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com Formation Git avancé
  • 2. 16/06/2016 2 Formation Git Avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de Git • Les connaissances requises
  • 3. 16/06/2016 2 Formation Git Avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de Git • Les connaissances requises
  • 4. 16/06/2016 2 Formation Git Avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de Git • Les connaissances requises
  • 5. 16/06/2016 5 Formation Git Avancé alphorm.com™© Plan de la formation • Git sur le serveur Protocoles Installation de Git sur un serveur Mise en place du serveur Git daemon et Git HTTP GitWeb GitLab • Git distribué Développements distribués Guide pour validation Projet d'une petite équipe Équipe privée importante Projet public dupliqué Projet public via email Appliquer des patchs
  • 6. 16/06/2016 6 Formation Git Avancé alphorm.com™© Objectifs de la formation • Étudier Git pour pouvoir l’utiliser pour des projets personnels ou professionnels. • Git surclasse les autres outils SCM (Source Code Management) par sa performance, la taille des dépôts et ses fonctionnalités uniques. • Cette formation est la seconde du cursus GIT, nous allons étudier précisément comment travailler avec GIT en entreprise et avec un projet important. • À l’issue de la formation, vous aurez appris à configurer et utiliser GIT dans un contexte de gestion quotidienne des sources d’un projet professionnel.
  • 7. 16/06/2016 7 Formation Git Avancé alphorm.com™© Public concerné • À qui s’adresse cette formation : Aux étudiants Aux développeurs Aux chefs de projet Aux amoureux des nouvelles technologies Aux personnes souhaitant mieux s’organiser • À tout le monde !
  • 8. 16/06/2016 8 Formation Git Avancé alphorm.com™© Les possibilités de Git •Git permet : De versionner ses fichiers (code, images, documents, …) De mettre en attente une version et de travailler sur une autre De pouvoir fusionner un même fichier sur lequel plusieurs personnes ont travaillé Organiser son travail par version Publier en production son code à partir d’une version donnée Avoir un historique précis de son projet De pouvoir blâmer quelqu’un ! ;-) …
  • 9. 16/06/2016 9 Formation Git Avancé alphorm.com™© Les connaissances requises • Formation Git, le système de contrôle de version : http://www.alphorm.com/tutoriel/formation-en-ligne-git-le-systeme- de-controle-de-version
  • 10. 16/06/2016 10 Formation Git Avancé alphorm.com™© Liens et ressources • https://git-scm.com/ : Site official de Git • Http://github.com : Plateforme en ligne de Git • http://gitref.org/ : Pour ne jamais oublier les commandes • https://try.github.io/ : Pour s’entrainer
  • 11. 16/06/2016 11 Formation Git Avancé alphorm.com™© Let’s Git ☺
  • 12. 16/06/2016 12 Formation Git Avancé alphorm.com™© Les protocoles Git serveur Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com
  • 13. 16/06/2016 13 Formation Git Avancé alphorm.com™© Plan •Protocole local •Protocole HTTP •Protocole SSH •Protocole Git
  • 14. 16/06/2016 14 Formation Git Avancé alphorm.com™© Protocole local • Pour cloner un répertoire local $> git clone /path/to/project.git • Pour ajouter un projet en local $> git remote add local_proj /path/to/project.git • Avantage ☺ Facile à mettre en place • Inconvénients Il est généralement difficile de rendre disponible un partage réseau et d’y accéder en dehors d’un réseau local.
  • 15. 16/06/2016 15 Formation Git Avancé alphorm.com™© Protocole HTTP • Deux manières de communiquer en HTTP 1. HTTP intelligent (comprends une couche d’authentification) 2. HTTP idiot : • Les fichiers sont simplement placer sur un serveur web. • Nécessite l’ajout un post-hook. • Avantage ☺ (http intelligent) Une seule URL HTTP / HTTPS, la plupart des firewalls sont ouverts sur le port 80/443 • Inconvénients Plus compliqué à mettre en place.
  • 16. 16/06/2016 16 Formation Git Avancé alphorm.com™© Protocole SSH • Pour accéder à un GIT $> git clone ssh://utilisateur@serveur/projet.git • Avantage ☺ Basé sur le protocole SSH (Connexion cryptée + authentification) • Inconvénients Impossible de proposer un accès anonyme
  • 17. 16/06/2016 17 Formation Git Avancé alphorm.com™© Protocole Git • Le protocole Git. Celui-ci est géré par un daemon spécial livré avec Git. • Avantage ☺ Protocole plus rapide • Inconvénients Pas d’authentification, tout le monde peut pousser
  • 18. 16/06/2016 18 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Les différents protocoles disponibles : Protocole local Protocole HTTP Protocole SSH Protocole Git • Prochaine vidéo : Installation de Git sur un serveur
  • 19. 16/06/2016 19 Formation Git Avancé alphorm.com™© Copie d’un projet git sur un serveur Git serveur Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com
  • 20. 16/06/2016 20 Formation Git Avancé alphorm.com™© Plan •Copie du projet •Copie du dépôt nu sur un serveur •Petites installations •Génération des clés publiques SSH •Ajout des clefs SSH au serveur
  • 21. 16/06/2016 21 Formation Git Avancé alphorm.com™© Copie du projet • Pour réaliser l’installation initiale d’un serveur Git, il faut exporter un dépôt existant dans un nouveau dépôt nu $> git clone --bare mon_project mon_projet.git • Equivalent à : $ cp -Rf mon_projet/.git mon_projet.git
  • 22. 16/06/2016 22 Formation Git Avancé alphorm.com™© Copie du dépôt nu sur un serveur • A présent on peut copier notre projet sur notre serveur : $> scp -r mon_projet.git git@git.exemple.com:/opt/git • Et le cloner : $ git clone git@git.exemple.com:/opt/git/mon_projet.git • Git ajoutera automatiquement les droits de groupe en écriture à un dépôt si vous lancez la commande git init avec l’option --shared. $ ssh git@git.exemple.com $ cd /opt/git/mon_projet.git $ git init --bare --shared
  • 23. 16/06/2016 23 Formation Git Avancé alphorm.com™© Petit installation • A partir du protocole SSH, on peut : Soit créer plusieurs utilisateurs et partager le groupe entre ces utilisateurs. Soit créer un utilisateur et partager la clef privée. Soit ajouter plusieurs clef ssh publique et les ajouter au compte git.
  • 24. 16/06/2016 24 Formation Git Avancé alphorm.com™© Génération des clés publiques SSH •Sur les postes utilisateurs : $> ssh-keygen •Le résultat : $> cat ~/.ssh/id_rsa.pub
  • 25. 16/06/2016 25 Formation Git Avancé alphorm.com™© Ajout des clefs SSH au serveur • Sur le serveur : $> sudo adduser git $> su git $> cd $> mkdir .ssh && chmod 700 .ssh $> touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys • Puis ajouter les clefs publiques : $ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
  • 26. 16/06/2016 26 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment Comment copier un repertoire pour l’exporter sur un serveur Les 3 methodes pour partager le serveur avec le protocole SSH Comment créer les clefs SSH • Prochaine vidéo Mise en place du serveur
  • 27. 16/06/2016 27 Formation Git Avancé alphorm.com™© Création d’un projet git sur le serveur Git Serveur Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com
  • 28. 16/06/2016 28 Formation Git Avancé alphorm.com™© Plan •Création du répertoire GIT •Première configuration •Configuration des PC utilisateurs •Restriction du compte ‘git’ sur le serveur
  • 29. 16/06/2016 29 Formation Git Avancé alphorm.com™© Création du répertoire GIT • Maintenant, vous pouvez créer un dépôt vide nu en lançant la commande git init avec l’option --bare, ce qui initialise un dépôt sans répertoire de travail : $> cd /opt/git $> mkdir project.git $> cd project.git $> git init --bare
  • 30. 16/06/2016 30 Formation Git Avancé alphorm.com™© Première configuration • Sur le premier PC : $> cd monproject $> git init $> git add . $> git commit -m 'première validation' $> git remote add origin git@gitserveur:/opt/git/projet.git $> git push origin master
  • 31. 16/06/2016 31 Formation Git Avancé alphorm.com™© Configuration des PC utilisateurs • Sur les autres PC des utilisateurs : $> git clone git@gitserveur:repository/projet.git $> cd projet $> emacs LISEZMOI $> git commit -am 'correction du fichier LISEZMOI' $> git push origin master
  • 32. 16/06/2016 32 Formation Git Avancé alphorm.com™© Restriction du compte ‘git’ sur le serveur • Vous pouvez simplement restreindre l’utilisateur git à des actions Git avec un shell limité appelé git-shell qui est fourni avec Git. $ cat /etc/shells # voir si `git-shell` est déjà déclaré. Sinon... $ which git-shell # s'assurer que git-shell est installé sur le système $ sudo vim /etc/shells # et ajouter le chemin complet vers git-shell $ sudo chsh git # saisir le chemin vers git-shell, souvent : /usr/bin/git-shell • À présent, l’utilisateur git ne peut plus utiliser la connexion SSH que pour pousser et tirer sur des dépôts Git $ ssh git@gitserveur # retourne une erreur
  • 33. 16/06/2016 33 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment mettre en place un serveur collaborative • Prochaine vidéo Démon (Daemon) Git
  • 34. 16/06/2016 34 Formation Git Avancé alphorm.com™© Git daemon et Git HTTP Git Serveur Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com
  • 35. 16/06/2016 35 Formation Git Avancé alphorm.com™© Plan •Git daemon •Script de démarrage automatique •Git HTTP
  • 36. 16/06/2016 36 Formation Git Avancé alphorm.com™© Git Daemon • Pour lancer le démon : $> git daemon --reuseaddr --base-path=/opt/git/ /opt/git/ • Puis dans chaque projet il suffit de créer un fichier : $> touch git-daemon-export-ok
  • 37. 16/06/2016 37 Formation Git Avancé alphorm.com™© Script de démarrage automatique • Avec Ubuntu, il est possible de créer un script de démarrage automatique : $> emacs /etc/event.d/local-git-daemon • On inscrit le daemon $> initctl start local-git-daemon start on startup stop on shutdown exec /usr/bin/git daemon --user=git --group=git --reuseaddr --base-path=/opt/git/ /opt/git/ respawn
  • 38. 16/06/2016 38 Formation Git Avancé alphorm.com™© Git HTTP • Nous avons à présent un accès authentifié par SSH et un accès non authentifié par git://, mais il existe aussi un protocole qui peut faire les deux à la fois. • La configuration d’un HTTP intelligent revient simplement à activer sur le serveur un script CGI livré avec Git qui s’appelle git-http-backend. • Nous utiliserons Apache2 comme serveur HTTP/CGI
  • 39. 16/06/2016 39 Formation Git Avancé alphorm.com™© Git HTTP • Sur Ubuntu / Debian, installons le apache à partir des paquets : $ sudo apt-get install apache2 apache2-utils $ a2enmod cgi alias env • Ensuite, nous devons ajouter quelques lignes à la configuration d’Apache pour qu’il lance git-http-backend SetEnv GIT_PROJECT_ROOT /opt/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
  • 40. 16/06/2016 40 Formation Git Avancé alphorm.com™© Git HTTP • Puis nous allons indiquer à Apache les repertoires de travail : • Enfin, nous n’avons plus qu’à créer le fichier de mot de passe : $> htdigest -c /opt/git/.htpasswd "Git Access" eferrari <Directory "/usr/lib/git-core*"> Options ExecCGI Indexes Order allow,deny Allow from all Require all granted </Directory> <LocationMatch "^/git/.*/git-receive-pack$"> AuthType Basic AuthName "Git Access" AuthUserFile /opt/git/.htpasswd Require valid-user </LocationMatch>
  • 41. 16/06/2016 41 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment créer deux nouveaux types de serveur GIT • Prochaine vidéo: GitWeb
  • 42. 16/06/2016 42 Formation Git Avancé alphorm.com™© GitWeb Git sur le serveur Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com
  • 43. 16/06/2016 43 Formation Git Avancé alphorm.com™© Plan •GitWeb •Démarrage •Hébergement permanent
  • 44. 16/06/2016 44 Formation Git Avancé alphorm.com™© GitWeb • Après avoir réglé les accès de base en lecture/écriture et en lecture seule pour vos projets, vous souhaiterez peut-être mettre en place une interface web simple de visualisation. • Git fournit un script CGI appelé GitWeb qui est souvent utilisé à cette fin.
  • 45. 16/06/2016 45 Formation Git Avancé alphorm.com™© GitWeb
  • 46. 16/06/2016 46 Formation Git Avancé alphorm.com™© Démarrage • Pour démarer $> git instaweb --httpd=webrick • Pour arrêter $> git instaweb --httpd=webrick --stop
  • 47. 16/06/2016 47 Formation Git Avancé alphorm.com™© Hébergement permanent • Si vous souhaitez fournir l’interface web en permanence sur le serveur pour votre équipe ou pour un projet open source que vous hébergez, il sera nécessaire d’installer le script CGI pour qu’il soit appelé par votre serveur web. $ git clone git://git.kernel.org/pub/scm/git/git.git $ cd git/ $ make GITWEB_PROJECTROOT="/opt/git" prefix=/usr gitweb […] $ sudo cp -Rf gitweb /var/www/
  • 48. 16/06/2016 48 Formation Git Avancé alphorm.com™© Hébergement permanent • Puis il suffit de configurer apache : <VirtualHost *:80> ServerName gitserver DocumentRoot /var/www/gitweb <Directory /var/www/gitweb> Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch AllowOverride All order allow,deny Allow from all AddHandler cgi-script cgi DirectoryIndex gitweb.cgi </Directory> </VirtualHost>
  • 49. 16/06/2016 49 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment créer un serveur web pour avoir une overview sur un projet Git. • Prochaine vidéo: GitLab
  • 50. 16/06/2016 50 Formation Git Avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com GitLab Git sur le serveur
  • 51. 16/06/2016 51 Formation Git Avancé alphorm.com™© Plan •GitLab •Mise en place •Configuration des utilisateurs •Configuration des groupes
  • 52. 16/06/2016 52 Formation Git Avancé alphorm.com™© GitLab • GitWeb reste tout de même simpliste. • Si vous cherchez un serveur Git plus moderne et complet, il existe quelques solutions libres pertinentes. • Comme GitLab est un des plus populaires, nous allons prendre son installation et son utilisation comme exemple. • Cette solution est plus complexe que l’option GitWeb et demandera indubitablement plus de maintenance, mais elle est aussi plus complète.
  • 53. 16/06/2016 53 Formation Git Avancé alphorm.com™© Mise en place • GitLab est une application web reposant sur une base de données. • L’installation est très bien documentée et supportée. • Nous pouvons installer GitLab de plusieurs façons : Installation manuelle à partir des sources ou de packages. Installation avec une image virtuelle Installation « dans le cloud »
  • 54. 16/06/2016 54 Formation Git Avancé alphorm.com™© Configuration des utilisateurs
  • 55. 16/06/2016 55 Formation Git Avancé alphorm.com™© Configuration des groupes
  • 56. 16/06/2016 56 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment utiliser GitLab • Prochain Chapitre : Git distribué
  • 57. 16/06/2016 57 Formation Git Avancé alphorm.com™© Développements distribués Git distribué Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com
  • 58. 16/06/2016 58 Formation Git Avancé alphorm.com™© Plan •Développements distribués •Gestion centralisée •Mode du gestionnaire d’intégration •Mode dictateur et ses lieutenants
  • 59. 16/06/2016 59 Formation Git Avancé alphorm.com™© Introduction • Dans ce chapitre, nous allons découvrir comment travailler dans un environnement distribué avec Git en tant que contributeur ou comme intégrateur. • Nous allons voir une manière de contribuer efficacement à un projet et de rendre la vie plus facile au mainteneur.
  • 60. 16/06/2016 60 Formation Git Avancé alphorm.com™© Développements distribués • La nature distribuée de Git permet une bien plus grande flexibilité dans la manière dont les développeurs collaborent sur un projet. • Dans Git, tout développeur est potentiellement un nœud et un concentrateur • Chaque développeur peut à la fois contribuer du code vers les autres dépôts et maintenir un dépôt public sur lequel d’autres vont baser leur travail et auquel ils vont contribuer.
  • 61. 16/06/2016 61 Formation Git Avancé alphorm.com™© Gestion centralisée
  • 62. 16/06/2016 62 Formation Git Avancé alphorm.com™© Mode du gestionnaire d’intégration
  • 63. 16/06/2016 3 Formation Git Avancé alphorm.com™© Présentation du formateur Edouard FERRARI • contact@ferrari.wf • Développeur full stack chez Summview • Mission de conseil, d’architecture et de migration • Mes références : LinkedIn : https://fr.linkedin.com/in/edouardferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari Github : https://github.com/didouard
  • 64. 16/06/2016 3 Formation Git Avancé alphorm.com™© Présentation du formateur Edouard FERRARI • contact@ferrari.wf • Développeur full stack chez Summview • Mission de conseil, d’architecture et de migration • Mes références : LinkedIn : https://fr.linkedin.com/in/edouardferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari Github : https://github.com/didouard
  • 65. 16/06/2016 3 Formation Git Avancé alphorm.com™© Présentation du formateur Edouard FERRARI • contact@ferrari.wf • Développeur full stack chez Summview • Mission de conseil, d’architecture et de migration • Mes références : LinkedIn : https://fr.linkedin.com/in/edouardferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari Github : https://github.com/didouard
  • 66. 16/06/2016 3 Formation Git Avancé alphorm.com™© Présentation du formateur Edouard FERRARI • contact@ferrari.wf • Développeur full stack chez Summview • Mission de conseil, d’architecture et de migration • Mes références : LinkedIn : https://fr.linkedin.com/in/edouardferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari Github : https://github.com/didouard
  • 67. 16/06/2016 3 Formation Git Avancé alphorm.com™© Présentation du formateur Edouard FERRARI • contact@ferrari.wf • Développeur full stack chez Summview • Mission de conseil, d’architecture et de migration • Mes références : LinkedIn : https://fr.linkedin.com/in/edouardferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari Github : https://github.com/didouard
  • 68. 16/06/2016 3 Formation Git Avancé alphorm.com™© Présentation du formateur Edouard FERRARI • contact@ferrari.wf • Développeur full stack chez Summview • Mission de conseil, d’architecture et de migration • Mes références : LinkedIn : https://fr.linkedin.com/in/edouardferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari Github : https://github.com/didouard
  • 69. 16/06/2016 69 Formation Git Avancé alphorm.com™© Un sujet = une validation • Ne développez pas pendant un week-end entier en traitant de 5 problèmes différents. • Assurez-vous de faire de chaque validation une modification logiquement atomique. • Faites une branche, avec 5 validations différentes. • Cette approche simplifie aussi le retrait ou l’inversion ultérieure d’une modification en cas de besoin.
  • 70. 16/06/2016 70 Formation Git Avancé alphorm.com™© Le message de validation • S’habituer à écrire des messages de validation de qualité facilite grandement l’emploi et la collaboration avec Git. • En règle générale, les messages doivent débuter par une ligne unique d’au plus 50 caractères décrivant concisément la modification, suivie d’une ligne vide, suivie d’une explication plus détaillée. • Le projet Git exige que l’explication détaillée inclue la motivation de la modification en contrastant le nouveau comportement par rapport à l’ancien. • Une bonne règle consiste aussi à utiliser le présent de l’impératif ou des verbes substantivés dans le message: « Ajoute des tests pour » ou « Ajout de tests pour ».
  • 71. 16/06/2016 71 Formation Git Avancé alphorm.com™© Le message de validation • Voici ci-dessous un modèle écrit par Tim Pope :
  • 72. 16/06/2016 72 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Quelles sont les « best practice » pour faire des validations • Prochaine vidéo : Contributation à un projet
  • 73. 16/06/2016 73 Formation Git Avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com Le cas d’une petite équipe Git distribué
  • 74. 16/06/2016 74 Formation Git Avancé alphorm.com™© Plan •Introduction •Le travail à deux
  • 75. 16/06/2016 75 Formation Git Avancé alphorm.com™© Introduction • Chaque projet github est différent, il est difficile d’indiqué une méthode globale de contribution à un projet. • On peut décrire 3 grandes variables : La taille du corps des contributeurs Le mode de gestion utilisé pour le projet La gestion des accès en écriture
  • 76. 16/06/2016 76 Formation Git Avancé alphorm.com™© Le travail à deux •Imaginons deux collaborateurs : John Jessica
  • 77. 16/06/2016 77 Formation Git Avancé alphorm.com™© Le travail à deux • Historique divergent de John
  • 78. 16/06/2016 78 Formation Git Avancé alphorm.com™© Le travail à deux • Le dépôt de John après la fusion d’origine/master.
  • 79. 16/06/2016 79 Formation Git Avancé alphorm.com™© Le travail à deux • Le dépôt de John après la fusion d’origine/master.
  • 80. 16/06/2016 80 Formation Git Avancé alphorm.com™© Le travail à deux • La branche thématique de Jessica
  • 81. 16/06/2016 81 Formation Git Avancé alphorm.com™© Le travail à deux • L’historique de Jessica après avoir récupéré les modifications de John.
  • 82. 16/06/2016 82 Formation Git Avancé alphorm.com™© Le travail à deux • L’historique de Jessica après avoir fusionné les modifications de John.
  • 83. 16/06/2016 83 Formation Git Avancé alphorm.com™© Le travail à deux •En résumé
  • 84. 16/06/2016 84 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu ensemble un des schémas les plus simples. • Prochaines vidéo : Contribution à un projet : Équipe privée importante
  • 85. 16/06/2016 85 Formation Git Avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com Équipe privée importante Git distribué
  • 86. 16/06/2016 86 Formation Git Avancé alphorm.com™© Plan • Équipe privée importante
  • 87. 16/06/2016 87 Formation Git Avancé alphorm.com™© Le travail à deux • Imaginons que John et Jessica travaillent ensemble sur une première fonctionnalité. • Tandis que Jessica et Josie travaillent sur une autre. • Dans ce cas, l’entreprise utilise un mode d’opération de type « gestionnaire d’intégration » où le travail des groupes est intégré par certains ingénieurs, et la branche master du dépôt principal ne peut être mise à jour que par ces ingénieurs. • Dans ce scénario, tout le travail est validé dans des branches orientées équipe, et tiré plus tard par les intégrateurs.
  • 88. 16/06/2016 88 Formation Git Avancé alphorm.com™© Le travail à deux • Historique initial de Jessica
  • 89. 16/06/2016 4 Formation Git Avancé alphorm.com™© Mes formations • Cursus complet sur NodeJS • Formation, les fondamentaux sur Git
  • 90. 16/06/2016 90 Formation Git Avancé alphorm.com™© Le travail à deux • L’historique de Jessica après la fusion de ses deux branches thématiques.
  • 91. 16/06/2016 91 Formation Git Avancé alphorm.com™© Le travail à deux • En résumé :
  • 92. 16/06/2016 92 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu ensemble un des schémas les plus utilisé en entreprise. • De nombreux groupes basculent vers Git du fait de cette capacité à gérer plusieurs équipes travaillant en parallèle. • Prochaine vidéo : Contribution à un projet : Projet public via courriel
  • 93. 16/06/2016 93 Formation Git Avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com Projet public dupliqué Git distribué
  • 94. 16/06/2016 94 Formation Git Avancé alphorm.com™© Plan •Introduction •Projet public dupliqué
  • 95. 16/06/2016 95 Formation Git Avancé alphorm.com™© Introduction • Contribuer à un projet public est assez différent. Il faut présenter le travail au mainteneur. • Vu que le projet est public, vous n’avez pas la possibilité de mettre à jour directement des branches du projet. • De nombreux sites proposent cette méthode (dont GitHub, BitBucket, Google Code, repo.or.cz).
  • 96. 16/06/2016 96 Formation Git Avancé alphorm.com™© Le travail à deux • Historique initial des commits avec les modifications de fonctionB.
  • 97. 16/06/2016 97 Formation Git Avancé alphorm.com™© Le travail à deux • Historique des validations après le travail sur fonctionA.
  • 98. 16/06/2016 98 Formation Git Avancé alphorm.com™© Le travail à deux • Historique des validations après le travail sur fonctionBv2.
  • 99. 16/06/2016 99 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment travailler sur un projet public. • Prochaine vidéo : Contribution à un projet : Projet public via email
  • 100. 16/06/2016 100 Formation Git Avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com Projet public via email Git distribué
  • 101. 16/06/2016 101 Formation Git Avancé alphorm.com™© Plan •Création d’un patch •Envoyer un patch via Email
  • 102. 16/06/2016 102 Formation Git Avancé alphorm.com™© Création d’un patch • Il est possible de créer un export d’une validation grâce au patch : $> git format-patch –M origin/master
  • 103. 16/06/2016 103 Formation Git Avancé alphorm.com™© Envoyer un patch via email • Vous pouvez configurer gmail pour envoyer ces patchs, dans ~/.gitconfig : • Puis vous pouvez envoyer les patchs dans votre répertoire ‘Drafts’ : cat *.patch | git imap-send • Vous retrouverez vos patchs dans votre Gmail, dans le répertoire ‘Drafts’. Il vous suffira d’ajouter le destinataire et d’envoyer l’email.
  • 104. 16/06/2016 104 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment créer des patchs et les envoyer par email. • Prochaine vidéo : Contribution à un projet : Appliquer des patches
  • 105. 16/06/2016 105 Formation Git Avancé alphorm.com™© Appliquer des patchs Git distribué Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com
  • 106. 16/06/2016 106 Formation Git Avancé alphorm.com™© Plan • Travail dans des branches thématiques • Appliquer des patchs • Application d’un patch avec apply • Application d’un patch avec am • Vérification des branches distantes
  • 107. 16/06/2016 107 Formation Git Avancé alphorm.com™© Travail dans des branches thématiques • Quand vous vous apprêtez à intégrer des contributions, une bonne idée consiste à les essayer d’abord dans une branche thématique. • Par exemple vous pouvez créer une branche thématique avec les initiaux du développeur suivi du nom de son travail : $> git checkout –b jp/js_client
  • 108. 16/06/2016 108 Formation Git Avancé alphorm.com™© Appliquer des patches • Il existe deux moyens d’appliquer un patch reçu par mail : $> git apply $> git am
  • 109. 16/06/2016 109 Formation Git Avancé alphorm.com™© Application d’un patch avec apply • Si vous avez reçu le patch de quelqu’un qui l’a généré avec la commande git diff ou diff Unix, vous pouvez l’appliquer avec la commande git apply. $> git apply patch-js-client.patch • Les fichiers dans votre copie de travail sont modifiés. • C’est quasiment identique à la commande patch -p1 qui applique directement les patchs. • Vous pouvez aussi utiliser git apply pour voir si un patch s’applique proprement avant de réellement l’appliquer : $> git apply --check patch-js-client.patch
  • 110. 16/06/2016 110 Formation Git Avancé alphorm.com™© Application d’un patch avec am • Si le contributeur est un utilisateur de Git qui a été assez gentil d’utiliser la commande format-patch pour générer ses patchs, le patch contient alors déjà l’information d’auteur et le message de validation : $> git am patch-js-client.patch • Il est possible que le patch ne s’applique pas : • Comme avec git rebase, on modifie le fichier, on git add et git am -- continue
  • 111. 16/06/2016 111 Formation Git Avancé alphorm.com™© Vérification des branches distantes • Si la contribution à été fournie par un utilisateur de qui a mis en place son propre dépôt public, vous pouvez ajouter en tant que dépôt distant et réaliser les fusions localement. $ git remote add jessica git://github.com/jessica/monproject.git $ git fetch jessica $ git checkout -b jsclient jessica/js-client
  • 112. 16/06/2016 112 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu dans cette vidéo : Comment appliquer des patches Comment ajouter des branches distantes et ajouter leur modification • Prochaine vidéo : La conclusion
  • 113. 16/06/2016 113 Formation Git Avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : edouard.ferrari@gmail.com Conclusion
  • 114. 16/06/2016 114 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons vu comment mettre en place un serveur GIT : Par accès direct Par SSH Par protocole git Par HTTP • Différent serveur HTTP GitWeb GitLab
  • 115. 16/06/2016 115 Formation Git Avancé alphorm.com™© Ce qu’on a couvert • Nous avons différentes méthodes de travail avec Git Pour des petits groupes de travail Pour des entreprises Pour des grands groupes de travail • Nous avons aussi vu comment contribuer et faire partager son travail dans GIT
  • 116. 16/06/2016 116 Formation Git Avancé alphorm.com™© Avez-vous des Questions / Remarques / Commentaires ?
  • 117. 16/06/2016 117 Formation Git Avancé alphorm.com™© À bientôt ☺ Keep in touch ! E-mail : edouard@ferrari.wf Linkedin : https://fr.linkedin.com/in/edouardferrari Twitter : https://twitter.com/edouard_ferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari