suivi des sous-modules git le plus récent

nous sommes en train de déplacer notre (énorme) projet vers git et nous envisageons d'utiliser des sous-modules. Notre plan est d'avoir trois têtes différentes dans le superproject: release, stable, dernière. Les chefs de projet s'occuperont des branches release et stable. Ils déplaceront les sous-modules selon les besoins.

la question est La "dernière" de la tête. Nous aimerions que le superproject" latest " head suive les branches maîtresses de tous les sous-modules (automatiquement). Et aussi ce serait génial si il montrerait l'histoire de tous les engage au sous-module.

j'ai regardé gitslave, mais il n'est pas tout à fait ce que nous voulons. Toutes les suggestions?

113
demandé sur madth3 2012-02-08 12:00:41

1 réponses

Mise À Jour Mars 2013

Git 1.8.2 a ajouté la possibilité de suivre les branches.

" git submodule "a commencé à apprendre un nouveau mode pour intégrer avec la pointe de la branche distante (par opposition à l'intégration avec la propagation enregistrée dans le gitlink du superproject).

# add submodule to track master branch
git submodule add -b master [URL to Git repo];

# update your submodule
git submodule update --remote 

Voir Aussi Le submodules .

Voir " Comment faire un sous-module existant suivre une branche " (si vous en avait un sous-module déjà présent vous désirez permettrait de suivre une direction)

Note:

git submodule add -b . [URL to Git repo];
                    ^^^

Voir git submodule l'homme page :

une valeur spéciale de . est utilisée pour indiquer que nom de la branche dans le sous-module doit être le même nom que la branche courante dans le référentiel actuel .


voir commit b928922727d6691a3bdc28160f93f25712c565f6 :

submodule add : si --branch est indiqué, inscrivez-le dans .gitmodules

Cela vous permet d'enregistrer facilement un submodule.<name>.branch option .gitmodules lorsque vous ajoutez un nouveau sous-module. Avec ce patch,

$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>

réduit à

$ git submodule add -b <branch> <repository> [<path>]

cela signifie que les appels futurs à

$ git submodule update --remote ...

recevra les mises à jour de la même branche que vous avez utilisée pour initialiser le sous-module, ce qui est généralement ce que vous voulez.

Signed-off-by: W. Trevor King


réponse Originale à cette question (février 2012):

un sous-module est une commit unique référencée par un parent repo.

Puisqu'il s'agit d'un git repo à part entière, l ' "histoire de tous les commits" est accessible à travers un git log à l'intérieur de ce sous-module.

ainsi pour un parent de suivre automatiquement la dernière commit d'un donné branche d'un sous-module, il aurait besoin de:

  • cd dans le sous-module
  • git fetch / pull pour s'assurer qu'il a la dernière propagation sur la branche droite
  • cd de retour dans la mère repo
  • ajouter et valider pour enregistrer la nouvelle livraison du sous-module.

gitslave (que vous avez déjà regardé) semble être le meilleur ajustement, , y compris pour l'opération de commission .

il est un peu ennuyeux d'apporter des modifications au sous-module en raison de l'exigence de vérifier sur la branche de sous-module correcte, faire le changement, commit, puis aller dans le superproject et commit la commit (ou au moins enregistrer la nouvelle localisation du sous-module).

les autres variantes sont détaillé ici .

189
répondu VonC 2017-12-14 13:26:12