Git enlace de confirmación previa que verifica la aplicación abierta

2

Estoy usando git para administrar un proyecto que tiene algunos archivos binarios que deben cerrarse antes de comprometerse. Así que necesito un gancho de git, que comprueba si la aplicación que tiene estos archivos abiertos se está ejecutando.

Aquí está el script que estoy usando

#!/usr/bin/env osascript

tell application "System Events"
    set apps to the name of every process whose background only is false
end tell

if "Some App" is in apps then
    error "Some App is running. Can't commit until Some App is quit" number 5
end if

Pero recibo este error cuando confirmo o ejecuto la confirmación previa. Incluso cuando "Algunas aplicaciones" no se está ejecutando.

.git/hooks/pre-commit:50:106: execution error: An error of type -10810 has occurred. (-10810)

Los permisos en el archivo son

-rwxr-xr-x@ 1 toddgeist  staff   263 Dec  7 07:33 pre-commit
    
pregunta toddgeist 06.12.2014 - 21:43

2 respuestas

1

No dices en qué problema te encuentras, así que déjame adivinar.

Si tiene problemas con la forma de expresar la frase "- mostrar un mensaje y salir con un estado que no sea cero", use el comando error :

#!/usr/bin/env osascript

tell application "System Events"
    set apps to the name of every process whose background only is false
end tell

if "Some Application" is in apps then
    error "Some Application is running" number 5
end if

El número (5 en el ejemplo) no importa; osascript saldrá con el estado 1 sin importar el número que elija. No tiene control sobre el formato del mensaje, pero el estado de salida diferente a cero bloqueará la confirmación.

Si tiene problemas para que el enganche de precompromiso incluso se ejecute, recuerde guardarlo como .git / hooks / pre-commit y hacerlo ejecutable .

(actualizar) Si obtiene el error -10810, intente hacerlo sin los eventos del sistema. Me gusta esto

#!/usr/bin/env osascript

set someApp to "Some App"
set appIsRunning to false
if application someApp is running then
    set appIsRunning to true
end if
if appIsRunning then
    error "Can't commit. Please quit Some App" number 5
end if
    
respondido por el ganbustein 06.12.2014 - 23:53
0

Si su osascript (arriba) funciona, puede iniciarlo a través de un script de shell. Convierte el osascript en una aplicación con el editor de scripts. Entonces este script de shell podría ser tu gancho de pre-confirmación de git. Algo como:

#!/bin/bash
/usr/bin/osascript $HOME/bin/YOUR_OSASCRIPT.app 2>/dev/null

Utilizo esta técnica para iniciar scripts a través de crontab, por lo que debería funcionar en su situación.

    
respondido por el MERM 06.12.2014 - 22:50

Lea otras preguntas en las etiquetas