Kommunauty
Connexion
Inscription

Le subversionning: Github

le 20 juillet 2014 • Programmation • par mandalorien

Vous êtes développeur? Vous avez crée un projet avec une équipe (de développeurs, graphistes, etc.) ?

Problème: le développement du projet n'est pas cohérent ? Voilà comment s'organiser !

Dans un premier temps , il faut comprendre en quoi consiste le subversionning. Quelques exemples: Github et Sourceforge sont des sites web permettant le subversion.

Le subversion consiste en la gestion des versions de votre projet. En effet, c'est un programme qui peut se présenter sous la forme d'un logiciel (Ex: Subversion) ou encore d'une application web (Telle que Github ou Sourceforge comme déjà dit) et qui permet de gérer l'historique des modifications apportées à votre projet.

Montré comme tel, il parrait plus simple de tenir un changelog plutôt que de s'encombrer d'un programme. En réalité, le subversionning est une méthode de programmation bien plus évoluée que ça puisqu'elle permet de récupérer une version donnée du projet ou bien même une modification partielle de celui-ci.

Si le concept vous plaît, notez que Github est beaucoup plus complet qu'un simple logiciel de gestion des versions.

En effet, imaginons que vous développiez un projet en équipe. Votre projet sort en version stable mais il est sujet à de constantes évolutions que ce soit avec l'ajout de nouvelles fonctionnalités, la suppression des bugs, etc. Pour cela, vous devez modifier certains fichiers de votre version. En temps normal, vous ne pouvez pas vous souvenir de toutes les modifications effectuées sur le code même si vous l'indiquez clairement sur votre changelog, ça reste flou sans parler du temps supplémentaire que prend son maintient à jour.

Alors pour vous ça ira puisque le(s) fichier(s) que vous avez modifié est/sont encore ouvert(s), mais pour votre collègue, ce n'est pas aussi simple surtout si vous lui avez transféré le dossier comme ça en vrac. Et là vous pensez...

Mince le projet ne fonctionne plus !

Nous en revenons au fait d'utiliser Github. Dans les historiques de commit (upload de vos modifications vers le dossier Github de votre projet), le(s) fichier(s) que vous avez édité apparaissent en différentes couleurs selon l'objet de la modification (Ajout, suppression, modification).

Une image rend toujours mieux que des explications:

Vous l'aurez compris, les lignes rouges correspondent à des suppressions ou modifications tandis que les lignes vertes correspondent aux ajouts .

Ainsi le travail à plusieurs sur un même projet est non seulement plus organisé, mais il permet également de corriger les éventuelles erreurs que vous n'auriez pas vu.


Attention: il y a aussi quelques inconvénients à utiliser Github. Par exemple, pour que l'accès à votre espace soit restreint uniquement à votre équipe (Et donc masqué au public), vous devrez obligatoirement payer.

Autre inconvénient, tous les jours vous devrez télécharger les mises à jour de votre projet sur votre ordinateur depuis Github. En effet, pendant que vous êtes absent et qu'un de vos collègue modifie le projet, le projet ne se met pas à jour tout seul chez vous.

Enfin même si elle est rare, la modification simultanée d'un même fichier reste un problème auquel aucune solution n'a vraiment été trouvée. La meilleur solution reste de mettre en place des moyens de communication développés entre les membres de l'équipe afin de se tenir au courant des tâches de chacun (Les systèmes de messagerie vocale sont de loin les outils de communication à privilégier).

Notez que les applications web telles que Github présentent de réels avantages par rapport aux versions logiciel. En effet, un des gros points forts de Github c'est qu'il permet aux utilisateurs de donner leur avis sur votre projet et même de poster des commits (upload de modifications sur votre projet vers votre espace Github) après validation de ceux-ci par les chefs de projet: D'où le slogan "Social coding".

En conclusion, le subversionning est un moyen efficace de travailler à plusieurs sur un projet. L'utilisation avancée de Github fera l'objet d'un prochain article.



  
18 commentaires

Yeah, un nouvel article (bien rédigé en plus!) o/

"Autre inconvénient, tous les jours vous devrez télécharger les mises à jour de votre projet sur votre ordinateur depuis Github. En effet, pendant que vous êtes absent et qu'un de vos collègue modifie le projet, le projet ne se met pas à jour tout seul chez vous." -> Pour ça, un dropbox du projet fait l'affaire le github pour les versionw / modifications et un dropbox pour l'update auto

le 20 juillet 2014

Ouais, le sujet est très intéressant. J'ai contacté l'auteur pour voir s'il pouvait nous rédiger la suite de cet article.

le 20 juillet 2014

