2016-06-14 27 views
9

Ho un hook git che è in esecuzione ogni volta che qualcuno si impegna nel proprio repository locale.Come sapere se un hook git viene chiamato da non all'interno del terminale/riga di comando

Alcune persone si stanno commettendo dal terminale e alcune persone si stanno impegnando da SourceTree o SmartGit o da qualche altra applicazione di terze parti.

SourceTree si comporta in modo diverso quando si tratta di ganci. Ad esempio, gli errori sono rossi per impostazione predefinita e l'input dell'utente non sembra essere supportato quindi ho bisogno di cambiare i miei script python a seconda che l'utente stia commettendo da SourceTree o SmartGit ecc.

C'è qualche modo per farlo nel mio script?

+0

Hai provato a confrontare le variabili di ambiente utilizzando 'printenv'? – Dario

+0

@Dario No, ci proverò e tornerò da te. – Ogen

+0

@Dario Sto usando 'print os.environ'. E 'questo quello che avevi in ​​mente? Cosa dovrei esaminare esattamente da questo output? – Ogen

risposta

5

Sono stato in grado di risolvere il problema utilizzando questo codice Python. Controlla semplicemente le variabili di ambiente per eventuali occorrenze di client di terze parti. Non so se è la soluzione migliore o se funzionerà tutto il tempo - ma per ora soddisfa i miei bisogni.

is_terminal = True 

for key in os.environ: 
    if "SourceTree" in os.environ[key] or "SmartGit" in os.environ[key]: 
     is_terminal = False 
     break