IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GIT Discussion :

[Sous module] Garantir la mise à jour du projet père


Sujet :

GIT

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut [Sous module] Garantir la mise à jour du projet père
    Bonsoir,

    J'ai un projet "père" qui contient des sous modules (lvl1_Sub1, lvl1_Sub2, lvl1_Sub3...)
    Le projet "père", et les sous modules ont chacun un dépôt .git.

    Lorsque on publie (push) sur le dépôt distant d'un sous module, il faut :
    • mettre à jour (pull) le projet "père"
    • enregistrer sur le "père" les modifs du sous module lvl1_Sub1 (commit)
    • publier les modifs du "père" (push) sur son dépôt distant.


    Mes collègues travaillent uniquement sur les sous modules, pas sur le projet "père".
    Pour éviter toute erreur ils n'ont pas accès en écriture sur le "père", mais moi je le peux.
    Le "père" est hébergé sur Github.

    Je souhaiterais mettre en place un "truc" qui me garantisse que les étapes
    listées précédemment sont bien respectées, et ce à chaque push effectué sur
    un sous module par un collègue.
    Et j'avoue que je coince...

    Avez vous des conseils à me donner ?

    Merci d'avance.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut
    Il faut regarder du côté des hooks ! sur un post-merge... l'idée est de lancer un git-submodule update

    IMHO (jamais testé), il faut les placer dans .git/modules/toto/hooks où toto est le chemin de ton module !

    Dernière minute : ce projet (post-merge & post-commit) ! Tu dois pouvoir t'en inspirer...

    Pourrais-tu nous faire un retour d'expérience sur le sujet...
    a+
    Philippe

    PS : Au passage: pour faciliter le travail avec les sous-modules tu as, aussi, ce projet sur github.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Il faut regarder du côté des hooks ! sur un post-merge... l'idée est de lancer un git-submodule update

    IMHO (jamais testé), il faut les placer dans .git/modules/toto/hooks où toto est le chemin de ton module !

    Dernière minute : ce projet (post-merge & post-commit) ! Tu dois pouvoir t'en inspirer...
    Je te remercie beaucoup !
    Je découvre tout juste l'existence des hooks, tes liens vont m'être d'une aide précieuse.

    Pourrais-tu nous faire un retour d'expérience sur le sujet...
    Oui je détaillerai mes démarches au fur et à mesure que j'aurai du nouveau.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Les hooks sont donc des scripts exécutés par git après certains "évènements",
    déclenchés lors de l'utilisation de certaines commandes de git.

    Je veux déclencher certaines actions après qu'un push ce soit produit depuis le sous
    module local d'un collègue.

    Cependant je ne souhaite pas me baser sur les hooks des collègues, car rien ne garanti
    qu'ils soient présents, activés, que sais-je, c'est leur machine.
    Et de toute façon ils n'ont pas les droits pour mettre à jour le projet "père".

    Un "push" effectué en local déclenche sur le dépôt distant l'évènement (?) "git-receive-pack".
    Ce dernier enclenche l'exécution des hooks pre-receive, update, post-receive, et
    post-update en leur fournissant des infos sous la forme de paramètres.
    Il y a donc moyen d'effectuer des actions sur le dépôt distant grâce à ces hooks.

    Or ce dépôt distant est sur Github, qui n'autorise pas la création de hooks directement
    dans $GIT_DIR/hooks/

    J'ai donc un choix à faire, par ordre de préférence :
    • Trouver un autre hébergement git (gratuit) permettant d'exécuter mes hooks sur le serveur.

    J'ignore si ça existe.

    • Interroger moi même les sous modules à intervalles réguliers (tâche cron), puis utiliser
      les hooks pour détecter un changement, et enfin déclencher un script effectuant les
      bonnes actions.

    Ce qui impliquerait la possibilité de rater des mises à jour de sous modules : si entre
    deux vérifications les fonctionnalités A, B et C ont été ajoutées dans un sous module,
    je ne consignerai que la dernière, la C.
    Pour notre projet ce n'est pas très grave.
    Mais j'ignore actuellement si ça peut poser des soucis au niveau du projet père. Vu
    qu'il ne fait que pointer sur les commits des sous modules, ça ne devrait pas poser de
    problèmes. A tester.

    • Donner aux collegues des droits en écriture sur le projet père, pour leur permettre de faire
      eux même les manips via les hooks.

    Et je fais une crise cardiaque s'ils font nimp sur le projet père.

    Je verrai demain...

  5. #5
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut
    Oui effectivement le post-merge est local donc il ne pourra pas t'aider directement

    Pour travailler avec Github, il faut donc passer par un post-receive à paramétrer depuis l'interface admin Github du projet (Settings / Service Hooks).
    En fait, tu vas activer un service hook, et il te faut donc un service tiers permettant de traîter les notifs (par exemple http://gitlive.com/ pour avoir en visu les pushes qui ont été fait, email, ou un service d'intégration continue).

    L'autre soluce pour Github est de ne pas passer par les collaborateurs... mais travailler en pullrequest sur des forks

    a+
    Philippe

Discussions similaires

  1. Modules, Plugins et Mises à jour
    Par Invité dans le forum Langage
    Réponses: 8
    Dernier message: 22/03/2014, 18h03
  2. [WD14] Mise à jour du projet après création de l'exécutable.
    Par heiti dans le forum WinDev
    Réponses: 10
    Dernier message: 06/08/2009, 02h24
  3. Pb de sous-requête pour une mise à jour
    Par Balthos dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 05/03/2008, 09h13
  4. Problème de mise à jour du projet
    Par paradeofphp dans le forum ASP.NET
    Réponses: 1
    Dernier message: 01/10/2007, 14h11
  5. mise à jour d'une table d'interbase sous delphi
    Par kouraichi35 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/10/2004, 13h09

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