Agora vamos abordar a configuração de um serviço git rodando esses protocolos em seu servidor.
|
Note
|
Aqui estaremos demonstrando comandos e passos necessários para fazer instalações básicas e simplificadas em um servidor baseado em linux, embora seja possível rodar esses serviçoes em servidores Mac ou Windows. Na prática, configurar um servidor de produção dentro da sua infraestrutura certamente irá envolver diferenças nas medidas de segurança ou nas ferramentas do sistema operacional, mas esperamos que isso lhe dê uma ideia geral do que está envolvido. |
Para configurar inicialmente qualquer servidor git, você tem que exportar um repositório existente em um novo repositório vazio (bare repository) - um repositório que não contém um diretório de trabalho.
Isso geralmente é fácil de fazer.
Para clonar seu repositório e criar um novo repositório vazio, você roda o comando com a opção --bare.
Por convenção, diretórios vazios terminam com .git, como neste exemplo:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.Agora você deve ter uma cópia do diretório de dados Git em seu diretório my_project.git.
Isso é aproximadamente equivalente a algo como:
$ cp -Rf my_project/.git my_project.gitExistem algumas pequenas diferenças no arquivo de configuração; mas para o seu propósito é praticamente a mesma coisa. Ele pega o repositório Git isoladamente, sem um diretório de trabalho e cria um diretório específico apenas pare ele.
Agora que você tem uma cópia vazia do seu repositório, tudo que você precisa fazer é colocá-lo em um servidor e configurar seus protocolos.
Vamos supor que você configurou um servidor chamado git.example.com que você possui acesso via SSH e você quer armazenar todos os seus repositórios Git no diretório /srv/git.
Supondo que /srv/git exista no servidor, você pode configurar seu novo repositório copiando seu repositório vazio para ele:
$ scp -r my_project.git user@git.example.com:/srv/gitNeste ponto, outros usuários que tenham acesso SSH para o mesmo servidor e que possuem permissão de leitura para o diretório /srv/git pode clonar seu repositório executando o seguinte comando:
$ git clone user@git.example.com:/srv/git/my_project.gitSe um usuário acessar um servidor via SSH e tiver acesso ao diretório /srv/git/my_project.git, ele também vai automaticamente ter permissão para enviar alterações (push).
Git vai automaticamente adicionar permissões de escrita de grupo a um repositório corretamente se você rodar o comando git init
com a opção --shared.
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --sharedVeja o quão fácil é pegar um repositório Git, criar uma versão vazia e colocá-la em um servidor do qual você e seus colaboradores tem acesso SSH. Agora vocês estão prontos para colaborar no mesmo projeto.
É importante notar que isso é literalmente tudo o que você precisa fazer para executar um servidor Git funcional ao qual várias pessoas tenham acesso - basta adicionar contas com acesso SSH em um servidor e colocar um servidor vazio em algum lugar que todos esses usuários tenham acesso de leitura e escrita. Você está pronto - nada mais é necessário.
Nas próximas seções, você verá como expandir para configurações mais sofisticadas. Essa discussão irá incluir não ter que criar contas de usuários para cada usuário, adicionar acesso público de leitura para repositórios, configurar interfaces web e muito mais. No entanto, mantenha em mente que para colaborar com algumas pessoas em um projeto privado, tudo que você precisa é um servidor SSH e um repositório vazio.
Se você faz parte de uma pequena empresa ou está experimentanto Git em sua organização e tem poucos desenvolvedores, as coias podem ser simples para você. Um dos aspectos mais complicados de configurar um servidor Git é o gerenciamento de usuários. Se você quer que alguns repositórios tenham acesso de somente leitura para certos usuários e leitura/escrita para outros, acesso e permissões podem ser um pouco mais difíceis de configurar.
Se você tem um servidor do qual todos os seus desenvolvedores já tem acesso SSH, geralmente é mais fácil configurar seu primeiro repositório nele, porque você tem que fazer quase nenhum trabalho (como abordamos na seção anterior). Se você quer um controle de acesso mais complexo em seus repositórios, você pode gerenciá-las com as permissões normais do sistema de arquivo do sistema operacional que seu servidor executa.
Se você quer colocar seus servidores em um servidor que não possui contas para todos no seu time que você quer que tenha acesso de escrita, você terá qeu configurar acesso SSH para eles. Nós assumimos que se você tem um servidor que deseja fazer isso, você já possuam um servidor SSH instalado e que é dessa maneira que você está acessando o servidor.
Há algumas maneiras de dar acesso a todos no seu time.
A primeira é configurar contas para todos, que é bem simples, mas pode ser trabalhoso.
Você pode não querer executar adduser e definir senhas temporárias para cada usuário.
Um segundo método é criar um único usuário 'git' na máquina, pedir para cada usuário que deve ter acesso de escrita enviar para você uma chave pública SSH e adicionar essa chave no arquivo ~/.ssh/authorized_keys do seu novo usuário 'git'.
A partir daí, todos vão ser capazes de acessar a máquina através do usuário 'git'.
Isso não afeta os dados de commit de forma alguma - o usuário SSH que você conecta não afeta os commits que você registrou.
Outra maneira de fazer isso é configurar seu servidor SSH para autenticar a partir de um servidor LDAP ou alguma outra fonte de autenticação que você já tenha configurado. Contanto que cada usuário possa ter acesso ao shell da máquina, qualquer mecanismo de autenticação SSH que você possa imaginar deve funcionar.