Skip to content
Pierre-Alexandre Kofron edited this page Oct 27, 2013 · 5 revisions

Notre projet LO23 est complexe à versionner du fait que nous sommes (potentiellement) 24 développeurs. Pour éviter une catastrophe, envoyer le code sur le dépôt maître ne sera pas aussi simple qu’un git push. Voilà un exemple de Git Flow fiable et résilient.

Dépôts git

Image : TO_INSERT

La première étape à comprendre est l’interaction entre les différents dépôts :

  • Un dépôt maître : LO23/BitMusic
  • Des dépôts esclaves : les dépôts de chacun, qui sont des forks du dépôt maître.

Le dépôt maître

Le dépôt Git (éventuellement sous GitHub) sur lequel est hébergé le code : https://github.com/LO23/BitMusic.git

Les dépôts esclaves

Les dépôts des développeurs. Ce sont des forks du dépôt principal. Un dépôt esclave peut récupérer le code du dépôt maître (pull) mais ne peut pas envoyer directement son code (push).

Envoyer ses modifications locales

Pour envoyer des modifications locales, il faudra faire un pull request dans github, puis qu’un admin merge le pull request dans le dépôt maître. Les admins seront les responsables développements et qualité et seront donc les garants de l'intégrité / de la perfection du code du dépôt maître! Attention donc à votre responsabilité et à ce que vous validez !

Récupérer des modifs d’un autre développeur

Il est aussi possible de récupérer les modifications locales d’un autre développeur via un "git pull".

Installer un environnement de dev local

Créer un compte github

Allez sur github.com.

Créer son dépôt perso


ATTENTION : la connexion de git à internet à l'UTC risque de nécessiter une configuration manuelle du proxy (à chaque passage UTC<=>home ...), pour voir comment automatiser ce processus, voir le chapitre "Configuration Proxy" à la fin du doc.


Pour copier le dépôt maître sur son profil local, il suffit d’aller sur github.com/LO23/BitMusic, puis de cliquer sur le bouton ‘fork’. Pour pouvoir récupérer les motifs envoyées par les autres développeurs sur le dépôt maître, il faut ajouter dans les remote le dépôt maître :

git remote add LO23 <url github du projet>

Très exactement:

git remote add LO23 https://github.com/LO23/BitMusic.git

Ne pas mettre votre fork ici mais bien LO23/BitMusic.git !

Pour récupérer les modifications il suffit de faire

git pull LO23 master

Créer une branche pour travailler

Il est conseillé de créer une branche par bugfix/feature dans son dépôt local et de ne faire aucune modifications dans la branche master, elle servira uniquement à mettre a jour le dépôt local. (Votre branche master est celle que vous avez forké du dépôt maître).

git branch <nouvelleBranche> # Créer une branche
git checkout <nouvelleBranche> # Aller dans une branche
git checkout –b <nouvelleBranche> # equivalent des 2 commandes précédentes
git push origin <maBranche> # envoyer sa branche sur github, à partir de là vous pourrez faire une pull request

Faire un pull-request

Pour faire un pull-request et ainsi signaler au reste des développeurs que nos modifications sont prêtes a être intégrées dans la version "production", il suffit d’aller sur la page github du projet (http://github.com/LO23/BitMusic) et de cliquer sur pull request. Il est alors possible de choisir une branche à envoyer et de mettre un commentaire. Attention avant de faire un pull request pensez toujours être à jour, voir la section Manager votre dépôt.

Manager votre dépôt


ATTENTION : la connexion de git à internet à l'UTC risque de necessiter une configuration manuelle du proxy (à chaque passage UTC<=>home ...), pour voir comment automatiser ce processus, voir le chapitre "Configuration Proxy" à la fin du doc.


Mettre à jour son dépôt :

git pull LO23 master

Aller dans une branche :

git checkout <maBranche>

Mettre à jour une branche :

git merge master # si la branche master est a jour
git pull LO23 master # sinon, mais déconseillé

Envoyer ses modifs sur github (dépôt personnel, c'est à dire son fork)

git push origin <mabranch> # envoie seulement les commit de la branche choisie
git push # envoie toutes les commits de toutes les branches

#EN RÉSUMÉ:

  1. Fork
  2. git add
  3. Mettre à jour son dépôt
  4. Créer une branche et coder la feature
  5. Envoyer ses modifs sur github SUR SON FORK ( git push origin maBranche ## avec origin = github.com/MonLogin/BitMusic! Pour checker ses remote : git remote -v)
  6. Faire un pull request depuis github
  7. GOTO 3!

Vous devez avoir deux remote :

LO23 github.com/LO23/BitMusic.git origin github.com/MonLogin/BitMusic.git

Les push sont à faire sur VOS forks pour pouvoir faire une pull request sur LO23/BitMusic.git !

Attention : refaire un git push remote maBranche met à jour une PR déjà ouverte avec cette branche!

Configuration Proxy

Pour (quasi-)automatiser la configuration du proxy, on va utiliser les alias. pour ça utilisez la commande "vim ~/.gitconfig" et appuyez sur la touche "i". sous le tag "[alias]" ajoutez les alias suivants :

[utc = config --global http.proxy http://proxyweb.utc.fr:3128 noproxy = config --global --unset http.proxy]

ce qui donne globalement au minimum ceci :

[[alias] utc = config --global http.proxy http://proxyweb.utc.fr:3128 noproxy = config --global --unset http.proxy]

pour quitter vim en enregistrant les modifications faites échap puis tapez ":x" et entrée. voilà, maintenant en tapant simplement "git utc" vous indiquez à git d'utiliser le proxy de l'UTC et en tapant "git noproxy" vous indiquez à git de ne pas utiliser de proxy. Like a Sir

Sources

http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

Merci à payutc pour la base de ce tutoriel (https://github.com/payutc)