ocean - Obteniendo "fatal: no es un repositorio de git: ''.''" cuando se utiliza el gancho post-update para ejecutar ''git pull'' en otro repositorio
npm pre-commit (5)
A pesar de que unset GIT_DIR solo funciona.
el problema ocurre cuando configura GIT_DIR incorrectamente en otro lugar.
simplemente puede agregar eso en su lugar: GIT_DIR = .git / Funcionará
Soy nuevo en git, así que me disculpo (y corrígeme) si uso mal la terminología aquí, pero haré mi mejor esfuerzo.
Intento configurar un git repo (hub) y una copia de trabajo (principal) del sitio de desarrollo en un servidor web. Intenté modelarlo después de este artículo . Deseo que la copia de trabajo de desarrollo se actualice cada vez que se envíe el repositorio del concentrador. Tengo la impresión de que el gancho adecuado para esto es post-update
, que he creado así:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Actualizar
Cuando envío los cambios desde mi repositorio local al centro desnudo obtengo el siguiente resultado del script de post-actualización:
remote: sites
remote: fatal: Not a git repository: ''.''
Sin embargo, si uso SSH en el servidor como ''sitios'' de usuario y ejecuto este script manualmente, funciona bien. ¿Alguna idea sobre qué podría estar fallando con este gancho o script?
Aquí está el guión que finalmente funcionó. Creo que el bit que me faltaba originalmente que le impedía trabajar remotamente era el unset GIT_DIR
#!/bin/sh
cd /path/to/working-copy/ || exit
unset GIT_DIR
git pull repo branch
exec git-update-server-info
En mi caso, había especificado un árbol de trabajo, y esto rompe algunos comandos, como pull
(o más precisamente fetch
).
Para desarmar el árbol de trabajo si está en tu configuración de git es a través de:
git config --unset core.worktree
(Hay otras maneras de establecer un árbol de trabajo)
Importante tener en cuenta,
No hay ningún problema de que este sea su problema a menos que usted mismo excave este hoyo a su alrededor mediante el uso de un árbol de trabajo personalizado en primer lugar.
Broma:
Esto me implica que los internos de git usan rutas relativas al worktree + .git/
en algunos casos. En mi experiencia, los árboles de trabajo no están bien soportados en absoluto, excepto por las partes más fundamentales de git. No he experimentado a fondo, Git probablemente se comportaría si configuro lo que sea que la variable de configuración del directorio git es correcta, con lo que no he jugado.
Intente en su lugar:
#!/bin/sh
cd /path/to/working-copy/
env -i git pull
Probablemente tengas un problema de permisos. No estoy seguro de cómo ha configurado su repositorio de git, pero si se está ejecutando bajo el usuario de git
, asegúrese de que el usuario de git
pueda ejecutar el git pull
en su directorio de proyecto.
Opcionalmente, intente esto para descubrir qué usuario es cuando se ejecuta el enlace:
echo `whoami`