Mostrando postagens com marcador git. Mostrar todas as postagens
Mostrando postagens com marcador git. Mostrar todas as postagens

sexta-feira, 18 de fevereiro de 2011

mSysGit - Cliente Git nativo para Windows

Seguindo minha série de posts sobre Git, vou falar hoje da parte cliente, especificamente para Windows. Quando comecei a trabalhar com o Git no Windows a única opção que tinha disponível era via Cygwin, um emulador de Linux para Windows; porém tinhamos problema com pastas e arquivos acentuados. Depois de algum tempo tive uma grata surpresa ao conhecer um projeto que visava ser um cliente git nativo para Windows: o mSysGit. Atualmente, na data que escrevo este artigo, está na versão 1.7.4. Porém este cliente não é visual; é um cliente de linha de comando. Existem clientes visuais, dos quais falarei em outros posts, porém todos rodam sobre o mSysGit.

Instalação

Após fazer o download do instalador, vamos à instalação então:

Tela inicial

Contrato

Caminho para instalação

Na tela abaixo temos algumas opções interessantes como a parte de integração com o menu de contexto do Windows Explorer (o git-cheetah possui opções a mais que Git Bash e Git GUI) e associação de arquivos que começam com o padrão .git* com o editor de texto padrão.
Componentes

Pasta no Menu Iniciar

Na tela abaixo será definindo como o git funcionará via linha de comando: se somente dentro do Git Bash ou se o git será adicionado ao PATH do SO podendo ser usado pelo prompt de comando ou se, além do git, as demais ferramentas Unix que acompanham o mSysGit (comandos Unix diversos como ls, cp, mv, ssh-keygen) também serão adicionadas ao PATH. Nesta última opção ele avisa que alguns comandos do Windows poderão ser sobrepostos. O padrão é usar somente Git Bash.
Configuração do PATH

