dimanche, 17 avril 2016

Ma méthode de travail avec Git et GitHub

Cet article est une traduction de Documenting my git/GitHub worklow écrit par Karl Dubost. Karl participe au projet WebCompat pour veiller à ce que les sites web fonctionnent de façon égale sur les différents navigateurs et ce billet est l’occasion de présenter la méthode de travail qu’il utilise avec Git et GitHub. Les méthodes vues ici pourront être utile pour contribuer à d’autres projets, n’hésitez pas à guetter les fichiers CONTRIBUTING.md des différents dépôts. ;)


Dans le cadre de webcompat.com, nous développons le projet à l’aide, entre autres, de l’infrastructure offerte par GitHub. Nous avons ainsi un dépôt webcompat.com. N’hésitez pas à contribuer.

Je ne suis pas certain de suivre la même méthode que les contributeurs principaux, mais j’ai pensé que ce serait utile de documenter la façon dont je contribue. Cet article pourra aider les débutants voire m’être utile à l’avenir.

Commençons avec un rapide brouillon.

Schéma du workflow

Le projet est hébergé sur : https://github.com/webcompat/webcompat.com/

Pour commencer je crée un fork (N.D.T. d’aucuns pourront utiliser « fourche ») grâce au bouton situé en haut à droite du site. Créer un fork avec GitHub

Ce fork est désormais créé :

https://github.com/karlcow/webcompat.com/

Désormais, je peux créer un clone local de ce dépôt sur mon ordinateur grâce à la commande suivante :

git clone git@github.com:karlcow/webcompat.com.git

Je clone ce fork plutôt que le projet original afin de pouvoir travailler en local et bidouiller différentes branches, les envoyer vers GitHub sur mon fork sans risquer de gêner qui que ce soit. Quand je souhaite mêler mon code à celui des autres, j’envoie alors des pull requests vers le dépôt principal.

Une fois que c’est fait, je dispose d’une version à date du dépôt et je peux commencer à travailler sur une issue. Prenons par exemple l’issue 902 (simplement pour l’exemple). Je crée une nouvelle branche sur mon clone local (voir la section suivante pour la mise à jour de mon fork local).

git checkout -b 902/1

Pour nommer les branches, j’ai « emprunté » le protocole de Mike :

nom_de_branche  = numéro_issue/version_de_branche

Ainsi, lorsque je ne suis pas satisfait de mon travail, mais que je souhaite conserver un certain historique, je peux créer une deuxième branche pour la même issue avec la commande git checkout --b 902/2 et ainsi de suite. Une fois satisfait, je peux choisir d’envoyer une pull request depuis la meilleure branche.

git commit -m ’#902 upgrade GitHub-Flask to 3.1.1’ 
requirements.txt
git commit -m ’#902 upgrade Flask-Limiter to 2.2.0’
requirements.txt
# etc

Une fois la journée finie, quand je souhaite passer à autre chose ou simplement partager le code, j’envoie le contenu de mon dépôt local vers mon fork hébergé sur GitHub.

git push karlcow 902/1

Vous aurez remarqué que je n’ai pas utilisé git push origin 902/1, j’explique après la façon dont j’utilise des alias pour les dépôts.

Une fois mes commits terminés, je peux créer une pull request depuis karlcow:902/1 vers webcompat:master :

https://github.com/webcompat/webcompat.com/pull/920

Créer une pull request avec GitHub

J’utilise ce message :

fix #902 - 902/1 Update python module dependencies in the project.

et demande à Mike d’effectuer la revue du code

r? @miketaylr

Ensuite, nous discutons, rejetons la modification, la modifions ou la fusionnons.

Les alias de dépôt

Généralement, GitHub utilise les termes suivants :

  • upstream pour désigner le dépôt original
  • origin pour désigner votre propre fork

Cela était source de confusion et j’ai donc choisi une autre approche :

git remote rename origin karlcow
git remote rename upstream webcompat

Cela devient beaucoup plus simple lorsque je mets à jour le projet ou que je pousse mes commits. Je sais exactement où ils vont.

# On télécharge des choses depuis le dépôt webcompat.com sur github.com
git fetch webcompat
# Je pousse ma branche vers mon propre fork sur github.com
git push karlcow nom_branche

Mettre à jour mon fork local

À chaque fois, lorsque j’ai terminé de travailler sur une branche ou que j’ai fini ma session de travail et que tous les commits ont été effectués, je synchronise la branche master de mon clone (local) avec la branche master de webcompat.com Voici le vocabulaire GitHub que j’utilise généralement :

git checkout master
git fetch upstream
git merge upstream/master

Transposé avec mes alias, cela donne :

git checkout master
git fetch webcompat
git merge webcompat/master

Mon projet est désormais à jour et je peux créer une nouvelle branche pour la prochaine issue sur laquelle je travaillerai.

Faire le ménage entre les forks locaux et distants

Je crée des branches locales sur ~/code/webcompat.com et des branches distantes sur https://github.com/karlcow/webcompat.com/, mieux vaut les supprimer au fur et à mesure pour éviter d’avoir une énorme liste de branches avec :

git branch -a

Par exemple, si je la lance maintenant, voici le résultat que j’obtiens :

git branch -a
  264/1
  396/1
* 710/3
  713/1
  master
  r929/958
  remotes/karlcow/264/1
  remotes/karlcow/702/1
  remotes/karlcow/710/1
  remotes/karlcow/710/3
  remotes/karlcow/HEAD -> karlcow/master
  remotes/karlcow/master
  remotes/webcompat/gh-pages
  remotes/webcompat/issues/741/2
  remotes/webcompat/letmespamyou
  remotes/webcompat/master
  remotes/webcompat/searchwork
  remotes/webcompat/staging
  remotes/webcompat/staticlabels
  remotes/webcompat/webpack

