2010-09-21 17 views
7

tutte le domande che ho trovato vogliono evitare i timeout in git push/pull. Nel mio caso voglio forzarli. I miei push + pull passano tutti da ssh a macchine remote che potrebbero non essere disponibili ad un certo punto nel tempo. Ad esempio, ho uno script che spinge a due repository pubblici remoti. Non voglio che questo script si blocchi per sempre quando si spinge al primo repository e quella macchina non è disponibile. Invece, dopo un certo timeout voglio che il push fallisca e continui con il secondo repo.Forzare un timeout in git push + pull

Qualsiasi opzione qui?

risposta

10

Non penso che sia possibile eseguire un failover automatico con funzionalità integrate. Ma dal momento che Git utilizza solo SSH sotto, dovrebbe funzionare per aggiungere un'opzione ConnectTimeout per le macchine in questione nel tuo .ssh/config. Cf. man ssh_config. Quindi qualcosa come git push foo || git push bar nella shell dovrebbe fare quello che vuoi.

0

da https://github.com/git/git/blob/master/Documentation/config.txt (attorno alla riga 1770 al momento della scrittura)

http.lowSpeedLimit, http.lowSpeedTime :: Se la velocità di trasferimento HTTP è inferiore a 'http.lowSpeedLimit' per più di 'http .lowSpeedTime 'secondi, il trasferimento viene interrotto. Può essere sovrascritto dalle variabili di ambiente 'GIT_HTTP_LOW_SPEED_LIMIT' e 'GIT_HTTP_LOW_SPEED_TIME'.

Io lo chiamo il tweak Codeplex. Aggiungilo al tuo .gitconfig

[http] lowSpeedLimit = 1000 lowSpeedTime = 20