Tengo mi repositorio de desarrollo local (origen) y un repositorio remoto que creé usando git inicializar –bare como recomendado aquí. yo también corrí git --bare update-server-info
git config --bool core.bare true
Git remoto -v muestra
origin http://staging.websitename.com (fetch)
origin http://staging.websitename.com (push)
remote ssh://user@xx.xx.xx/home/user/public_html/staging (fetch)
remote ssh://user@xx.xx.xx/home/user/public_html/staging (push)
Después de esto y ejecutando git push remote o git push -all remote, pasa y no me da errores. ¿Por qué no veo los archivos en el repositorio remoto?
Compressing objects: 100% (4121/4121), done.
Writing objects: 100% (4242/4242), 18.70 MiB | 694 KiB/s, done.
Total 4242 (delta 495), reused 0 (delta 0)
Los repositorios básicos no tienen copias de trabajo, por lo que no “verá” ningún archivo. Intenta hacer un registro de git, puedes ver las confirmaciones. Clone desde el repositorio básico y obtendrá archivos.
El punto esencial de un --bare
repo es que no tiene una copia de trabajo (ni un índice), lo que significa que no hay nada que se estropee con un empujón.
Si desea que ciertos impulsos (a una o más sucursales particulares) se “implementen automáticamente”, la forma de hacer que eso suceda es usar un gancho git en el --bare
repositorio El anzuelo, generalmente post-receive
aunque es posible utilizar el pre-receive
o update
ganchos aquí, se ejecuta en todos push, por lo que debe comprobar si el push en cuestión es “interesante” (afecta a la(s) rama(s) de implementación automática) y, de ser así, desencadenar la implementación.
El enlace se ejecuta en nombre del proceso que realiza el envío (a menudo ssh como algún usuario, como en su git remote -v
salida), por lo que si los archivos desplegados deben ser propiedad de otro usuario, debe organizarlo de alguna manera. Un método fácil, simple y razonable es escribir en un archivo que está configurado en modo rw-rw-rw-
(que todos pueden escribir) y hacer que algo (como un trabajo cron) verifique el archivo periódicamente. Si se escribe, el trabajo cron, que se ejecuta como el usuario de implementación, puede extraer la versión más reciente de las ramas correspondientes. Otro método es ponerse en contacto con un servidor (títere, etc.) que hace esto.
Si el usuario que hace el push (user@xx.xx.xx
) puede poseer los archivos, un método aún más simple es ejecutar git checkout
en el gancho, pero con un árbol de trabajo alternativo que no tiene otra conexión con el --bare
repositorio
encontré esta respuesta extramadamente útil; te permite hacer lo que quieras con pasos mínimos: superusuario.com/questions/1316300/…
– Matt W.
18 de febrero de 2021 a las 22:39