terminar servicio saber procesos proceso para obtener matar encontrar determinar como comando git process

git - servicio - saber el pid de un proceso



¿Qué señales se pueden usar con seguridad para matar un proceso Git y cuáles no? (2)

En realidad, git intenta ser completamente transaccional, es decir, nunca deja el repositorio en un estado inconsistente, sin importar cuándo o cómo se interrumpa una operación. Vea esta pregunta: ¿Se puede corromper un repositorio de git si un comando que lo modifica falla o es abortado?

Por lo tanto, no debería importar cómo termine el proceso de git, si usa SIGTERM, SIGKILL o el botón de encendido rojo. La excepción, como se señaló en la respuesta anterior, es que los archivos en el directorio de trabajo pueden ser una mezcla de archivos de diferentes ramas, ya que los archivos no se pueden reemplazar todos a la vez.

Dicho esto, la seguridad de las transacciones es difícil de probar (ya que hay muchos casos de esquina), por lo que no confío al 100% en que Git esté seguro en esta situación. Normalmente deberías estar bien, pero puedes atacar un error de vez en cuando y estropear el repositorio.

  • ¿Qué señales son seguras, cuáles no?

  • Para aquellas señales que no son seguras, ¿qué daño podría causarse al matar un proceso Git? ¿Podría dejarse el árbol de trabajo en un estado indefinido? ¿Se podría corromper .git / index o incluso .git / objects-database?

  • ¿Los archivos están escritos en algún tipo de operación "atómica" por Git? (Archivos de árbol de trabajo, .git / index, archivos de configuraciones, etc.)

Actualización: pregunta más precisa sobre las señales.


Eso depende de lo que GIT esté haciendo cuando intentas matarlo.

Si lo mata durante un clon, asegúrese de que quedará en algún estado parcialmente incompleto, pero es fácil recuperarse de eso: elimine el desordenado clon parcial y vuelva a clonar.

En mi experiencia, GIT no destruye los archivos que administra cuando falla. Lo maté en medio de empujones antes sin mucho daño a los archivos que cambié. Por supuesto, el registro de mensajes puede ser un poco estridente.

Sin mucho más detalle de lo que has proporcionado, es difícil decirlo.