91 votes

Submodules. De vous engager dans un nouveau clone de super-projet

OK. Alors j'ai pensé que j'ai eu ce léché ... mais maintenant ....

J'ai un projet qui comprend une petite bibliothèque à partir de GitHub comme un sous-module. Dans la version originale de ce super projet, le sous-module fonctionne comme prévu.

Cependant, je viens de cloné le superproject, fait ce que je pensais : "git sous-module init", a obtenu le répertoire de la sous-module apparaître, mais elle est vide.

Si j'essaie maintenant de faire

git submodule update

Je reçois

fatal: Needed a single revision 
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'

Si j'essaie

git submodule foreach git pull

Je reçois

Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.

Dans mon .git/config, j'ai ceci :

[submodule "external_libraries/BEACHhtml"]
    url = git@github.com:interstar/BEACHhtml.git

Dans mon .gitmodules j'ai ceci :

[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = git@github.com:interstar/BEACHhtml.git

Tout le monde a une idée de ce qu'il manque?

196voto

Han He Points 1135

J'ai le même problème que vous. Cette info m'a aidé à résoudre le problème:

http://www.gostai.com/downloads/urbi-sdk-2.0/doc/urbi-sdk.htmldir/faq.html

check point 14.1.4.

En bref, pour votre problème, essayez de:

# rm -rf external_libraries/BEACHhtml
# git submodule update

Il semble qu'il y ait quelque chose de mal avec le précédent dossier d'extraction, de le supprimer et de mise à jour résout le problème.

3voto

epatel Points 32451

J'ai eu ce problème (feuilletée réseau, de sorte que je suis tombé sous module de caisse comme ça) et je l'ai résolu en faisant de ce script (nommé git-submodule-fix afin que je puisse l'exécuter en tant qu' git submodule-fix)

#!/bin/bash 

for arg 
do 
  echo $arg 
  find . -name "`basename $arg`" | grep "$arg\$" | xargs rm -fr
done

Si vous obtenez ce à dire à partir d'un git submodule update

fatal: Needed a single revision
Unable to find current revision in submodule path 'some/submodule/path'

faire

git submodule-fix some/submodule/path
git submodule update

0voto

Adam Dymitruk Points 34999

utiliser un outil de comparaison pour comparer le clone d'origine qui travaille et de celle-ci. Aussi, qu'est - git submodule de la production. Vous assurer que vous êtes pointant vers la même direction dans chaque repo avant de le faire.

Je suis soupçonner que vous êtes passé à une branche ou une ancienne version où le sous-module n'a pas été défini.

espérons que cette aide

0voto

David Lukac Points 1

J'ai eu le même problème avec un sous-module sur un projet. Quand j'ai essayé de cloner le sous-module séparément, il a bien travaillé.

J'ai essayé toutes les réponses ci-dessus, mais sans succès (git sous-module de mise à jour, ..., en supprimant le sous-module de dossiers, ...).

Le problème a disparu après la mise à jour de git (à partir de Git-1.7.11-preview20120710) à la dernière version (Git-1.8.1.2-preview20130201) à l'époque. Étrangement, mes collègues avaient même l'ancienne version, a fonctionné sans aucun problème, mais ils étaient sur Mac. Je suis sur Win7 64 bits.

-6voto

xing kenny Points 1

Je suis sur Window7. exécuter la commande 'rm-rf src/sizzle", peut-ok!

E:\GitHub\fork\jquery>rm-rf src/grésillement
E:\GitHub\fork\jquery>git sous-module de mise à jour
Sous-module path 'src/sizzle': checked '19c7b3440385c9f628a7bc1c5769f6946fcc6887'

E:\GitHub\fork\jquery>grunt.cmd

...
Enregistré sous: maître

Fait, sans erreurs.

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