2012-05-02 29 views
6

(predominantemente una pregunta Git, pero que pueden ser de interés para otros usuarios PyroCMS)No se puede agregar al repositorio git submódulo

Tengo un repositorio local de PyroCMS - el repositorio es un clon de un tenedor de GitHub el proyecto principal. También tengo un módulo PyroCMS, que también es un clon local de un tenedor github de que proyecto.

Los puse en dos directorios separados.

~/Dropbox/websites/pyrocmscommunity-test/ 
~/Dropbox/github/PyroDatabase/ 

Quiero añadir PyroDatabase como submódulo de pyrocmscommunity-prueba, por lo que puede extraer actualizaciones de GitHub, realizar un seguimiento de mis propios cambios etc.

Traté de hacer esto de ir a la parte superior del árbol de trabajo y haciendo:

git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/ 

pero no se ha completado correctamente:

Cloning into 'addons/shared_addons/modules/database'... 
ssh_exchange_identification: Connection closed by remote host 
fatal: The remote end hung up unexpectedly 

No entiendo esto porque no especifiqué una conexión SSH, solo quería usar el repositorio local. ¿A qué está tratando de conectarse y por qué?

Además, ahora, cada vez que repita el comando, me sale esto:

'addons/shared_addons/modules' already exists in the index 

Pero no entienden esto ya que no hay .gitmodules archivo y ninguna mención de los archivos de módulos en .gitconfig tampoco.

¿Qué estoy haciendo mal y cómo reinicio las cosas?

Gracias, William

+0

Weird. Funciona para mi. También intenté clonar un repositorio local que no está sincronizado con su repositorio remoto, github, por la remota posibilidad de que la clonación del local se conectara con su control remoto ... pero eso también funcionó. – GoZoner

Respuesta

15

Al especificar las direcciones URL relativas para la ubicación submódulo, Git hace que sea relativamente a la (aquí Github) URL del Projet actual origin, y no relativamente a la ubicación del proyecto en el sistema de archivos. Esto se debe a que un submódulo es un puntero permanente a una ubicación remota. Aquí Git intenta contactar el repositorio de github de origen con dos niveles arriba, que es una URL incorrecta.

En cuanto a la segunda error Git ha creado una entrada en el área de ensayo de su índice, y se debe retirar (no escénica) con

git rm -r addons/shared_addons/modules 

vuelva a intentar con la ruta absoluta a su clon:

git submodule add $HOME/Dropbox/github/PyroDatabase/ addons/shared_addons/modules/ 

De todos modos, agregar un clon local de su proyecto como un submódulo de sí mismo es extraño, ya que los submódulos están destinados a ser un repositorio diferente del proyecto que lo contiene. ¿Por qué no realizar un seguimiento de las confirmaciones locales y de origen de la manera estándar de Git?

+1

+1 para leer todo el párrafo de los documentos en el submódulo git add. – djs

+0

Gracias - Ahora estoy más claro. También encontró útiles los submódulos [capítulo] (http://git-scm.com/book/en/Git-Tools-Submodules) en el Libro de Git. –

2

¿Qué versión de Git que se ejecuta? Probablemente no pueda volver a ejecutar el comando porque la estructura de directorios que ha especificado se ha organizado. Puede restablecer este tipo de cosas (tenga cuidado con este comando):

$ git status # check what has been changed 
$ git reset --hard HEAD # destroy all working copy changes 

Una forma muy útil para depurar lo que está pasando con git es establecer GIT_TRACE=1. Por lo tanto, intente ejecutar el comando de nuevo una vez que haya limpiado de esta manera:

$ GIT_TRACE=1 git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/ 
Cuestiones relacionadas