Nous déplaçons notre (énorme) projet vers git et nous pensons utiliser des sous-modules. Notre plan est d'avoir trois têtes différentes dans le superprojet: version, stable, dernière. Les chefs de projet géreront la version et les branches stables. Ils déplaceront les sous-modules selon les besoins.
Le problème est la "dernière" tête. Nous aimerions que la tête "dernière" du superprojet suive les branches principales de tous les sous-modules (automatiquement). Et aussi ce serait formidable si cela montrait l'historique de tous les commits au sous-module.
J'ai regardé gitslave, mais ce n'est pas tout à fait ce que nous voulons. Aucune suggestion?
git
git-submodules
git-track
l.thee.a
la source
la source
Réponses:
Mise à jour mars 2013
Git 1.8.2 a ajouté la possibilité de suivre les branches.
Si vous aviez déjà un sous-module présent, vous souhaitez maintenant suivre une branche, voir " comment faire en sorte qu'un sous-module existant suit une branche ".
Voir également le tutoriel de Vogella sur les sous-modules pour des informations générales sur les sous-modules.
Remarque:
Voir la
git submodule
page de manuel :Voir commit b928922727d6691a3bdc28160f93f25712c565f6 :
submodule add
: Si--branch
est donné, enregistrez-le dans.gitmodules
Réponse originale (février 2012):
Un sous-module est un commit unique référencé par un référentiel parent.
Puisqu'il s'agit d'un dépôt Git en lui-même, «l'historique de tous les commits» est accessible via un
git log
dans ce sous-module.Donc, pour qu'un parent puisse suivre automatiquement le dernier commit d'une branche donnée d'un sous-module, il devrait:
gitslave (que vous avez déjà examiné) semble être la meilleure solution, y compris pour l'opération de validation .
D'autres alternatives sont détaillées ici .
la source
git config -f .gitmodules submodule.<path>.branch <branch>
. Ajoutez tout, engagez-vous et poussez.--remote
balise si vous ne voulez pas avoir de tête détachée lorsque vous mettez à jour, en vous demandant pourquoi il semble que votre code fraîchement extrait soit derrière master!git submodule update
commande en lui indiquant à quel commit (c'est-à-dire le commit le plus récent sur le maître) mettre à jour le sous-module, sans provoquer automatiquement la mise à jour du dépôt parent. commit est pointé par le sous-module au moment du clonage?