155 votes

git sous-module de suivi des dernières

Nous nous dirigeons notre (grand) projet de git et nous réfléchissons à l'aide de submodules. Notre plan est de trois tête dans le superproject: libération,stable,plus tard. Le projet conduit gérera la libération et stable branches. Ils vont déplacer les submodules que nécessaire.

Le problème est la "dernière" de la tête. Nous aimerions que le superproject "dernière" de la tête pour suivre le maître branches de tous les submodules (automatiquement). Et aussi ce serait formidable si elle serait d'afficher l'historique de tous les commits de la sous-module.

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

269voto

VonC Points 414372

Mise À Jour Mars 2013

Git 1.8.2 ajout de la possibilité de suivre des branches.

"git submodule" a commencé l'apprentissage d'un nouveau mode permettant de l'intégrer à l'extrémité de la branche à distance (par opposition à l'intégration de la validation enregistrée dans le superproject de gitlink).

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

# update your submodule
git submodule update --remote 

Voir aussi la Vogella de tutoriel sur les submodules.

Voir "Comment faire un sous-module existant suivre une branche" (si vous en avait un sous-module déjà présent vous le souhaitez, maintenant, la piste d'une branche)


Voir commettre b928922727d6691a3bdc28160f93f25712c565f6:

submodule add: Si --branch est donné, en .gitmodules

Cela vous permet d'enregistrer facilement un submodule.<name>.branch option en .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 futurs appels à l'

$ git submodule update --remote ...

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

Signed-off-by: W. Trevor King


Origine de la réponse (février 2012):

Un sous-module est un seul commit référencé par un parent repo.
Depuis, c'est un Git rpeo sur son propre, "l'histoire de tous les commits", est accessible par un git log dans ce sous-module.

Donc, pour un parent de suivre automatiquement le dernier commit de la branche donnée d'un sous-module, il faut:

  • cd dans le sous-module
  • git fetch/pull pour s'assurer qu'il dispose bien de la dernière s'engage sur la branche de droite
  • cd de retour dans la mère repo
  • ajouter et validez pour enregistrer le nouveau commit si le sous-module.

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

C'est un peu ennuyeux pour apporter des modifications à la sous-module en raison de la nécessité de vérifier sur le bon sous-module de la branche, de faire le changement, s'engager, et ensuite aller dans les superproject et valider le valider (ou au moins enregistrer le nouvel emplacement de la sous-module).

D'autres solutions sont détaillées ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X