Git: Servidor de repositórios via SSH

Criando servidor Git acessado por SSH

Git é um sistema de controle de versão muito poderoso e robusto. Ele pode ajudá-lo de várias formas, sendo uma delas gerenciar códigos fonte.

Neste tutorial realizaremos os seguintes passos:

Instalar as dependências para que seja possível configurar o servidor.
Criar o usuário Git, que será o usuário dono dos repositórios.
Criar repositórios utilizando o usuário root.
Clonar repositório e enviar o primeiro commit.

Requisitos

  • Servidor Linux com Debian Jessie ou Ubuntu 16.04
  • Cliente Linux ou Windows com Git instalado

O servidor pode ser um servidor real, uma máquina virtual ou o seu computador pessoal.

O cliente pode ser o próprio servidor, ou seja é possível testar o funcionamento no próprio servidor.

Instalando dependências

Queremos acessar repositório Git através de SSH, não? Portanto precisamos instalar o Git e o servidor SSH.

# apt-get install openssh-server git

Os comandos com # na frente precisam ser executados como usuário root. Comandos que podem ser executados por um usuário comum possuem um $ na frente.

Use o comando abaixo para logar como root no Ubuntu.

$ sudo -i

Criando usuário Git

Depois de instalar os as dependências precisamos criar o usuário que será utilizado para o login no servidor. O nome escolhido foi “git”.

# useradd git -s /usr/bin/git-shell -m -d /home/git
# chmod 2770 /home/git
# passwd git

O primeiro comando cria um usuário chamado git, que no login utilizará git-shell e terá sua pasta pessoal criada em /home/git. O git-shell é um interpretador de comandos especial que aceita apenas os comandos que o Git utiliza. Isso evita que o usuário git crie, mova e apague repositórios, o que poderia causar algumas dores de cabeça.

O segundo comando altera as propriedades de acesso  da pasta pessoal do nosso usuário git. A permissão 770 indica que o dono e o grupo podem ler e escrever na pasta, enquanto outros usuário não terão permissão alguma. O número 2 na permissão indica que todos arquivos e pastas criados dentro desta pasta terão o grupo automaticamente configurado para git.

O terceiro comando é utilizado para criar uma senha para o usuário git.

Criando repositórios

Com o usuário git e sua pasta pessoal prontos podemos criar repositórios.

É possível criar quantos repositórios quiser, sendo também possível criar uma estrutura hierárquica de pastas. Por exemplo, vários projetos com vários repositórios seguindo a estrutura PROJETO/REPOSITORIO.git.

Veja como criar um repositório chamado projeto.git.

# cd /home/git
# git init projeto.git --bare
# chown -R git projeto.git

O primeiro comando entra na pasta pessoal do usuário git.

O segundo comando cria um repositório básico (bare) na pasta projeto.git. Este repositório vai possuir apenas os commits, branches e tags.

O terceiro comando transfere a posse do repositório para o usuário git. Como o repositório foi criado pelo usuário root precisamos mudar esta permissão para que o usuário git possa modificar o conteúdo do repositório.

Clonando repositório e enviando primeiro commit

Agora o servidor, o usuário e o repositório estão prontos podemos usar um computador cliente para cloná-lo, criar um commit e enviar o commit para o repositório.

$ git clone git@192.168.0.10:projeto.git
$ cd projeto
$ nano README.TXT
$ git add .
$ git commit -m 'Add README'
$ git push origin master

O primeiro comando clona o repositório projeto.git para a pasta projeto. O usuário git que foi criado acima e 192.168.0.10 é o número IP do servidor.

O segundo comando entra na pasta do projeto, que estará vazia no caso do repositório estar vazio.

Use o terceiro comando para criar um arquivo de texto chamado README.TXT.

O quarto comando adiciona as modificações da pasta local, ou seja, adiciona o arquivo README.TXT.

O quinto comando cria o commit com a mensagem ‘Add README’.

O sexto comando envia este commit para o servidor.

Concluindo

Uma das coisas que mais gosto do Git é a facilidade que permite ao backup e sincronização entre vários computadores.

Melhor que um servidor Git, são dois.

 

Djones

Deixe uma resposta