Pour faire le ménage, j’utiliserai les commandes suivantes :

#  Suppression locale (sur l’ordinateur)
git branch -d 12/1 245/1

# Suppression distante (sur mon dépôt GitHub)
git push karlcow --delete 12/1
git push karlcow --delete 245/1

Otsukare !

Merci Karl d’avoir permis cette traduction !

mardi, 29 mars 2016

Aide aux développeurs pour les changements à venir dans le développement de modules

Cet article est une traduction de la communauté Mozfr de Developer support for changes in add-on development. Comme vous en avez peut-être entendu parler, de nombreux changements surviennent dans le développement des modules complémentaires. Fin 2017, les WebExtensions seront utilisées par Firefox  […]

Lire la suite

samedi, 5 mars 2016

Proposition de spécification pour l'API WebVR 1.0

WebVR Showcase

Cet article est une traduction de Introducing the WebVR 1.0 API Proposal écrit par Casey Yee et publié sur Hacks.

Merci beaucoup à Ilphrin et Thegennok pour la traduction ! Merci goofy pour la relecture :)


Lire la suite

samedi, 27 février 2016

La propriété background-clip et ses cas d'utilisation

Le modèle de boites

Cet article est une traduction de The background-clip Property and its Use Cases, écrit par Ana Tudor et publié sur CSS Tricks. Ana Tudor réalise de nombreuses démos sur CSS sur CodePen et via Twitter et cet article est l’occasion d’en dire un peu plus sur la propriété background-clip. Merci beaucoup à marine, Banban, Thegennok et Ilphrin pour la traduction et à Théo et goofy pour la relecture.

Lire la suite

samedi, 23 janvier 2016

Firefox et l'API Web Speech

Page about:Webspeech dans la vie conjugale

Ce billet est une traduction de l’article de Chris David Mills : Firefox and the WebSpeech API. Bien que la reconnaissance vocale ne soit pas encore tout à fait opérationnelle dans Firefox, n’hésitez pas à décortiquer les démos ! Merci à goofy pour la relecture :)

Lire la suite

samedi, 16 janvier 2016

Du nouveau pour les outils de développement dans Firefox

venkman-opt.png

Ce billet est une traduction du billet de Patrick Brosset : Revisiting Firefox’s DevTools. Merci à marine et Banban pour la traduction et à Maxime pour celle des articles MDN sur les outils de développement !

Lire la suite

samedi, 26 décembre 2015

Hors ligne et plus encore

Ce billet est une traduction du billet de Salva, Beyond Offline. Cet article est la suite du billet précédent sur les service workers. Merci à marine et Thegennok pour la traduction et à goofy pour la relecture !

Lire la suite

Recettes hors connexion pour les service workers

Page about:serviceworkers dans Firefox Developer Edition

Ce billet est une traduction du billet de David Walsh, Offline Recipes for Service Workers. Un grand merci à marine, Banban, Thegennok, LaPalice pour la traduction et à goofy pour la relecture. Bonne lecture et bonnes fêtes !

Lire la suite

jeudi, 17 décembre 2015

Enfin, on peut compiler en WebAssembly !

mamie fait du webAssembly

Ce billet est une traduction du billet publié par Alon Zakai sur hacks.mozilla.org.

Lire la suite

Les utilisateurs de Firefox sur Windows peuvent désormais regarder Netflix en HTML5

Ce billet est une traduction du billet en anglais paru sur le blog de Mozilla.

Lire la suite

lundi, 24 août 2015

ES6 en détails : l'avenir

typedarrays.png

Suite et fin de la la traduction, qui clôture la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à goofy pour la relecture :) !


Lire la suite

samedi, 22 août 2015

ES6 en détails : les modules

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à Banban et Ilphrin pour la traduction et merci à goofy pour la relecture :) !


Lire la suite

jeudi, 13 août 2015

ES6 en détails : les sous-classes et l'héritage

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à Banban et Marine pour la traduction et merci à goofy pour la relecture :) !


Lire la suite

vendredi, 7 août 2015

ES6 en détails : let et const

bogue.jpg

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à Banban et goofy pour la traduction et la relecture :) !


Lire la suite

vendredi, 31 juillet 2015

ES6 en détails : les classes

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à Jérémie et Banban pour la traduction et à goofy pour la relecture :) !


Lire la suite

dimanche, 26 juillet 2015

MDN : dix ans d'évolution

MDN-10years_twitter-avatar_400x400px.png

MDN fête ses 10 ans cette semaine. Ce billet, traduction du billet de Janet Swisher, est l’occasion de retracer l’historique de MDN et d’expliquer l’orientation du projet aujourd’hui.


Lire la suite

vendredi, 24 juillet 2015

ES6 en détails : les proxies

power-plant.jpg

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à Ilphrin et Banban pour la traduction et la relecture !


Lire la suite

jeudi, 16 juillet 2015

ES6 en détails : les générateurs, la suite

img1.png

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à goofy et Banban pour la relecture !


Lire la suite

mardi, 7 juillet 2015

ES6 en détails : les collections

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.

Merci à Marine, Banban, Ilphrin et goofy pour la traduction et la relecture !


Lire la suite

dimanche, 21 juin 2015

ES6 en détails : utiliser ES6 dès aujourd'hui avec Babel et Broccoli

screenshot.png

Suite de la traduction, qui continue la série d’articles de Jason Orendorff. L’article original se trouve ici. Vous pouvez retrouver les différents articles de la série grâce aux mots-clefs.


Lire la suite

- page 1 de 3