>

커밋하기 전에 닫아야하는 바이너리 파일이 몇 개있는 프로젝트를 관리하기 위해 git을 사용하고 있습니다. 따라서이 파일을 연 응용 프로그램이 실행 중인지 확인하는 git hook이 필요합니다.

내가 사용하고있는 스크립트는 다음과 같다

#!/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

그러나 사전 커밋을 커밋하거나 실행할 때이 오류가 발생합니다. "일부 앱"이 실행되지 않는 경우에도

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

파일에 대한 권한은

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


  • 답변 # 1

    어떤 문제가 발생했는지는 모르므로 추측하겠습니다.

    "-메시지를 표시하고 0이 아닌 상태로 종료"부분을 표현하는 데 문제가있는 경우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
    
    

    숫자 (예제에서는 5)는 중요하지 않습니다. osascript는 어떤 숫자를 선택하든 상태 1로 종료됩니다. 메시지 형식을 제어 할 수 없지만 0이 아닌 종료 상태는 커밋을 차단합니다.

    사전 커밋 후크를 실행하는 데 문제가있는 경우이를 .git/hooks/pre-commit저장하고 실행 가능하도록저장하십시오.

    (업데이트) -10810 오류가 발생하면 시스템 이벤트없이 수행하십시오. 이렇게

    #!/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
    
    

  • 답변 # 2

    위의 osascript가 작동하면 쉘 스크립트를 통해 실행할 수 있습니다. 스크립트 편집기를 사용하여 osascript를 앱으로 전환하십시오. 그런 다음이 쉘 스크립트는 git pre-commit hook 일 수 있습니다. 다음과 같은 것 :

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

    이 기법을 사용하여 crontab을 통해 스크립트를 시작하므로 상황에 따라 작동합니다.

  • 이전 iphone - 볼륨 버튼 버그 iOS7
  • 다음 macbook - 업그레이드 후에도 메모리가 거의 가득 찬 것처럼 보이는 이유는 무엇입니까?