2014-05-09 21 views
5

Sto usando git clone in uno script bash che prende qualsiasi tipo di posizione git (https, git, ssh, filesystem ...) e lo clonerà. Ma questo script deve funzionare senza interazione con nessun utente. Più precisamente, mi piacerebbe che questo script NON SIA PAUSA per le credenziali: se la posizione richiede credenziali, e git non può trovarle da sola, voglio che git fallisca.Come faccio a forzare git NOT a richiedere le credenziali

La mia sceneggiatura presuppone che non siano le sue preoccupazioni se non hai impostato il modo corretto di accedere a queste posizioni senza password. Tuttavia, la soluzione dovrebbe consentire di conoscere l'errore (ad esempio, l'output di un errore con "Autenticazione non riuscita").

Ho bisogno di questo comportamento semplicemente perché è uno script, deve essere eseguito in modo non interattivo (cron job, VM building ... ecc ...). Ho bisogno che fallisca e non congeli il mio script in attesa di informazioni che non posso nutrirlo (e non voglio farlo).

Quindi, nella mia attuale preoccupazione, ho bisogno che git clone fallisca invece di chiedere informazioni sulle credenziali.

Non ho trovato alcuna opzione in git clone per forzare NOT a chiedere credenziali e preferibilmente fallire su un errore di autenticazione.

+0

Stai usando SSH per l'accesso repo remoto? Se è così, forse dovresti esportare la tua chiave sul server per evitare di chiedere credenziali. –

+0

@GMGray Conosco tutti i modi per configurare il sistema o git per ottenere l'accesso a una posizione senza chiedere credenziali. Questo è il problema dell'utente. Il compito del mio script è quello di clonare i repository a cui ho dato varie posizioni. Non voglio che resti bloccato chiedendo credenziali perché non è pensato per essere uno script interattivo. Grazie, per la tua osservazione, modificherò la mia domanda per essere più chiara su questi argomenti. – vaab

+0

Come ti stai connettendo? SSH o HTTP? – Nilpo

risposta

8

UPDATE: in git version>2.3:

GIT_TERMINAL_PROMPT=0 

Per la versione precedente:

Ecco il mio trucco per forzare in mancanza:

GIT_ASKPASS=/bin/echo git clone ... 
+0

questo mi ha aiutato a diagnosticare un problema durante l'utilizzo di comandi git in un'attività di creazione di vsts, poiché l'output del prompt non veniva visualizzato anche quando si utilizza --progress. Grazie! – GeekyDeaks

+1

Potrebbe anche essere necessario 'GIT_SSH_COMMAND =" ssh -oBatchMode = yes "' per impedire i prompt quando si interagisce su una pipe SSH. – jdknight