2010-01-02 5 views
10

Je commence à avoir des problèmes avec le sous-module git (voeu pieux?) Et j'ai des questions plus précises, ce qui est un bon signe ...git submodule mise à jour nécessaire seulement initialement?

J'ai essayé de trouver quelle révision de la sous-module, le superprojet se réfère, dans .gitmodules et .git/config, mais rien n'est mentionné là ...
Le scénario est que je suis en train de changer les sous-modules dans leurs emplacements racine (à partir de laquelle ils sont importés), puis en les tirant où ils 're' submoduled '...
Au-delà de l'engagement du superprojet pour incorporer ces modifications dans le repo du superprojet, dois-je également faire "git update" pour enregistrer les nouveaux commits sous-module?

Fondamentalement, la question est:

dois-je « git submodule update » seulement quand je clone le SuperProject, ou après chaque tirage du sous-module (de son propre repo)?

Merci

+0

Désolé pour la réponse tardive, je n'ai pas vu votre nouvelle question après votre précédente (http://stackoverflow.com/questions/1979167) – VonC

Répondre

15

Comme mentionné dans ma précédente réponse à git submodule update, que les contrôles de commande sur la version spécifique du projet, la base de leur dossier .gitmodules.

Le GitPro page does insist:

Ceci est un point important sous-modules: vous les enregistrer en tant que commettent exact où ils à.

Vous pouvez voir qui Commit est référencé en exécutant dans le « super projet » (une référence à un ou plusieurs sous-modules):

  • git submodule status (sauf si vous avez certains commettent directement dans ce sous-module, Thinat cas, il affichera un « + » devant la SHA-1 du HEAD de tout sous-module qui a avancé du SHA-1 stocké dans le SuperProject) ou
  • git ls-files --stage recherche d'entrée en mode « 160000 », une entrée spéciale dans la Gi indice t.

Cela signifie que, chaque fois que vous exécutez une commande git dans le « super projet » qui pourrait modifier ce sous-module commit SHA1, vous avez besoin d'un « git submodule update ». Ai-je besoin de "git submodule update" uniquement lorsque je clone le superprojet pour la première fois, ou après chaque extraction du sous-module (à partir de son propre repo)? Oui, vous devez le faire à chaque fois que vous modifiez un sous-module dans le projet principal. C'est parce que vous faites référence à la validation exacte du dépôt initial du sous-module (comme indiqué ci-dessus), et lorsque vous retirez ce dépôt, vous modifiez effectivement ce commit.