Na tela abaixo é definido como o Git irá tratar as quebras de linha nos arquivos (devido ao fato que o Git é muito usado em projetos que também são desenvolvidos em ambiente Linux/Unix e os dois SO's tratam de maneira diferem a quebra de linha): com a primeira opção ele ira usar quebra de linha padrão Windows quando fizer checkout dos arquivos e vai usar quebra de linha padrão Unix quando der commit (é a opção mais aconselhável); na segunda opção, a quebra de linha não será alterada no momento do checkout, porém vai usar quebra de linha padrão Unit no momento do commit; na terceira opção a quebra de linha não será alterada em nenhum momento.
Estilo de quebra de linha

Instalando

Finalizando

Utilização

Após a instalação, você poderá ver os ícones do Git disponíveis no menu iniciar.

Ícones do Git no menu iniciar do Windows.

Ele também se integra com o menu de contexto do Windows Explorer.

Git integrado com o menu de contexto do Windows Explorer

A partir daí, você pode usar as ferramentas que o mSysGit disponibiliza:

Git Bash

Gui GUI

GitK

Em breve escreverei sobre alguns clientes Git com interface gráfica mais elaborada, porém que não dispensam a necessitam do mSysGit.

terça-feira, 25 de maio de 2010

Instalando e Configurando o Gitosis no Ubuntu

Este é primeiro artigo de uma série que irei escrever falando sobre o Git que, na minha opinião, é uma das melhores ferramentas de SCM disponíveis no mercado. Posteriormente falarei um pouco sobre o histórico do Git, porém no momento vou me concentrar em como configurar um servidor para servir de repositório central para todos os seus repositórios Git. Apesar de ser um DCVS, ter um repositório centralizado oferece diversas facilidades como, por exemplo, um referência de onde todos os desenvolvedores podem atualizar seus repositórios locais.
Existem bons serviços disponíveis na web para armazenar repositórios Git como, por exemplo, o GitHub e o Assembla, sendo que este último é um portal de gerenciamento de projetos que oferece também o serviço de armazenamento de repositórios. Porém, devido aos mais variados motivos, pode ser conveniente ou necessário que os nossos repositórios sejam armazenados num servidor próprio, seja local ou nas nuvens. Assim sendo, vou mostrar neste tutorial como instalar e configurar o Gitosis, que é uma ferramenta para armazenar repositórios Git, numa máquina rodando Ubuntu.

Instalando o Gitosis

Antes de iniciar, é sempre bom atualizarmos nossos repositórios do Ubuntu:

sudo apt-get update

Feito isso, vamos criar um diretório onde vamos clonar o Gitosis:

cd ~
mkdir src
cd src

Tudo pronto pra clonagem (lembrei de alguns filmes de ficção científica e da novela "O Clone" :D ):

git clone git://eagain.net/gitosis.git

Se aparecer uma mensagem de erro, falando que o git não está instalado, você pode instala-lo da seguinte maneira:

sudo apt-get install git-core

Após finalizar o clone, vai ser criado dentro de ~/src um diretório gitosis. Para prosseguir com a instalação:

cd gitosis
sudo python setup.py install

Normalmente você não terá problemas com o Python, pois o mesmo já vem instalado por padrão, mas pode ocorrer um erro relacionado ao setuptools, que é uma biblioteca python usada em scripts de instalação. Para resolver este problema:

sudo apt-get install python-setuptools

Feito isso, o Gitosis estará instalado. Passamos, então, à fase de configuração.

Configurando o Gitosis

A primeira coisa a fazermos é criar o usuário sob o qual rodará o Gitosis:

sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git

No comando acima estamos criando um usuario chamado git, que não precisa ter senha (--disable-password), porém precisa de um shell válido (--shell /bin/sh). O diretório home (--home /home/git) foi definindo seguindo o padrão linux, porém poderia ser configurado para qualquer outra pasta; neste diretório serão armazenados os repositórios Git.

Agora precisamos gerar uma chave RSA de acesso, visto que o Git roda sobre SSH:

ssh-keygen -t rsa
Vamos, então, iniciar o nosso repositório de configuração do Gitosis:

sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub

Isso já vai incluir a chave do nosso servidor na lista de permissões do Gitosis. Se tudo der certo, aparecerá duas vezes uma mensagem falando que o repositório foi inicializado.

Por segurança, devemos garantir que o hook de post-update do repostório de configuração está com permissão de execução:

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

Agora vamos clonar o repositório de configuração do Gitosis:

cd ~
git clone git@localhost:gitosis-admin.git

Se ocorrer um erro de connection refused na porta 22, é preciso instalar o OpenSSH-Server (lembra-se que o Git roda sobre SSH??):

sudo apt-get install openssh-server

Quando ele perguntar se você deseja adicionar a chave do servidor na lista de hosts conhecidos, responda yes.

OK, agora dentro de ~ temos o diretório gitosis-admin e dentro dele temos os seguintes itens:
  • Arquivo gitosis.conf => Onde configuramos os repositórios disponíveis e o acesso dos usuários a eles;
  • Diretório keydir => Onde devem ser armazenadas as chaves RSA dos usuários que poderão acessar os repositórios do servidor.
Como o diretório gitosis-admin é um repositório Git, todas as alteração feitas nele deverão ser comitadas (git commit) e enviadas para o repositório central (git push).

Criando novos repositórios

Para começar, abra o arquivo gitosis.conf. Ele deve parecer da seguinte forma:

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = usuario@nome_ubuntu

Onde temos o nome do grupo entre [], o nome dos projetos com permissão de escrita (writeable) e o usuário que possui esta permissão. Para adicionar um novo projeto, podemos adicionar as seguintes linhas:

[group equipe]
writable = projeto1 projeto2 projeto3
readonly = projeto4
members = usuario1@maquina1 usuario2@maquina2

No exemplo acima, estamos dando permissão de escrita para os projetos 1, 2 e 3 e acesso somente leitura (readonly) ao projeto4 para os usuários usuario1@maquina1 e usuario2@maquina2. Esses nomes de usuario vem do arquivo id_rsa.pub que é gerado em cada máquina:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAniABr9ynN57KK0ScYDM0lM3h9KBRpa7b
FBIM1aoX2slOKbj4gSdFk2P29tmFb505lly+xsXXCJ//iHheLgpRUcIPG+fLUXYiOhT6
+dv3ERlrhHQ0XmByayMafWyKvsQw6HYjfPNbt4RUnKSLuERSuQsiORCrT0j34lg2ASMk
0+QLOl6HRI1+4GQHXnLydMVbV1dvHeCf1hHfRMcjk5dAmb8m+EW7JJuNjnCby4psEFpG
70ff1T8l8JL1bUwcECfoEQ7GtpjeOTdGCW14D0cb36uXRWvU03kBLJFBbGn7Wuu4VPFz
t2ACPfim8fe9LWGguVVcEKjFonxXJs9BJsMecQ== usuario1@maquina1

Após serem gerados nas máquinas, os arquivos id_rsa.pub devem ser copiados para a pasta ~/gitosis-admin/keydir e renomeados de acordo com o nome do usuário. Seguindo o exemplo acima, teriamos 2 arquivos dentro do diretório keydir chamados usuario1@maquina1.pub e usuario2@maquina2.pub .

Após feitas estas configurações, como já foi dito anteriormente, devemos comitar as alterações e enviar para o repositório central:

cd ~/gitosis-admin
git add keydir
git add gitosis.conf
git commit -m "Adicionados novos projetos e usuarios"
git push

Feito isso, as configurações já estão valendo no servidor e os usuários que tiverem acesso já podem clonar os repositórios normalmente.