Ah c'est super, c'est vrai que ça peut être intéressant l'utilisation de Github, surtout pour les débutants qui n'y connaissent rien en subversionning (bien que maintenant ils ont des bases ! )

le 20 juillet 2014

salut

je suis agréablement surpris que cette article à était validé :P

Korasoa , tu as raisons en se qui concerne la mise à jour , mais c'est une question de points de vue car comme tu le dis , Dropbox ferai l'affaire mais tu imagines bien que si un de tes développeurs supprime tous , ou apportes des mauvaises modifications , bah avec Github tu as toujours ton projet avant de faire la mise à jour ou au pire tu peux faire un reverse commit , par contre sur Dropbox il me semble que les données sont directement écrasées :/

le deuxieme article portera sur l'utilisation plus technique avec l'explication technique

le 20 juillet 2014

Korasoa :

Pour ça, un dropbox du projet fait l'affaire

Heu non C'est bien tout l'interet de git ! On commit, on envoie, on reçoit s'il y a eu des merge et on renvoie une version "finale". Et c'est en "recevant" (en "pull"ant) que tout se met à jour, il ne faut surtout pas le mélanger avec dropbox qui n'a rien à voir.

mandalorien :

Attention: il y a aussi quelques inconvénients à utiliser Github. Par exemple, pour que l'accès à votre espace soit restreint uniquement à votre équipe (Et donc masqué au public), vous devrez obligatoirement payer.

Et oui c'est pour ça que github c'est très bien pour les répo publics mais si vous voulez faire des travaux privés gratuitement utilisez https://bitbucket.org/ qui permet 5 dossiers privés avec Git (testé et approuvé)

le 20 juillet 2014

Ah super merci mizur

le 20 juillet 2014

Heu non C'est bien tout l'interet de git ! On commit, on envoie, on reçoit s'il y a eu des merge et on renvoie une version "finale". Et c'est en "recevant" (en "pull"ant) que tout se met à jour, il ne faut surtout pas le mélanger avec dropbox qui n'a rien à voir

Pourquoi un Dropbox ne ferait pas l'affaire? Oo Dès qu'un fichier est mit tout se télécharge automatiquement, pour un site web a plusieurs je trouve que c'est suffisant afin que tout le monde ait la dernière version du site web...

le 20 juillet 2014

Bah tu ne lis pas nos commentaires ....

le 20 juillet 2014

Korasoa, es-tu sur d'avoir bien compris ce qu'est Git et comment ça fonctionne ? Et d'avoir cerné l'interet de l'utiliser ?

Si oui, alors tu auras compris que Dropbox ne servirait à rien à part... Foutre le bordel, et Git te dira d'aller voir ailleurs à mon avis Donc, pas de Dropbox.

le 21 juillet 2014

Donc je crois ne pas avoir compris l'interêt de Git (ce qui en soi ne le perturbe pas plus que ça étant donné que je travaille seul )

le 21 juillet 2014

Je t'explique :

1. Le projet est vide, y a rien. Tout le monde a un dossier "synchronisé" par Git relié à une serveur qui fait le boulot (fourni par Bitbucket par exemple)

2. Tu crées un fichier, t'en es content, tout marche bien, tu considères qu'il peut faire partie du "projet global".

3. Tu "commit" (ça veut dire que tu crées une "version" de ton projet avec tous tes fichiers actuels.

4. Tu "pull" ("tirer"), c'est obligatoire avant de pouvoir faire l'étape suivante, c'est à dire que tu récupères ce qu'il y a sur le serveur commun : il n'y a rien, personne d'autre que toi n'a fait quoi que ce soit, cool.

5. Tu "push" ("pousser") ton commit (donc ta version du projet) sur le serveur. Et voilà !

Maintenant, on se met à la place de ton pote :

1. Il s'apprête à travailler, et pour bien faire les choses il vérifie s'il n'y a pas déjà quelque chose sur votre dossier en ligne avec Git (ça c'est pour bien faire les choses mais en vrai il pourrait direct commencer sa partie du projet sans vérifier si quelque chose existe déjà)

2. Il est content de ce qu'il a fait. Il "commit" : il a sa version du projet.

3. Il "pull" et là il reçoit TA version du projet, ohoho ! Git lui dit qu'il doit créer une nouvelle version en faisant un nouveau "commit" qui va magiquement fusionner ta partie de projet avec la sienne.

4. Tu commit, tout se fusionne, bravo, tu as donc VOTRE version de projet (la tienne + la sienne fusionnées)

5. Tu "push" ce commit sur le serveur et voilà !

Maintenant que tu voudras pusher une nouvelle fois un nouveau commit, tu devras toi aussi "pull" et donc recevoir la version du serveur c'est à dire la version que ton pote a fusionné avec ton ancienne version ! Puis tu fusionnes avec tes nouveaux changements, et tu renvoies.

