Tengo un repositorio desnudo CENTRAL que tiene tres repositorios de desarrolladores tirando de él y empujándolo normalmente.¿Cómo fuerzo a Git Pull para sobrescribir todo en cada extracción?
También tengo otros dos repositorios que extraen del repositorio central CENTRAL: uno es el servidor en vivo, y el otro es un servidor de prueba/etapa, cada uno extrayendo de su propia rama respectiva.
El escenario es este: tengo un script de gancho post-update
en el repositorio CENTRAL que automáticamente accede a los repos test y live y ejecuta un comando de extracción en cada uno. Esto actualiza los servidores de prueba y en vivo, todo depende de qué rama tenga nuevas confirmaciones. Todo esto funciona genial
El problema es este: puede haber ocasiones en una emergencia que los archivos pueden actualizarse directamente en el servidor (a través de ftp o lo que sea) y el script CENTRAL posterior a la actualización fallará ya que se producirán conflictos de fusión/sobrescritura. No hay forma de evitar este escenario, y es inevitable.
Lo que me gustaría que sucediera es esto: quiero que el tirón de los sitios en vivo y de prueba sea siempre sobreescribir/fusionar al tirar. Siempre. Estos repositorios serán de solo extracción ya que no son para desarrollo.
En toda mi investigación, no puedo encontrar una buena solución para tener una extracción siempre forzar una sobreescritura de los archivos locales. ¿Es esto posible? Sería un gran escenario de desarrollo si es así.
Aunque he votado a favor de la 'reset a lo que acaba de descabellada' respuesta a continuación, creo que la solución su verdadero problema es no hacer cambios fuera de banda. Las modificaciones, sin importar la urgencia, deberían * siempre * pasar por el control de versiones. Nadie, excepto los operadores, debe tener acceso directo a los sitios en ejecución (por ejemplo, no desarrolladores). Usar el control de versiones consistentemente significa que tiene un registro de cuándo se realizaron los cambios y quién los hizo, y mejores herramientas para trabajar con ellos. ¿Por qué subvertirlo, sin ningún beneficio real? – Novelocrat
@Novelocrat, entiendo lo que dices. Desafortunadamente, hay una serie de escenarios en los que alguien puede subir un archivo directamente al servidor. En ese caso, necesitaría ejecutar una serie de comandos para volver a sincronizar los repos. Anteriormente utilizamos un script FTP para mover archivos desde el repositorio al servidor. El método propuesto anteriormente eliminaría simplemente el paso de FTP, que ha funcionado muy bien en el pasado. – bmilesp
Por lo tanto, no permita que las personas accedan al servidor directamente. Bloquee el acceso FTP y SSH, o dígales que serán despedidos por realizar cambios que no se pueden explicar. Permitir que ese tipo de práctica continúe solo te lastima a ti y a tu equipo a largo plazo. – Novelocrat