de svn para git (+ LDAP + atualizações sem senha + controle de acesso com senha)

1

Temos uma configuração do SVN e há algumas coisas de que não gostamos e algumas coisas que gostamos nela. Queremos mudar para o git, mas não temos certeza de qual configuração funcionará para nós. No momento, estamos usando SVN (w / Authz) + Apache (com WebDAV e LDAP).

  1. Gancho para atualizar o site ao vivo [como]
  2. A atualização do site ativo não requer interação adicional [como]
  3. Atualização do site ao vivo usa senha armazenada [não gostar]
  4. As confirmações exigem autenticação de senha centralizada [como]
  5. Confirmação de alterações ao vivo no site de credenciais armazenadas [não gostar]
  6. Controle de acesso (por repositório) para confirmações [like]

O ponto 5 acima é o que continua a nos encher. Alguém faz um commit do site ao vivo e então o gancho quebra.

Estamos pensando em usar gitosis / gitolite para obter controle de acesso, mas como eles usam chaves ssh, não precisaremos de senhas. Também estamos pensando em usar o git-http-backend e usar o Apache para autenticação, mas depois perdemos o controle de acesso? O site ao vivo pode ser atualizado automaticamente a partir de um gancho se o Apache exigir autenticação? Podemos combinar git-http-backend e gitosis / gitolite de alguma forma? Podemos armazenar credenciais http com git?

    
por Jayen 22.03.2012 / 05:37

2 respostas

1

Se você ainda preferir usar svn up para o site ativo, leia svn help up com cuidado e preste atenção em algumas opções para lidar com as credenciais da maneira inteligente

Global options:
  --username ARG           : specify a username ARG
  --password ARG           : specify a password ARG
  --no-auth-cache          : do not cache authentication tokens
    
por 22.03.2012 / 08:18
1

We're also thinking to use git-http-backend, and use Apache for authentication, but then do we lose access control?

Não, você pode configurar a autenticação com o ldap quase exatamente como você o usou para o SVN. O Gitweb e o git-http-backend usam o mod_ldap como o SVN para fins de autenticação.

Can the live site be automatically updated from a hook if Apache requires authentication?

O Git vem com o gitweb por padrão. É prodominately o que é usado lá fora para um navegador on-line para a sua base de código-fonte. Você pode configurá-lo atrás do Apache com o mod_ldap para fins de autenticação, assim como o git-http-backend. Nenhum gancho é necessário para atualizar o navegador on-line e os repositórios listados nele. Tudo isso é mantido pelo cgi, git-http-backend.

Can we combine git-http-backend and gitosis/gitolite somehow?

gitolite é o que você quer:

link

A gitosis é basicamente depreciada:

Ubuntu-server: convenção de nomenclatura de usuários da gitosis

Pessoalmente, apenas usamos o LDAP para autorização e autenticação do usuário. Você realmente não precisa de gitolite para gerenciamento de usuários se estiver usando o LDAP. Você pode usar qualquer ferramenta geral de gerenciamento de usuários LDAP para isso. A maioria das distribuições de linux vem com uma variedade de ferramentas de interface do usuário para gerenciar o openLDAP. Se você windows, basta usar o diretório ativo.

Tanto a abordagem padrão (git, gitweb, git-http-backend, LDAP) e gitolite suportam o seguinte:

  • eles não são usuários "reais", como em logins na caixa física de hospedagem (de acordo com o uso do LDAP)
  • eles não recebem acesso ao shell (de acordo com o uso do LDAP)
  • controlam o acesso a muitos repositórios git
  • acesso de leitura controlado no nível do repo
  • pode ser instalado sem acesso root, supondo que git e perl já estejam instalados A autenticação é mais comumente feita usando o sshd, mas você também pode usar o httpd se preferir (isso pode exigir acesso root).

No entanto, se você quiser um gerenciamento de usuários refinado sem LDAP e atender aos critérios a seguir, o gitolite pode ser uma solução melhor:

  • use um único usuário unix (usuário "real") no servidor
  • fornece acesso a muitos usuários de gitolite
  • acesso de gravação controlado no nível da filial / tag / arquivo / diretório, incluindo quem pode retroceder, criar e excluir ramificações / tags

De link

Can we store http credentials with git?

Sim, você pode armazenar / atribuir usuários usando o git config:

git config --global user.name "Foo Bar"
git config --global user.email "[email protected]"
git config --global user.password "yourpassword"
git config --global github.user "yourusername"
git config --global github.password "yourpassword"

Embora, se você usá-lo com SSH, verifique se está usando certificados de CA e não um autoassinado. O Git tem esse hack estranho, sslVerify = false, para fazê-lo funcionar com certificados auto-assinados, o que parece frustrar o propósito de usar certs.

Quando você vai migrar o código do svn para o git, você precisará de uma boa ferramenta de importação. Eu não consegui encontrar nenhum que funcionasse bem para grandes repositórios, então escrevi o meu próprio. Sinta-se livre para experimentar se você encontrar problemas com o git-svn:

link

    
por 22.03.2012 / 15:58