+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Membre actif

    Homme Profil pro
    Software engineer
    Inscrit en
    août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : août 2006
    Messages : 73
    Points : 205
    Points
    205

    Par défaut Baboon: Comment éviter l'enfer de la résolution des conflits dans un projet ?

    Baboon: Comment éviter l'enfer de la résolution des conflits dans un projet ?

    Développer à plusieurs sur un projet est une pratique très courante. Le travail doit alors être délégué de manière réfléchie afin d'éviter que plusieurs programmeurs se marchent sur les pieds. Cela demande une grande rigueur de la part de chacun des membres du projet.

    Si l'un des développeurs dérape, c'est toute l'équipe qui en souffre. Le problème est souvent détecté longtemps après, au moment où le travail de chacun doit être rassemblé («merge»). Cela peut vite tourner au cauchemar de résolution des conflits («merge hell»). Imaginez-vous maintenant l'enfer que cela peut amener dans des projets avec un grand nombre de contributeurs (Linux, Bootstrap, NodeJs, ...).


    C'est ici qu'intervient Baboon, un petit outil codé en Python permettant de détecter en temps réel les conflits dans un projet. A chaque sauvegarde d'un fichier, Baboon vérifie chez tous les contributeurs s'il y a un problème. Si c'est le cas, toute l'équipe est avertie et le coupable peut-être puni (gentiment, par pitié). Le conflit ne concerne alors qu'une toute petite partie d'un fichier et peut être résolu très facilement.

    Dites simplement adieu aux maux de tête pendant la fusion du travail de chacun !

    Plus d'informations sont disponibles sur le site web de Baboon.
    Le code source est accessible sous license libre (MIT) sur Github.

    Et vous ?

    Pensez-vous qu'un tel outil pourrait vous faire gagner un temps précieux lorsque vous développez ?

  2. #2
    Membre éprouvé Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 216
    Points : 1 257
    Points
    1 257

    Par défaut

    Étant encore étudiant je n'ai pas eu l'occasion de travailler sur les projets important en équipe…

    Mais le cœur du problème n'est-il pas plutôt le fait de travailler isolé des autres membres ? À mon sens le travail devrait toujours être réalisé en collaboration et avec une bonne communication au sein du groupe de travail.

  3. #3
    Membre actif

    Homme Profil pro
    Software engineer
    Inscrit en
    août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : août 2006
    Messages : 73
    Points : 205
    Points
    205

    Par défaut

    Bien entendu, tu as tout à fait raison. Je remarque que sur le terrain, il n'est pas toujours évident d'être constamment dans un environnement où la communication et la collaboration soient parfaites. Un conflit est vraiment vite arrivé sans s'en rendre forcément compte rapidement... sa résolution peut être vraiment pénible et faire perdre énormément de temps. D'autant plus que celui qui devra résoudre le conflit n'est pas forcément celui qui l'a provoqué. Je te laisse imaginer la frustration, surtout quand les collaborateurs ne se connaissent qu'à travers la toile.

    ps: Je t'avoue qu'il m'est déjà arrivé de provoquer un conflit avec moi même, sur une autre branche :-)

  4. #4
    Invité
    Invité(e)

    Par défaut Integration continue

    Mettre en commun des travaux provenant de plusieurs contributeurs est synonyme d'intégrer.
    Et comme Baboon le fait en temps réel, il le fait donc en continue.
    On est donc dans une solution d'intégration continue.
    Il y a je pense des outils + adaptés pour cela (Jenkins par exemple)

  5. #5
    Modérateur
    Avatar de gangsoleil
    Profil pro
    R&D en systemes informatiques bas niveau Unix/Linux
    Inscrit en
    mai 2004
    Messages
    9 288
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : R&D en systemes informatiques bas niveau Unix/Linux

    Informations forums :
    Inscription : mai 2004
    Messages : 9 288
    Points : 26 626
    Points
    26 626

    Par défaut

    Bonjour,

    Citation Envoyé par nicolas.chambon Voir le message
    On est donc dans une solution d'intégration continue.
    La plupart des solutions d'integration continue ne s'appliquent que sur du code deja commite, donc apres la resulution de conflit. Contrairement a ce qu'a l'air de faire Baboon, qui verifie "a chaque sauvegarde" [locale] si les lignes sont en conflit avec le code de quelqu'un d'autre.

    Bon, comme je le pensais, ca ne fonctionne que sur les projets GIT, donc il ne s'agit pas de chaque sauvegarde dans l'editeur, mais dans chaque commit local. C'est donc bien pour les projets sous GIT, mais celui-ci etant tres tres peu utilise en entreprise, l'interet est malheureusement minime.

    Il faudrait une version pour SVN ou CVS, et la, ca serait vraiment top.
    Modérateur "C", "Informatique Générale & Hardware" et "Unix"
    Les règles du forum

  6. #6
    Membre chevronné Avatar de shadowmoon
    Homme Profil pro
    Ingénieur études et développement .Net C#
    Inscrit en
    mai 2005
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur études et développement .Net C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2005
    Messages : 1 000
    Points : 2 026
    Points
    2 026

    Par défaut

    Citation Envoyé par gangsoleil Voir le message
    Il faudrait une version pour SVN ou CVS
    +10 000, très très bonne idée. J'ai récemment travaillé sur un projet où l'équipe, environ 30 personnes, était éclatée "aux 4 coins du monde" (USA, Japon, France, Brésil et Suède). Du coup, nous avez eu des "merge hell" très importants, avec le facteur aggravant du décalage horaire. Le plus "imposant" nous a nécessité 10 jours de travail non stop, 24h sur 24 (vive les décalages horaires lol).

    Donc, dès que cette version est disponible, je demande à mon entreprise de se la procurer, vu qu'actuellement je suis dans une équipe morcelée entre la France, la Suisse et le Royaume-uni.
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  7. #7
    Modérateur
    Avatar de gangsoleil
    Profil pro
    R&D en systemes informatiques bas niveau Unix/Linux
    Inscrit en
    mai 2004
    Messages
    9 288
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : R&D en systemes informatiques bas niveau Unix/Linux

    Informations forums :
    Inscription : mai 2004
    Messages : 9 288
    Points : 26 626
    Points
    26 626

    Par défaut

    Citation Envoyé par shadowmoon Voir le message
    Donc, dès que cette version est disponible, je demande à mon entreprise de se la procurer, vu qu'actuellement je suis dans une équipe morcelée entre la France, la Suisse et le Royaume-uni.
    Pour le coup, c'est beaucoup plus complexe.

    En tres tres gros (pas taper), dans GIT, tu fais des commit dans un repository local tres regulierement. Ces commit n'impliquent personne d'autre que toi. Et c'est seulement lorsque tu repercutes ces commits sur le serveur central que les vrais merge sont faits.
    Donc il est relativement aise de concevoir un programme qui, a chaque commit local, va regarder dans tous les repertoires locaux si un probleme de merge existe.

    Dans CVS ou SVN, cette notion de commit local n'existe pas. Tant que tu fais des modifs sur ta machine, personne ne les voit.
    Donc l'outil en question devrait s'intercaler entre la sauvegarde dans l'editeur (granularite trop fine) et le commit (granularite trop grosse qui provoque des merge hell). En gros, on prend un des concepts de GIT, et on l'implemente dans CVS/SVN...

    Autre solution : un hook dans tous les editeurs utilises qui verifie a chaque sauvegarde. Attention, le reseau va en prendre un coup.

    S'il n'y a qu'un seul editeur, genre un gros IDE, alors c'est surement plus simple, et plus realisable.
    Modérateur "C", "Informatique Générale & Hardware" et "Unix"
    Les règles du forum

  8. #8
    Membre actif

    Homme Profil pro
    Software engineer
    Inscrit en
    août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : août 2006
    Messages : 73
    Points : 205
    Points
    205

    Par défaut

    Citation Envoyé par gangsoleil Voir le message
    Bon, comme je le pensais, ca ne fonctionne que sur les projets GIT, donc il ne s'agit pas de chaque sauvegarde dans l'editeur, mais dans chaque commit local. C'est donc bien pour les projets sous GIT, mais celui-ci etant tres tres peu utilise en entreprise, l'interet est malheureusement minime.

    Il faudrait une version pour SVN ou CVS, et la, ca serait vraiment top.
    Bonjour,

    Baboon est complètement indépendant du concept de "commit". La vérification se fait vraiment à chaque fichier sauvegarder!

    Baboon est architecturé pour gérer n'importe quel SCM (Source Code Manager) en dessous. Par défaut, j'ai développé le plugin Git. Il suffit de développer un plugin SVN pour supporter subversion

  9. #9
    Membre actif

    Homme Profil pro
    Software engineer
    Inscrit en
    août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : août 2006
    Messages : 73
    Points : 205
    Points
    205

    Par défaut

    Citation Envoyé par gangsoleil Voir le message
    Autre solution : un hook dans tous les editeurs utilises qui verifie a chaque sauvegarde. Attention, le reseau va en prendre un coup.
    J'utilise inotify (et équivalent pour windows et osx) pour vérifier en temps réel les changements dans un répertoire. Une fois détect², un rsync inhouse est lancé (à travers le protocol XMPP pour les détails d'implémentation). Le réseau n'est donc pas ultra sollicité

  10. #10
    Modérateur
    Avatar de gangsoleil
    Profil pro
    R&D en systemes informatiques bas niveau Unix/Linux
    Inscrit en
    mai 2004
    Messages
    9 288
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : R&D en systemes informatiques bas niveau Unix/Linux

    Informations forums :
    Inscription : mai 2004
    Messages : 9 288
    Points : 26 626
    Points
    26 626

    Par défaut

    Citation Envoyé par Sandro Munda Voir le message
    Bonjour,

    Baboon est complètement indépendant du concept de "commit". La vérification se fait vraiment à chaque fichier sauvegarder!

    Baboon est architecturé pour gérer n'importe quel SCM (Source Code Manager) en dessous. Par défaut, j'ai développé le plugin Git. Il suffit de développer un plugin SVN pour supporter subversion
    Chapeau !
    Si j'ai un peu de temps, j'essaierai de regarder si je peux faire quelque chose en ce sens.
    Si quelqu'un veut s'y mettre, il a toute mon aide psychologique !!

    Citation Envoyé par Sandro Munda Voir le message
    J'utilise inotify (et équivalent pour windows et osx) pour vérifier en temps réel les changements dans un répertoire. Une fois détect², un rsync inhouse est lancé (à travers le protocol XMPP pour les détails d'implémentation). Le réseau n'est donc pas ultra sollicité
    Je ne pensais pas a ta maniere de faire, mais a l'integration dans un editeur : certains de ceux-ci ont tendance a faire beaucoup de choses inutiles, y compris sur le reseau.
    Modérateur "C", "Informatique Générale & Hardware" et "Unix"
    Les règles du forum

  11. #11
    Membre actif

    Homme Profil pro
    Software engineer
    Inscrit en
    août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : août 2006
    Messages : 73
    Points : 205
    Points
    205

    Par défaut

    Citation Envoyé par gangsoleil Voir le message
    Chapeau !
    Si j'ai un peu de temps, j'essaierai de regarder si je peux faire quelque chose en ce sens.
    Si quelqu'un veut s'y mettre, il a toute mon aide psychologique !!
    Tu as toute mon aide si besoin est ;-) Je serai heureux de développer ca à plusieurs !

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/10/2014, 16h02
  2. Réponses: 3
    Dernier message: 13/04/2008, 03h03
  3. Réponses: 2
    Dernier message: 03/07/2006, 21h14
  4. Réponses: 3
    Dernier message: 16/02/2006, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo