como evitar que o git use o nome de usuário logado

1

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:

  1. É 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.
  2. É mais consistente para o usuário. A solicitação de usuário / senha sempre terá a mesma aparência.
  3. Torna mais fácil escrever instruções de instalação claras e consistentes. O usuário pode copiar e colar.
  4. Impede que você tenha que escrever um wrapper diferente para cada linguagem de script e SO que tenta automatizar o procedimento.
  5. 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?

    
por chriskelly 08.09.2014 / 14:14

2 respostas

0

Pelo que li, a resposta parece ser o protocolo usado para clonar o repositório. De acordo com este livro git , na seção intitulada < em> O protocolo SSH diz:

You can also not specify a user, and Git assumes the user you’re currently logged in as.

Os protocolos alternativos incluem:

  • link - usado pelo github e que permite especificar um usuário,
  • local - que não requer autenticação,
  • git - não menciona o problema do ssh, mas ainda tenho que verificar.
por 23.09.2014 / 21:31
1

A raiz pode usar sudo como qualquer outro usuário. Ou isso, ou apenas mude a propriedade dos arquivos após a operação clone.

Is there a way, either from the client or server, to configure a git repository so that it always asks for the username?

O Git usará o nome de usuário conforme especificado em ~ / .git / config ou conforme especificado em seu URL de repositório. No entanto, lembre-se de que esse é o nome de usuário do sistema remoto , não o nome de usuário local, portanto, isso não afetará a propriedade.

A solução aqui é usar sudo para sua operação de clonagem do git.

    
por 08.09.2014 / 14:21

Tags