2011-09-16 13 views
11

que tienen un repositorio Git con un árbol de trabajo adjunto que estoy empujando a un acuerdo de recompra al descubierto en una remota. El repositorio incluye un submódulo.¿Cómo inicio/actualizo un submódulo de git en un árbol de trabajo después de presionar a un directorio de trabajo desnudo?

En el extremo remoto: Me verificar el repositorio a un árbol de trabajo git checkout -f haber ajustado GIT-DIR y GIT-WORK-TREE env vars.

En el árbol de trabajo ahora veo todos los archivos esperados y un directorio vacío para el submódulo ('MySubmodule').

entonces yo:

git submodule init 
git submodule update 

Este error con un mensaje como:

working tree '../../workTree/' already exists 
Clone of '[email protected]:user/MySubmodule.git' into submodule path 'MySubmodule' failed 

El directorio submódulo vacío ahora también ha 'desaparecido' desde el árbol de trabajo ...

No estoy seguro de dónde me estoy equivocando con esto, básicamente solo quiero verificar los archivos del submódulo como lo haría con la 'actualización del submódulo git'.

+0

¿Alguna vez resolvió esto? Si es así, me encantaría saber cómo se supone que – shevron

+0

un repositorio simple no tiene un árbol de trabajo y, por lo tanto, no debería tener un árbol de trabajo para un submódulo. [Info similares] (http://stackoverflow.com/questions/1764380/push-to-non-bare-repository#comment29366144_1764380) –

+0

que tenía el mismo problema al escribir un script de despliegue, parece que no hay manera para inicializar submódulos en un repositorio desprotegido. –

Respuesta

0

En primer lugar, ¿por qué necesita a la caja de un acuerdo de recompra al descubierto? Simplemente clonarlo en otro lugar y trabajar con un repositorio normal, no desnudo.

Pero si realmente necesita hacerlo, puede cambiar el nombre de la carpeta a .git, cambiar a bare = truebare = false en .git/config y luego hacer git checkout.

+3

utilizo un acuerdo de recompra al descubierto por las razones descritas aquí: http://gitready.com/advanced/2009/02/01/push-to-only-bare-repositories.html Toda la funcionalidad de recompra desnuda funciona bien aparte desde echar un vistazo al submódulo hasta el árbol de trabajo separado. – arlogb

1

Parece que cuando ejecuta la "actualización del submódulo git" no puede establecer el GIT_WORK_TREE ... intentará usar esto como el árbol de trabajo para el submódulo, no para el superproyecto.

he tenido que actualizar mi servidores script posterior a la actualización ...

/usr/local/bin/git --git-dir="$PROJECT_DIR" --work-tree="$PROJECT_DEMO" checkout -f; 

cd "$PROJECT_DEMO"; 
/usr/local/bin/git --git-dir="$PROJECT_DIR" submodule update --init --recursive; 

Aviso yo no establecer variables env, y que el comando submódulo no tenían la "--work-árbol "establecer ... parece que necesita trabajar desde la derecha.

+7

Esto no funcionó. remote: fatal:/usr/libexec/git-core/git-submodule no se puede utilizar sin un árbol de trabajo. – berkus

+0

Añadiendo '-work-tree =" $ PROJECT_DEMO "' funcionó para mí. – DisgruntledGoat

Cuestiones relacionadas