Soy nuevo en git, así que me disculpo (y corríjame) si uso mal la terminología aquí, pero haré todo lo posible.
Estoy tratando de configurar un repositorio git (concentrador) y una copia de trabajo del sitio de desarrollo (principal) en un servidor web. Intenté diseñarlo después de este artículo . Quiero 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 cambios desde mi repositorio local al concentrador desnudo, obtengo el siguiente resultado del script posterior a la actualización:
remote: sites
remote: fatal: Not a git repository: '.'
Sin embargo, si entro con SSH al servidor como 'sitios' de usuario y ejecuto este script manualmente, funciona muy bien.
GIT_DIR
soluciona el problema.GIT_DIR
lugar dePWD
.cd
-ing cambia elPWD
no elGIT_DIR
. Debe haber un respaldo en git deGIT_DIR
a enPWD
caso de que el primero no esté disponible.git pull
?Prueba en su lugar:
fuente
A pesar de que GIT_DIR no configurado simplemente funciona.
el problema ocurre cuando configura GIT_DIR incorrectamente en otro lugar.
puede agregar eso en su lugar: GIT_DIR = .git / Funcionará
fuente
En mi caso, había especificado un árbol de trabajo, y esto se rompe en algunos comandos, como
pull
(o más precisamentefetch
).Para desarmar el árbol de trabajo si está en su configuración de git es a través de:
(Hay otras formas de configurar un árbol de trabajo)
Importante tener en cuenta,
No hay casi ningún cambio en que este sea su problema a menos que usted mismo haya cavado este agujero a su alrededor utilizando un árbol de trabajo personalizado en primer lugar.
Broma:
Esto implica para mí que los componentes internos de git usan rutas relativas al árbol de trabajo +
.git/
en algunos casos. En mi experiencia, los árboles de trabajo no están bien respaldados en absoluto, excepto por las partes más fundamentales de git. No he experimentado a fondo, Git probablemente se comportaría si configuro la variable de configuración del directorio git correctamente, con la que no he jugado.fuente
Probablemente tenga un problema de permisos. No estoy seguro de cómo ha configurado su repositorio git básico, pero si se está ejecutando bajo el
git
usuario, asegúrese de que elgit
usuario pueda realizar elgit pull
en el directorio de su proyecto.Opcionalmente, intente esto para averiguar qué usuario es usted cuando se ejecuta el enlace:
fuente
echo `whoami`
quewhoami
no?