Una sola configurazione Git può servire due percorsi molto diversi: un host esterno raggiunto tramite un proxy approvato e un host interno raggiunto direttamente. Non dovete modificare il valore globale predefinito ogni volta che cambiate repository.

Git supporta la configurazione HTTP specifica per URL. Ad esempio:

[http]
    proxy = http://proxy.example:8080
[http "https://git.office.example/"]
    proxy =

Per un repository pubblico esterno in cui i proxy pubblici sono consentiti, l'elenco di proxy HTTP offre candidati per l'endpoint predefinito. Il valore vuoto è un'esplicita sovrascrittura per l'URL corrispondente. È diverso dall'eliminare quella chiave più specifica, che può riesporre il proxy generico.

Fate corrispondere l'URL usato da Git

Lo schema, il nome host, la porta, il percorso e il nome utente opzionale partecipano alle regole di corrispondenza documentate. Non trattate la sottosezione URL come un'espressione generica con caratteri jolly della shell. Una regola di percorso più stretta può prevalere su una regola host più ampia.

Per un'occhiata in sola lettura alla configurazione proxy corrispondente:

git config --get-urlmatch http.proxy https://git.office.example/team/project.git

Questo ispeziona la corrispondenza della configurazione. Non è un test di rete e non dimostra che il percorso sia raggiungibile. Considerate anche altri ambiti di configurazione e le impostazioni d'ambiente pertinenti.

Un reindirizzamento non è una nuova corrispondenza di configurazione

La documentazione di Git afferma che gli URL corrispondenti sono quelli forniti direttamente ai comandi Git; gli URL visitati a causa di un reindirizzamento non partecipano a quella corrispondenza. Tenete presente questo limite se il primo host reindirizza i download altrove.

Il percorso dovrebbe corrispondere anche al trasporto. Un remoto SSH non è governato da una sottosezione URL HTTP solo perché lo stesso servizio offre un sito HTTPS.

Usate alcune regole intenzionali, poi ispezionate il risultato per URL rappresentativi. Un lungo accumulo di voci proxy globali, locali al repository e specifiche per URL è molto più difficile da ragionare della distinzione di rete che stavate cercando di esprimere.

Articoli correlati