Escape @ character nella password del proxy git

Ho git proxy config come ‘http.proxy = http: // userId: pwd @ 123 @ipaddress: port’ ma mentre clonato un progetto remoto, sto ricevendo errore come

Cloning into git... error: Couldn't resolve proxy '[email protected]' while accessing http://git.kernel.org/pub/scm/git/git.git/info/refs fatal: HTTP request failed 

Come sfuggire al carattere ‘@’ nella password?

Nota di Pls: non posso cambiare la password.

Vorrei provare a utilizzare il valore Encoded URL del simbolo @ se stai passando la password nell’URL del proxy:

 http.proxy=http://userId:pwd%[email protected]:port 

Nota (novembre 2013)

Codificare l’url (specialmente qualsiasi carattere speciale in una password) è la soluzione giusta.
Il .netrc menzionato di seguito è solo per URL di repo remoto, non per il proxy utilizzato per risolvere detto URL di repo remoto.

Per detta codifica, vedi ” Codifica percentuale “:

La codifica percentuale, nota anche come codifica URL, è un meccanismo per codificare le informazioni in un URI ( Uniform Resource Identifier ) in determinate circostanze. Sebbene sia noto come codifica URL, di fatto viene utilizzato più generalmente all’interno del set URI ( Uniform Resource Identifier ) principale, che include sia Uniform Resource Locator (URL) che Uniform Resource Name (URN). Come tale, viene anche utilizzato nella preparazione dei dati del tipo di supporto application / x-www-form-urlencoded, come spesso viene utilizzato nella presentazione dei dati dei moduli HTML nelle richieste HTTP .

Caratteri riservati dopo la codifica percentuale:

 ! # $ & ' ( ) * + , / : ; = ? @ [ ] %21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D 

Risposta originale (maggio 2011)

Due commenti:

  • avere una password per un server a cui si accede con http (non https) è … strano. La password non è crittografata durante le comunicazioni tra client e server;

  • potresti configurare un .netrc (o _netrc per Windows) nel tuo $HOME , con il seguente contenuto

     machine ipaddress: port
     login userId
     password pwd @

Il ricciolo usato da Git dietro la scena gestirà la codifica bene, @ o no @ .