Etc. Et tout le monde fait ça.

Et Git maintient à jour tous les changements / ajouts / retraits de fichiers en fonction de ce que tu considères comme ta "nouvelle version" à fusionner à celle déjà existante sur le serveur. Si tu mettais Dropbox dans tout ça qui ferait des suppression et des remplacements définitifs, OMG !

En plus, tu peux demander à Git de te renvoyer à une version antérieure du projet et tout marchera, sans remplacement définitif ni rien.

Et puis si tu travailles sur plusieurs ordinateurs, il suffit de tous les synchroniser à Git et pas besoin de te promener avec tes fichiers sur une clef ou sur Dropbox (qui est très lent, alors qu'avec Git sur Bitbucket par exemple c'est de l'ordre de 2 ou 3 secondes pour tout un projet)

le 21 juillet 2014

Oh, c'est plus clair...

Merci au grand Mizur pour cette explication à mon cerveau lent (ohoh) !

Mais en fait, ça veut dire que même soi on travaille seul ça peut servir afin d'avoir des backup au cas ou?

le 21 juillet 2014

Exactement, moi même quand je travaille seul je l'utilise, comme ça tout mon travail est sauvegardé si besoin.

Par contre il est rare d'avoir des dossiers "privés". Sur Github, si on ne paye pas on ne peut avoir que des dossiers "publics" que tout le monde peut voir. Grace à Bitbucket on peut avoir gratuitement 5 projets "privés" par compte

le 21 juillet 2014

Heureusement, j'avais au moins compris la version sur Bitbucket (sinon ce serait grave docteur?)

Pour l'instant je n'ai aucun réel projet mais autrement, ça peut être utile pour la suite

le 21 juillet 2014

En fait Korasoa, Comparer Git et DropBox, c'est un peu comme comparer une casserole et une passoire, certes ça se ressemble de loin mais ça sert pas à la même chose

Concrètement, on pourrait partir dans un truc d'explication de 5000 pages sur la différence entre dropbox et Git, mais si je doit donner un exemple court de la différence en prenant ce qui se passe dans un cas assez courant en développement :

on a deux utilisateurs A et B

A et B travaillent tout les deux sur le même fichier à un moment donné, avec dropbox, le fait que les deux sont synchronisé en permanence fait qu'au final il y aura la création de deux fichiers, copie en conflit de L'utilisateur A et copie en conflit de l'utilisateur B et aucun des deux n'aura la version complète. pour faire la version complète, ils devront regarder les deux fichiers à la main, où sont les différences et les corriger.

Avec Git, quand il auront finis les modifications, il récupérerons le code du serveur puis mettront le leur. Pour A, le premier, il ne se passera rien vu que tout était à jour, et pour B, Git va voir qu'il y a une modification du même fichier, il va tenter des les fusionner (rajouter les lignes qui manque) et dans un cas où il ne saurait pas quoi faire parce que la même ligne à été modifié par les deux, il va indiquer un conflit et dira à l'utilisateur à telle ligne, il y a une différence (après il existe des outils pour éditer facilement ce genre de conflits) corrige le avant d'envoyer !

Autre exemple : A code quelquechose qui ne fonctionne pas au final mais n'as pas le temps de continuer, puis B travaille après sur le même projet

Avec DropBox, Comme cela a été automatiquement synchronisé, B travaillera sur un projet qui ne fonctionnera pas dans tout les cas il ne pourra pas tester.

Avec Git, A n'enverra pas le code qui fonctionne pas sur le serveur, et B pourra donc travailler sans problème

C'est pour ce genre de cas de figure qu'ils n'ont pas du tout la même utilité et plus il y a de personne sur le même projet, pire ça devient avec dropbox X)

le 2 aout 2014

Autre truc d'ailleurs, un petit lien pour commencer avec git qui répertorie toute les commande indispensables et explqieu comment on les utilise et comment ça marche : http://rogerdudler.github.io/git-guide/index.fr.html

le 2 aout 2014

Ceci dit je conseille lourdement un logiciel pour gérer ses Git et ne pas tout faire à la ligne de commande... Exemple : https://github.com/ ou http://www.sourcetreeapp.com/

le 2 aout 2014

sur windows, tortoise git est vraiment très bien mais mieux vaut commencer en ligne de commande pour comprendre le fonctionnement, les interfaces poussent à faire des erreur avec leur option faciles

le 3 aout 2014



Ajoute un commentaire !

Ajouter une image... Trouvée sur internet » De mon PC »
Adresse URL :
Adresse de la page de la vidéo :
Taille du texte :
Couleur du texte :

Article lu 7852 fois.