Eu gostaria de tornar possível para qualquer usuário clonar um repositório sem ter que especificar o nome de usuário no comando clone .
Por exemplo, digamos que meu nome de usuário git seja john.doe (por exemplo, requisito do cliente), mas a conta local em que estou logado no meu PC é j.doe (por exemplo exigência da empresa), o git tentará usar j.doe para clonar o repositório.
Isso é um tanto sutil, mas significativo, então usei os dois exemplos a seguir para ilustrar:
1. Clonagem com sintaxe anônima:
Se eu fizer o seguinte:
j.doe~
$ git clone https://mygit.repo.url/somerepository.git
... git assume sem perguntar que o nome de usuário remoto é o mesmo que o nome de usuário da conta local (ou seja, j.doe ) e tenta clonar da seguinte forma :
Cloning into somerepository
[email protected]'s password:
mas, neste caso, j.doe não é uma conta no repositório remoto.
2. Clonagem com nome de usuário explícito:
A solução usual é especificar o nome de usuário remoto da seguinte forma:
j.doe~
$ git clone https://[email protected]/somerepository.git
Isso é bem-sucedido, mas requer que todo usuário use um comando clone diferente.
Por que me importo?
Existem vários casos em que a sintaxe anônima seria mais adequada, por exemplo:
- É mais portátil automatizar - não é necessário escrever instruções de entrada específicas do SO ou da linguagem para obter o nome de usuário.
- É mais consistente para o usuário. A solicitação de usuário / senha sempre terá a mesma aparência.
- Torna mais fácil escrever instruções de instalação claras e consistentes. O usuário pode copiar e colar.
- Impede que você tenha que escrever um wrapper diferente para cada linguagem de script e SO que tenta automatizar o procedimento.
- Ao efetuar o check-out de um repositório que depende de git submodules, os arquivos .gitmodules devem primeiro ser editados para incluir o nome de usuário, se o usuário conectado não for o mesmo que o usuário git. Isso é muito inconveniente no caso de vários usuários.
Caso em questão.
Eu sei que essa funcionalidade é possível porque o github a usa. Por exemplo, se você clonar um repositório no github usando a sintaxe anônima , verá algo como o seguinte:
j.doe~
$ git clone https://github.com/dbostock/d3.git
Cloning into 'd3'...
Username for 'https://github.com':
Muito legal! Usando qualquer shell, qualquer sistema operacional, qualquer linguagem de script, posso identificar, autenticar e clonar meu repositório.
Então, no final, minha pergunta se resume a: Como o github faz isso?