Git clone / push / pull - de onde vem esse nome de usuário?

1

Eu configurei a gitosis e consegui puxar / empurrar o ssh. O Gitosis está instalado no servidor Debian Lenny, estou usando o git do windows machine (msysgit). O mais estranho é que, se eu habilitar loglevel = DEBUG no gitosis.conf, eu vejo algo assim quando faço alguma ação com o servidor da gitosis:

D:\Kaze\source\test-project>git pull origin master
DEBUG:gitosis.serve.main:Got command "git-upload-pack 'test_project.git'"
DEBUG:gitosis.access.haveAccess:Access check for '[email protected]' as 'writable' on 'test_project.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'test_project.git', new value 'test_project'
DEBUG:gitosis.group.getMembership:found '[email protected]' in 'test'
DEBUG:gitosis.access.haveAccess:Access ok for '[email protected]' as 'writable' on 'test_project'
DEBUG:gitosis.access.haveAccess:Using prefix 'repositories' for 'test_project'
DEBUG:gitosis.serve.main:Serving git-upload-pack 'repositories/test_project.git'

From 192.168.175.128:test_project
 * branch            master     -> FETCH_HEAD
Already up-to-date.

A pergunta é: por que eu sou [email protected] ? Este e-mail está na variável global user.email config também.

Ontem, quando a gitosis foi instalada, ela me viu como kaze @ KAZE , esse é o nome sob o qual eu fui adicionado ao grupo gitose-admin (e funcionou). Mas hoje git (ou gitosis) começou a me ver como [email protected] . Isso vale para todos os repositórios que eu envio ou clona. Eu tive que adicionar este endereço para gitosis.conf diretamente no servidor para poder editar as configurações novamente (funcionou). Existem duas chaves públicas em keydir : [email protected] e [email protected] , seu conteúdo é idêntico e eles têm kaze @ KAZE no final. O URL de origem é semelhante a git@lennyserver:test_project .

Agora, a questão é - por que o Git (ou a gitosis) de repente decidiu me chamar por e-mail em vez de nome @ machinename ? Eu mudei algumas coisas tentando configurar o Gitosis (git atualizado no servidor para 1.6.0 por exemplo), mas talvez eu tenha quebrado algo na minha instalação local do git?

    
por Kuroki Kaze 17.06.2010 / 13:32

1 resposta

1

Do ponto de vista da Gitosis, seu nome é apenas o nome, em keydir , da chave pública com a qual você autenticou. Nenhuma configuração em sua máquina local é importante, exceto quando afeta a chave pública que você usa, e a string no final da chave não importa - apenas o nome do arquivo.

Você deu dois nomes à sua chave pública, por isso, quando você autentica com essa chave, ela é indefinida em qual deles encontra quando procura um nome para essa chave. Quando você mudou algumas outras coisas na Gitosis, presumivelmente aconteceu de mudar a escolha arbitrária de qual nome ela encontrou.

(Especificamente, acredito que o Gitosis gere seu próprio authorized_keys para conter todas as chaves em keydir , uma por linha, com opções para dizer a sshd para permitir que o usuário execute a Gitosis, apenas de maneira controlada, e dizendo a Gitosis o nome da chave.Se várias linhas tiverem a mesma chave, não tenho certeza qual delas sshd acaba usando - talvez a primeira, talvez a última, talvez seja arbitrária.A ordem na qual Gitosis escreve eles também podem ser arbitrários, mas realmente os detalhes de como a escolha arbitrária acontece estão fora de questão, porque ninguém garante que eles não serão alterados na próxima atualização para sshd ou gitosis .

Você deve escolher o nome que deseja usar para se referir a si mesmo na configuração do Gitosis e manter em keydir apenas a cópia da sua chave com esse nome.

    
por 07.07.2010 / 08:44