|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mars 2010 Messages : 67 ![]() |
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 :
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. |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() ![]() Philippe BASTIANIArchitecte technique Inscription : juin 2005 Messages : 402 ![]() |
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. |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : mars 2010 Messages : 67 ![]() |
Citation:
Je découvre tout juste l'existence des hooks, tes liens vont m'être d'une aide précieuse. Citation:
|
||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mars 2010 Messages : 67 ![]() |
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 :
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.
Je verrai demain... |
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() ![]() Philippe BASTIANIArchitecte technique Inscription : juin 2005 Messages : 402 ![]() |
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 |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com