Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalando_e_configurando_o_git_gitolite_gitweb_git-daemon_gitstats_debian_squeeze_pt_br [2019/08/08 15:23] (current)
Line 1: Line 1:
 +====== Instalando e Configurando o Git +  Gitolite + GitWeb + Git-daemon + GitStats + Debian Squeeze ======
  
 +
 +Git é um sistema de controle de versão distribuído com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux.
 +
 +Cada diretório de trabalho Git é um repositório com todos os históricos e habilidade total de controle das revisões, não dependente de acesso a uma rede ou a um servidor central.
 +
 +A manutenção de software do Git é atualmente supervisionada por Junio Hamano. É distribuído sob os termos da versão 2 da GNU General Public License.
 +
 +Informações sobre o [[http://pt.wikipedia.org/wiki/Git | Git ]]
 +
 +
 +Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +
 +Valores utilizados:
 +
 +  - Ip do servidor: 10.101.0.11
 +  - Ip do cliente: 10.101.0.1
 +
 +
 +Vamos instalar o core do git no servidor.
 +<sxh bash>
 +aptitude install git-core git-doc -y
 +</sxh>
 +
 +Agora vamos instalar o git no cliente
 +<sxh bash>
 +
 +aptitude install git-core git-doc -y
 +</sxh>
 +
 +Agora vamos configurar alguns valores globais do git, devemos configurar no cliente.
 +
 +Vamos configurar o nome do autor dos códigos
 +<sxh bash>
 +
 +git config --global user.name "Douglas Quintiliano dos Santos"
 +</sxh>
 +
 +Agora vamos configurar o email do autor dos códigos
 +<sxh bash>
 +
 +git config --global user.email douglas@douglasqsantos.com.br
 +</sxh>
 +
 +Agora vamos acertar as variáveis para deixar alguns valores do nosso git coloridos, facilita a visualização.
 +<sxh bash>
 +
 +git config --global color.status auto
 +git config --global color.branch auto
 +</sxh>
 +
 +Podemos visualizar as variáveis globais que configuramos para o git da seguinte forma
 +<sxh bash>
 +
 +git config -l
 +user.name=Douglas Quintiliano dos Santos
 +user.email=douglas@douglasqsantos.com.br
 +color.status=auto
 +color.branch=auto
 +</sxh>
 +
 +Agora no cliente vamos gerar as chaves de ssh tipo rsa que vai ser o nosso acesso ao servidor git
 +<sxh bash>
 +
 +ssh-keygen -t rsa
 +Generating public/private rsa key pair.
 +Enter file in which to save the key (/home/douglas/.ssh/id_rsa): #ENTER
 +Enter passphrase (empty for no passphrase): #ENTER
 +Enter same passphrase again: #ENTER
 +Your identification has been saved in /home/douglas/.ssh/id_rsa.
 +Your public key has been saved in /home/douglas/.ssh/id_rsa.pub.
 +The key fingerprint is:
 +c6:55:64:a9:a6:cd:1c:c6:dd:43:c6:15:83:41:2e:04 douglas@ddouglasqsantos.com.br
 +The key's randomart image is:
 ++--[ RSA 2048]----+
 +|         E.o=====o+o|
 +|          .oo.+ .|
 +|         ..+ =   |
 +|       . .* o o  |
 +|        SB .   . |
 +|       .. +      |
 +|                 |
 +|                 |
 +|                 |
 ++-----------------+
 +</sxh>
 +
 +Agora vamos copiar a chave do cliente para o servidor git para importarmos com o gitolite
 +<sxh bash>
 +
 +scp ~/.ssh/id_rsa.pub 10.101.0.11:/tmp/douglas.pub
 +douglas@10.101.0.11's password: 
 +id_rsa.pub                                    100%  407     0.4KB/  00:00  
 +</sxh>
 +
 +Agora no servidor vamos configurar o gitolite
 +
 +Agora vamos criar o grupo para o gitolite
 +<sxh bash>
 +
 +groupadd gitolite
 +</sxh>
 +
 +Agora vamos criar o usuário para o gitolite
 +<sxh bash>
 +
 +adduser --disabled-password --home /home/gitolite --ingroup gitolite gitolite
 +Adicionando usuário 'gitolite' ...
 +Adicionando novo usuário 'gitolite' (1001) com grupo 'gitolite' ...
 +Criando diretório pessoal '/home/gitolite' ...
 +Copiando arquivos de '/etc/skel' ...
 +Modificando as informações de usuário para gitolite
 +Informe o novo valor ou pressione ENTER para aceitar o padrão
 +  Nome Completo []: #ENTER
 +  Número da Sala []: #ENTER
 +  Fone de Trabalho []: #ENTER
 +  Fone Doméstico []: #ENTER
 +  Outro []: #ENTER
 +A informação está correta? [S/n] s
 +</sxh>
 +
 +Agora vamos instalar o gitolite 
 +<sxh bash>
 +
 +aptitude install gitolite -y
 +</sxh>
 +
 +Agora vamos inserir o gitolite no grupo do apache
 +<sxh bash>
 +
 +usermod -a -G gitolite www-data
 +</sxh>
 +
 +Agora vamos configurar o gitolite
 +
 +Vamos abrir uma sessão com o gitolite
 +<sxh bash>
 +
 +su - gitolite
 +</sxh>
 +
 +Vamos acertar as variáveis do nosso git
 +<sxh bash>
 +
 +git config --global user.name "Douglas Quintiliano dos Santos"
 +git config --global user.email douglas@douglasqsantos.com.br
 +git config --global color.status auto
 +git config --global color.branch auto
 +</sxh>
 +
 +Agora vamos carregar a chave que criamos no cliente para o gitolite
 +<sxh bash>
 +
 +gl-setup /tmp/douglas.pub 
 +creating gitolite-admin...
 +Initialized empty Git repository in /home/gitolite/repositories/gitolite-admin.git/
 +creating testing...
 +Initialized empty Git repository in /home/gitolite/repositories/testing.git/
 +[master (root-commit) d5ac570] start
 + 2 files changed, 6 insertions(+), 0 deletions(-)
 + create mode 100644 conf/gitolite.conf
 + create mode 100644 keydir/douglas.pub
 +</sxh>
 +
 +Como pode ser notado a chave foi carregada e foram criados dois repositórios um que administramos as configurações do gitolite e um de teste.
 +
 +Agora precisamos acertar o arquivo que controla as permissões dos repositórios.
 +<sxh bash>
 +
 +sed -i 's/$REPO_UMASK = 0077;/# $REPO_UMASK = 0077;/g' /home/gitolite/.gitolite.rc
 +sed -i 's/# $REPO_UMASK = 0027;/$REPO_UMASK = 0027;/g' /home/gitolite/.gitolite.rc
 +</sxh>
 +
 +Agora vamos acertar as permissões de nossos repositórios
 +<sxh bash>
 +
 +chmod g+r /home/gitolite/projects.list
 +chmod -R g+rx /home/gitolite/repositories
 +</sxh>
 +
 +Agora vamos sair da sessão do gitolite
 +<sxh bash>
 +
 +exit
 +</sxh>
 +
 +Vamos criar o diretório e acessar o diretório para armazenarmos os repositórios no cliente
 +<sxh bash>
 +
 +mkdir -p /home/douglas/repositorios
 +cd /home/douglas/repositorios
 +</sxh>
 +
 +Agora na maquina cliente vamos clonar o reposiorio de administração
 +<sxh bash>
 +
 +git clone gitolite@10.101.0.11:gitolite-admin.git
 +Cloning into gitolite-admin...
 +remote: Counting objects: 6, done.
 +remote: Compressing objects: 100% (4/4), done.
 +Receiving objects: 100% (6/6), 754 bytes, done.
 +remote: Total 6 (delta 0), reused 0 (delta 0)
 +</sxh>
 +
 +Ainda no cliente vamos efetuar algumas configurações no repositório de adm, deixe o arquivo como abaixo.
 +
 +<sxh bash>
 +
 +vim gitolite-admin/conf/gitolite.conf
 +[...]
 +     repo    gitolite-admin
 +
 +repo    testing
 +      RW+       @all
 +      R         daemon
 +testing "Owner" = "Repositório Teste"
 +</sxh>
 +
 +Precisamos efetuar essa alteração para que o gitweb possa ler o repositório ;)
 +
 +Agora vamos acessar o nosso repositório para adicionarmos as novas configurações do repositório
 +<sxh bash>
 +
 +cd /home/douglas/repositorios/gitolite-admin/
 +</sxh>
 +
 +Agora vamos adicionar o nosso arquivo para ser enviado ao repositório
 +<sxh bash>
 +
 +git add conf/gitolite.conf
 +</sxh>
 +
 +Agora vamos confirmar a nossa atualização.
 +<sxh bash>
 +
 +git commit -m "Alterando configuração para gitweb e git-daemon"
 +[master ee806c1] Alterando configuração para gitweb e git-daemon
 + 1 files changed, 2 insertions(+), 0 deletions(-)
 +</sxh>
 +
 +Agora vamos enviar a alteração para o repositório
 +<sxh bash>
 +
 +git push
 +Counting objects: 7, done.
 +Delta compression using up to 4 threads.
 +Compressing objects: 100% (3/3), done.
 +Writing objects: 100% (4/4), 461 bytes, done.
 +Total 4 (delta 0), reused 0 (delta 0)
 +remote: Already on 'master'
 +To gitolite@10.101.0.11:gitolite-admin.git
 +   8be6892..ee806c1  master -> master
 +</sxh>
 +
 +Agora vamos voltar um diretório para obtermos uma cópia do repositório de teste
 +<sxh bash>
 +
 +cd ..
 +</sxh>
 +
 +Agora vamos clonar o repositório testing.git no cliente
 +<sxh bash>
 +
 +git clone gitolite@10.101.0.11:testing.git
 +Cloning into testing...
 +warning: You appear to have cloned an empty repository.
 +</sxh>
 +
 +Agora vamos acesar o nosso repositório e criar um arquivo de teste
 +<sxh bash>
 +
 +cd testing
 +echo "README" > README
 +</sxh>
 +
 +Agora vamos marcar esse arquivo para ser enviado ao repositório
 +<sxh bash>
 +
 +git add README
 +</sxh>
 +
 +Agora vamos confirmar a nossa atualização.
 +<sxh bash>
 +
 +git commit -m "Adicionando README"
 +[master (root-commit) d8dcf6b] Added README
 + 1 files changed, 1 insertions(+), 0 deletions(-)
 + create mode 100644 README
 +</sxh>
 +
 +Agora vamos enviar para o servidor
 +<sxh bash>
 +
 +git push origin master
 +Counting objects: 3, done.
 +Writing objects: 100% (3/3), 236 bytes, done.
 +Total 3 (delta 0), reused 0 (delta 0)
 +To gitolite@10.101.0.11:testing.git
 + * [new branch]      master -> master
 +</sxh>
 +
 +Agora vamos instalar o gitweb no servidor ;)
 +<sxh bash>
 +
 +aptitude install highlight gitweb apache2 -y
 +</sxh>
 +
 +Agora precisamos fazer alguns acertos sobre a localização dos repositórios no servidor para que o gitweb possa mapeá-los
 +<sxh bash>
 +
 +sed -i 's,$projectroot = "/var/cache/git";,$projectroot = "/home/gitolite/repositories";,g' /etc/gitweb.conf
 +sed -i 's,$projects_list = $projectroot;,$projects_list = "/home/gitolite/projects.list";,g' /etc/gitweb.conf
 +</sxh>
 +
 +Agora já podemos acessar os nossos repositórios em http://10.101.0.11/gitweb
 +
 +Agora vamos configurar o git-daemon
 +
 +<sxh bash>
 +
 +aptitude install git-daemon-run -y
 +</sxh>
 +
 +Vamos fazer um backup do arquivo do daemon
 +<sxh bash>
 +
 +cp -Rfa /etc/sv/git-daemon/run{,.bkp}
 +</sxh>
 +
 +Agora vamos acertar o script de inicilização pois os repositório não estão no local padrão, deixe o arquivo como abaixo.
 +<sxh bash>
 +
 +vim /etc/sv/git-daemon/run
 +#!/bin/sh
 +exec 2>&1
 +echo 'git-daemon starting.'
 +exec chpst -ugitdaemon:gitolite \
 +  "$(git --exec-path)"/git-daemon --verbose --base-path=/home/gitolite/repositories /home/gitolite/repositories
 +</sxh>
 +
 +Agora vamos inicializar o daemon
 +<sxh bash>
 +
 +sv restart git-daemon
 +ok: run: git-daemon: (pid 2810) 0s
 +</sxh>
 +
 +Agora já podemos utilizar o repositório via git, no cliente vamos fazer um teste.
 +<sxh bash>
 +
 +git clone git://10.101.0.11/testing.git
 +Cloning into testing...
 +remote: Counting objects: 3, done.
 +remote: Total 3 (delta 0), reused 0 (delta 0)
 +Receiving objects: 100% (3/3), done.
 +</sxh>
 +
 +Agora vamos ajustar as urls do gitweb, quando acessamos por exemplo o READ acessamos  http://10.101.0.11/gitweb/testing.git?a=blob_plain;f=gitweb/README vamos ajustar para que ele tenha as urls mais simples ;)
 +
 +Vamos comentar as linhas do gitweb no servidor.
 +<sxh bash>
 +
 +vim /etc/apache2/conf.d/gitweb
 +#Alias /gitweb /usr/share/gitweb
 +#
 +#<Directory /usr/share/gitweb>
 +#  Options FollowSymLinks +ExecCGI
 +#  AddHandler cgi-script .cgi
 +#</Directory>
 +</sxh>
 +
 +Agora vamos criar um virtual host para o nosso git
 +<sxh apache>
 +
 +vim /etc/apache2/sites-available/gitweb
 +<VirtualHost *:80>
 +    ServerName gitweb.douglasqsantos.com.br
 +    ServerAdmin webmaster@douglasqsantos.com.br
 +    DocumentRoot /usr/share/gitweb
 +
 +    <Directory /usr/share/gitweb>
 +        Options FollowSymLinks ExecCGI
 +        AddHandler cgi-script cgi
 +        RewriteEngine On
 +        RewriteCond %{REQUEST_FILENAME} -f
 +        RewriteCond %{REQUEST_FILENAME} -d
 +        RewriteRule ^.* /index.cgi/$0 [L,PT]
 +    </Directory>
 +</VirtualHost>
 +</sxh>
 +
 +Agora vamos carregar o nosso virtualhost, e desabilitar o virtual host default
 +<sxh bash>
 +
 +a2ensite gitweb
 +a2dissite default
 +</sxh>
 +
 +Agora precisamos adicionar algumas linhas no final do arquivo /etc/gitweb.conf
 +<sxh bash>
 +
 +vim /etc/gitweb.conf
 +[...]
 +#Adicione no final do arquivo
 +$feature{'pathinfo'}{'default'} = [1];
 +$projects_list_description_width = 100;
 +$feature{'blame'}{'default'} = [1];
 +$feature{'blame'}{'override'} = 1;
 +
 +$feature{'pickaxe'}{'default'} = [1];
 +$feature{'pickaxe'}{'override'} = 1;
 +
 +$feature{'snapshot'}{'default'} = [1];
 +$feature{'snapshot'}{'override'} = 1;
 +
 +$feature{'search'}{'default'} = [1];
 +
 +$feature{'grep'}{'default'} = [1];
 +$feature{'grep'}{'override'} = 1;
 +
 +$feature{'show-sizes'}{'default'} = [1];
 +$feature{'show-sizes'}{'override'} = 1;
 +
 +$feature{'avatar'}{'default'} = ['gravatar'];
 +$feature{'avatar'}{'override'} = 1;
 +
 +$feature{'highlight'}{'default'} = [1];
 +$feature{'highlight'}{'override'} = 1;
 +</sxh>
 +
 +Eu achei um tema bem bacana para o gitweb, vou mostar como instalar ele. 
 +
 +Vamos fazer backup de alguns arquivos do gitweb
 +<sxh bash>
 +
 +cd /usr/share/gitweb
 +mv gitweb.js gitweb.js.old
 +mv gitweb.css gitweb.css.old
 +</sxh>
 +
 +Agora vamos obter o tema
 +<sxh bash>
 +
 +cd /tmp
 +wget -c http://wiki.douglasqsantos.com.br/Downloads/versionamento/gitweb-tema.tar.gz
 +</sxh>
 +
 +Agora vamos desempacotar ele e copiar os arquivos para o diretório do gitweb
 +<sxh bash>
 +
 +tar -xzvf gitweb-tema.tar.gz
 +</sxh>
 +
 +Agora vamos copiar os arquivos para o diretório do gitweb
 +<sxh bash>
 +
 +cp gitweb.css gitweb.js /usr/share/gitweb/
 +</sxh>
 +
 +Vamos carregar o modulo rewrite
 +<sxh bash>
 +
 +a2enmod rewrite
 +</sxh>
 +
 +Agora vamos reiniciar o apache
 +<sxh bash>
 +
 +/etc/init.d/apache2 restart
 +</sxh>
 +
 +Caso tenha acesso ao servidor dns insira um registro do tipo A e direcione para 10.101.0.11, caso não tenha insira uma entrada no /etc/hosts 10.101.0.11 gitweb.douglasqsantos.com.br que já vai ser possivel acessar ;)
 +
 +Agora é so acessar http://gitweb.douglasqsantos.com.br
 +
 +Agora vamos instalar o gitstats ele pode ser instalado no cliente mesmo, pois precisamos do clone do repositório para gerar as statistias ;)
 +<sxh bash>
 +
 +aptitude install gitstats -y
 +</sxh>
 +
 +Para gerar o relatório precisamos de um clone, eu vou clonar o repositório teste no /srv/repositorios do servidor, como esse diretório ainda não existe vou criar ele e acessar ele
 +<sxh bash>
 +
 +mkdir -p /srv/repositorios
 +cd /srv/repositorios
 +</sxh>
 +
 +Agora vamos clonar o repositório testing para gerarmos statisticas
 +<sxh bash>
 +
 +git clone git://10.101.0.11/testing.git
 +Cloning into testing...
 +remote: Counting objects: 3, done.
 +Receiving objects: 100% (3/3), 235 bytes, done.
 +remote: Total 3 (delta 0), reused 0 (delta 0)
 +</sxh>
 +
 +Agora vamos criar um virtual host para as nossas statisticas
 +<sxh apache>
 +
 +vim /etc/apache2/sites-available/gitstats
 +<VirtualHost *:80>
 +        ServerName gitstats.douglasqsantos.com.br
 +        ServerAdmin webmaster@localhost
 +
 +        DocumentRoot /var/www/gitstats
 +        <Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </Directory>
 +        <Directory /var/www/gitstats>
 +                Options Indexes FollowSymLinks MultiViews
 +                AllowOverride None
 +                Order allow,deny
 +                allow from all
 +        </Directory>
 +        ErrorLog ${APACHE_LOG_DIR}/error.log
 +        LogLevel warn        
 +        CustomLog ${APACHE_LOG_DIR}/access.log combined
 +</VirtualHost>
 +</sxh>
 +
 +Agora vamos habilitar o nosso virtual host
 +<sxh bash>
 +
 +a2ensite gitstats
 +</sxh>
 +
 +Vamos remover o index.html do site default do apache
 +<sxh bash>
 +
 +rm -rf /var/www/index.html
 +</sxh>
 +
 +Agora vamos gerar as statisticas do repositório testing
 +<sxh bash>
 +
 +gitstats /srv/repositorios/testing/ /var/www/gitstats/testing
 +</sxh>
 +
 +Agora vamos reiniciar o apache
 +<sxh bash>
 +
 +/etc/init.d/apache2 restart
 +</sxh>
 +
 +Caso tenha acesso ao servidor dns insira um registro do tipo A e direcione para 10.101.0.11, caso não tenha insira uma entrada no /etc/hosts 10.101.0.11 gitstats.douglasqsantos.com.br que já vai ser possivel acessar ;)
 +
 +Agora é so acessar http://gitstats.douglasqsantos.com.br/testing
 +
 +Agora vamos ver como adicionamos um novo repositório
 +
 +No cliente vamos acessar o repositório de administração do git
 +<sxh bash>
 +
 +cd ~/repositorios/gitolite-admin/
 +</sxh>
 +
 +Agora vamos acrescentar algumas linhas a respeito de nosso novo repositório, vou criar um repositório com o nome de php
 +<sxh bash>
 +
 +vim conf/gitolite.conf
 +        repo    gitolite-admin
 +                RW+       douglas
 +
 +        repo    php
 +                RW+      douglas
 +                R         daemon
 +php "Owner"     = "Repositório php"
 +
 +
 +        repo    testing
 +                RW+       @all
 +                R         daemon
 +testing "Owner" = "Repositório Teste"
 +</sxh>
 +
 +Agora vamos marcar ele para ser enviado ao servidor.
 +<sxh bash>
 +
 +git add conf/gitolite.conf
 +</sxh>
 +
 +Agora vamos configurar que vamos enviar ele para o repositório 
 +<sxh bash>
 +
 +git commit -m "Criação do repositório php"
 +</sxh>
 +
 +Agora vamos enviar o arquivo para o servidor git
 +<sxh bash>
 +
 +git push
 +Counting objects: 7, done.
 +Delta compression using up to 6 threads.
 +Compressing objects: 100% (3/3), done.
 +Writing objects: 100% (4/4), 439 bytes, done.
 +Total 4 (delta 1), reused 0 (delta 0)
 +remote: Already on 'master'
 +remote: creating php...
 +remote: Initialized empty Git repository in /home/gitolite/repositories/php.git/
 +To gitolite@10.101.0.11:gitolite-admin.git
 +   e9922e3..edfc1e1  master -> master
 +</sxh>
 +
 +Agora no servidor precisamos reiniciar o daemon do git
 +<sxh bash>
 +
 +sv restart git-daemon
 +</sxh>
 +Como pode ser notado o gitolite já criou e iniciou o nosso repositório.
 +
 +Agora vamos clonar ele na ainda na maquina cliente
 +
 +Vamos acessar a raiz dos repositórios
 +<sxh bash>
 +
 +cd ~/repositorios/
 +</sxh>
 +
 +Agora vamos clonar o nosso repositório
 +<sxh bash>
 +
 +git clone gitolite@10.101.0.11:php.git
 +Cloning into php...
 +warning: You appear to have cloned an empty repository.
 +</sxh>
 +
 +Agora vamos criar um arquivo de teste em nosso repositório
 +<sxh bash>
 +
 +cd php
 +echo "<?php phpinfo(); ?>" > phpinfo.php
 +</sxh>
 +
 +Agora vamos adicionar ele para ser enviado ao repositório
 +<sxh bash>
 +
 +git add phpinfo.php 
 +</sxh>
 +
 +Agora vamos confirmar que o arquivo deve ser enviado ao repositório
 +<sxh bash>
 +
 +git commit -m "Adicionando phpinfo.php"
 +[master (root-commit) 345e9ad] Adicionando phpinfo.php
 + 1 files changed, 1 insertions(+), 0 deletions(-)
 + create mode 100644 phpinfo.php
 +</sxh>
 +
 +Agora vamos enviar para o repositório
 +<sxh bash>
 +
 +git push origin master
 +Counting objects: 3, done.
 +Writing objects: 100% (3/3), 256 bytes, done.
 +Total 3 (delta 0), reused 0 (delta 0)
 +To gitolite@192.168.1.10:php.git
 + * [new branch]      master -> master
 +</sxh>
 +
 +O nosso repositório já pode ser consultado em http://gitweb.douglasqsantos.com.br
 +
 +Agora vamos clonar o nosso repositório php no servidor para gerarmos as estatísticas 
 +<sxh bash>
 +
 +git clone git://10.101.10.11/php.git /srv/repositorios/php
 +</sxh>
 +
 +Agora vamos gerar as estatísticas do nosso novo repositório
 +<sxh bash>
 +
 +gitstats /srv/repositorios/php/ /var/www/gitstats/php
 +</sxh>
 +
 +Agora podemos acessar os relatórios em http://gitstats.douglasqsantos.com.br/php
 +
 +Agora vamos ver como adicionamos mais usuários para acesso ao repositório
 +
 +Vamos gerar a chave rsa
 +<sxh bash>
 +
 +ssh-keygen -t rsa
 +Generating public/private rsa key pair.
 +Enter file in which to save the key (/home/douglas/.ssh/id_rsa): 
 +Created directory '/home/douglas/.ssh'.
 +Enter passphrase (empty for no passphrase): 
 +Enter same passphrase again: 
 +Your identification has been saved in /home/douglas/.ssh/id_rsa.
 +Your public key has been saved in /home/douglas/.ssh/id_rsa.pub.
 +The key fingerprint is:
 +e0:0c:df:8e:9e:f6:fb:70:21:26:37:d9:71:57:a7:1d douglas@debian
 +The key's randomart image is:
 ++--[ RSA 2048]----+
 +|               Eo|
 +|               +o|
 +|    . .   . . o .|
 +|     = o o o .   |
 +|      = S o      |
 +|       * o .     |
 +|      . o .      |
 +|     ... o       |
 +|     .o.oo.      |
 ++-----------------+
 +</sxh>
 +
 +Agora vamos copiar para o cliente que tem os repositório adm
 +<sxh bash>
 +
 +scp /home/douglas/.ssh/id_rsa.pub 10.101.0.1:/tmp/douglas.debian.pub
 +</sxh>
 +
 +Agora no cliente que tem os repositórios vamos copiar a chave do tmp para ~/repositorios/gitolite-admin/keydir
 +<sxh bash>
 +
 +cp /tmp/douglas.debian.pub ~/repositorios/gitolite-admin/keydir/
 +</sxh>
 +
 +Agora vamos marcar a chave para ser enviada para o repositório
 +<sxh bash>
 +
 +cd ~/repositorios/gitolite-admin
 +git add keydir/douglas.debian.pub
 +</sxh>
 +
 +Agora vamos confirmar a chave que vai ser enviada para o repositório
 +<sxh bash>
 +
 +git commit -m "Adicionando chave"
 +[master 9ef830c] Adicionando chave
 + 1 files changed, 1 insertions(+), 0 deletions(-)
 + create mode 100644 keydir/douglas.debian.pub
 +</sxh>
 +
 +Agora vamos enviar a chave para o repositório
 +<sxh bash>
 +
 +git push
 +Counting objects: 6, done.
 +Delta compression using up to 6 threads.
 +Compressing objects: 100% (4/4), done.
 +Writing objects: 100% (4/4), 700 bytes, done.
 +Total 4 (delta 0), reused 0 (delta 0)
 +remote: Already on 'master'
 +remote: 
 +remote:     ''''''* WARNING ''''''*
 +remote:         the following users (pubkey files in parens) do not appear in the config file:
 +remote: douglas.debian(douglas.debian.pub)
 +To gitolite@192.168.1.10:gitolite-admin.git
 +   195249c..9ef830c  master -> master
 +</sxh>
 +
 +Note que apareceu uma mensagem avisando que o douglas.debian não está em nenhum repositório, ele não tem configuração no gitolite.conf, vamos adicionar ele no repositório php.
 +
 +<sxh bash>
 +
 +vim conf/gitolite.conf 
 +        repo    gitolite-admin
 +                RW+       douglas
 +
 +        repo    php
 +                RW+      douglas
 +                RW      =  douglas.debian
 +                R         daemon
 +
 +
 +php "Owner"     = "Repositório php"
 +
 +        repo    testing
 +                RW+       @all
 +                R         daemon
 +testing "Owner" = "Repositório Teste"
 +</sxh>
 +
 +Agora vamos marcar o arquivo para ser enviado ao repositório
 +<sxh bash>
 +
 +git add conf/gitolite.conf
 +</sxh>
 +
 +Agora vamos configurar ele no repositório
 +<sxh bash>
 +
 +git commit -m "Adicionando usuario ao repositorio php"
 +[master 97a8c24] Adicionando usuario ao repositorio php
 + 1 files changed, 2 insertions(+), 0 deletions(-)
 +</sxh>
 +
 +Agora vamos enviar para o repositório
 +<sxh bash>
 +
 +git push
 +Counting objects: 7, done.
 +Delta compression using up to 6 threads.
 +Compressing objects: 100% (3/3), done.
 +Writing objects: 100% (4/4), 407 bytes, done.
 +Total 4 (delta 1), reused 0 (delta 0)
 +remote: Already on 'master'
 +To gitolite@10.101.0.11:gitolite-admin.git
 +   9ef830c..97a8c24  master -> master
 +</sxh>
 +
 +Agora com o novo cliente que importamos a chave vamos criar o diretório de repositórios e vamos clonar o repositório php que o cliente tem acesso.
 +
 +<sxh bash>
 +
 +mkdir ~/repositorios
 +cd ~/repositorios
 +</sxh>
 +
 +Agora vamos clonar
 +<sxh bash>
 +
 +git clone gitolite@10.101.0.11:php.git
 +Cloning into php...
 +The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
 +RSA key fingerprint is 34:64:a3:f5:8f:ca:2d:30:aa:df:f8:84:38:2f:e2:3d.
 +Are you sure you want to continue connecting (yes/no)? yes
 +Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts.
 +remote: Counting objects: 3, done.
 +Receiving objects: 100% (3/3), 255 bytes, done.
 +remote: Total 3 (delta 0), reused 0 (delta 0)
 +</sxh>
 +
 +Vamos acertar as variáveis do nosso git
 +<sxh bash>
 +
 +git config --global user.name "Douglas Debian"
 +git config --global user.email douglas@douglasqsantos.com.br
 +git config --global color.status auto
 +git config --global color.branch auto
 +</sxh>
 +
 +Agora vamos acessar o repositório e vamos enviar um arquivo de teste
 +<sxh bash>
 +
 +cd php
 +echo "<?php echo 'Douglas'; ?>" > douglas.php
 +</sxh>
 +
 +Agora vamos marcar o pacote para ser enviado para o repositório
 +<sxh bash>
 +
 +git add douglas.php
 +</sxh>
 +
 +Agora vamos confirmar que os arquivos devem ser enviados para o repositório
 +<sxh bash>
 +
 + git commit -m "Teste de permissão"
 +[master e635eb8] Teste de permissão
 + 1 files changed, 1 insertions(+), 0 deletions(-)
 + create mode 100644 douglas.php
 +</sxh>
 +
 +Agora vamos enviar para o repositório
 +<sxh bash>
 +
 +git push
 +Counting objects: 4, done.
 +Compressing objects: 100% (2/2), done.
 +Writing objects: 100% (3/3), 316 bytes, done.
 +Total 3 (delta 0), reused 0 (delta 0)
 +To gitolite@192.168.1.10:php.git
 +   345e9ad..e635eb8  master -> master
 +</sxh>
 +
 +Agora podemos acessar http://gitweb.douglasqsantos.com.br para visualizar os arquivos ;)
 +
 +
 +Agora no primeiro cliente vamos atualizar os arquivos que foram enviados para o repositório
 +
 +====== Referências ======
 +
 +  - http://pt.wikipedia.org/wiki/Git
 +  - http://git-scm.com/
 +  - http://kogakure.github.com/gitweb-theme/
 +  - http://git-scm.com/documentation
 +  - http://git-scm.com/downloads
 +  - http://git-scm.com/about
 +  - http://git-scm.com/community
 +  - http://git-scm.com/book
 +  - http://git.or.cz/course/svn.html
 +  - http://djalmafilho.blogspot.com.br/2008/06/tutorial-git-atualizado.html
 +  - http://codexico.com.br/blog/linux/tutorial-simples-como-usar-o-git-e-o-github/
 +  - http://codexico.com.br/blog/linux/tutorial-simples-parte-2-git-branch-e-merge/
 +  - http://ferrari.eti.br/trabalhando-em-grupo-em-um-mesmo-branch-no-gi/
Print/export
QR Code
QR Code instalando_e_configurando_o_git_gitolite_gitweb_git-daemon_gitstats_debian_squeeze_pt_br (generated for current page)