>_Git e Gitolite no Debian 7.8 – 1.3

Neste terceiro tutorial, vou abordar a criação de um novo repositório e alguns comandos essenciais para administração do repositório. O ambiente até aqui se permanece o mesmo, nada foi alterado.

Mão na massa!

Passo 1 – No servidor ba-vm-git-01 dentro do diretório repositories irei criar um novo repositório chamado dhcpweb.init. Este repositório terá como objetivo armazenar os códigos fontes do projeto dhcpweb que se encontra no endereço http://dhcpweb.tutoriaisgnulinux.com.

git@ba-vm-git-01:~$ cd gitolite-admin/
git@ba-vm-git-01:~$ ls
gitolite-admin	projects.list  repositories
git@ba-vm-git-01:~$ cd repositories/
git@ba-vm-git-01:~/repositories$ ls           
gitolite-admin.git  testing.git
git@ba-vm-git-01:~/repositories$ mkdir dhcpweb.git

Passo 2 – Dentro do diretório dhcpweb.git será preciso criar a estrutura do git.

git@ba-vm-git-01:~/repositories$ cd dhcpweb.git/

O comando git init transforma o diretório atual em um repositório git. Após a execução do comando ele criará um diretório oculto chamado .git. Dentro desse diretório estará toda a estrutura necessária para administração do repositório.

A opção –bare define que o repositório será criado vazio.
A opção –shared Especifique que o repositório git será compartilhado entre vários usuários.

git@ba-vm-git-01:~/repositories/dhcpweb.git$ git init --bare --shared
Initialized empty shared Git repository in /home/git/repositories/dhcpweb.git/

Passo 3 – Após a criação do repositório dhcpweb o próximo passo será ajustar o arquivo gitolite.conf.

git@ba-vm-git-01:~/repositories/dhcpweb.git$ cd ../../gitolite-admin/conf/ 

Passo 4 – Antes de ajustar o repositório central, será necessário executar um git pull dentro do gitolite-admin. Como temos outros administradores do repositório gitolite-admin é possível que haja alguma alteração feita por um outro administrador. O comando git pull irá atualizar o repositório local antes de qualquer alteração.

git@ba-vm-git-01:~/gitolite-admin/conf$ git pull
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From ba-vm-git-01:gitolite-admin
   6eb454f..c9bc8dd  master     -> origin/master
Merge made by the 'recursive' strategy.
 conf/gitolite.conf |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Passo 5 – Após a execução do comando a alteração poderá ser realizada com segurança.

git@ba-vm-git-01:~/gitolite-admin/conf$ vim gitolite.conf
include "permissoes.conf"

repo    gitolite-admin
        RW+     =       server-git
        RW+     =       @admins
        R	=	@read


repo    dhcpweb
        RW+     =       @admins


repo    testing
        RW+     =   @all

Passo 6 – Aplicando o commit da alteração.

git@ba-vm-git-01:~/gitolite-admin/conf$ git commit -a -m "Add novo repositorio - dhcpweb"
[master 18ce575] Add novo repositorio - dhcpweb
 1 file changed, 3 insertions(+)

Passo 7 – Com o comando git push o repositório será atualizado com as modificações feitas no arquivo gitolite.conf.

git@ba-vm-git-01:~/gitolite-admin/conf$ git push
Counting objects: 28, done.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (16/16), 2.02 KiB, done.
Total 16 (delta 3), reused 0 (delta 0)
To git@ba-vm-git-01:gitolite-admin
   c9bc8dd..18ce575  master -> master

Garantido que tudo esteja funcionando perfeitamente.

Passo 8 – No cliente www-01 executarei o comando git pull para baixar as atualizações do repositório central.

[root@ba-vm-www-01 conf]# git pull
remote: Counting objects: 28, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 16 (delta 3), reused 0 (delta 0)
Unpacking objects: 100% (16/16), done.
From ba-vm-git-01:gitolite-admin
   c9bc8dd..18ce575  master     -> origin/master
Updating c9bc8dd..18ce575
Fast-forward
 conf/gitolite.conf |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

Show de bola, ele achou uma alteração e aplicou no repositório local com sucesso.

[root@ba-vm-www-01 conf]# cat gitolite.conf 
include	"permissoes.conf"

repo    gitolite-admin
        RW+     =   	server-git
	RW+	= 	@admins
	R	=	@read

repo   dhcpweb
	RW+	=	@admins

repo    testing
        RW+     =   @all

Passo 9 – No cliente evandro já existe o diretório dhcpweb, dentro desse diretório já contém toda a estrutura do código fonte do projeto. Vejamos abaixo:

evandro@b000177 ~ $ cd dhcpweb/
evandro@b000177 ~/dhcpweb $ ls
admconf.py  admhosts.py  administracao.py  conf  dump  imagens  inicio.py  LEIA  listarip.py  manual.py  menu.py  removeip.py  servidor.py  sql_comandos

Passo 10 – Como já temos a estrutura do fonte dentro desse diretório, o passo seguinte será criar um arquivo README.md contendo a versão do código fonte.

evandro@b000177 ~/dhcpweb $ echo "# Repositório dhcpweb 2.0" > README.md

Passo 11 – Configurando as variáveis globais do git local.

evandro@b000177 ~/dhcpweb $ git config --global user.email "evandro@tgl.com"
evandro@b000177 ~/dhcpweb $ git config --global user.name "Evandro Couto"

Passo 12 – Após todas as alterações o próximo comando será o git init. Este comando irá criar a estrutura do repositório local.

evandro@b000177 ~/dhcpweb $ git init
Initialized empty Git repository in /home/evandro/dhcpweb/.git/

Passo 13 – Com o comando git add irei adicionar o código fonte do projeto no repositório local. Com a opção * irei adicionar todos os fontes que contém dentro do diretório.

Também seria possível adicionar passando o nome do arquivo ou a extensão dele.

git add arquivo.extensão
git add *.extensão

evandro@b000177 ~/dhcpweb $ git add *

Passo 14 – Gerando o primeiro commit da versão.

evandro@b000177 ~/dhcpweb $ git commit -m "Primeira Versão"

Passo 15 – Adicionando o repositório de origem remota como o comando git remote add. Este comando irá realizar a integração com o repositório central, que por sua vez está localizado no servidor git – ba-vm-git-01.

evandro@b000177 ~/dhcpweb $ git remote add origin git@ba-vm-git-01:dhcpweb

Passo 16 – Aplicando o push da estrutura local para o repositório central – master.
Este comando irá enviar toda a estrutura que foi adicionada com o comando git add para o servidor git.

evandro@b000177 ~/dhcpweb $ git push -u origin master
Counting objects: 70, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (67/67), done.
Writing objects: 100% (70/70), 58.19 KiB | 0 bytes/s, done.
Total 70 (delta 18), reused 0 (delta 0)
To git@ba-vm-git-01:dhcpweb
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

Com o fim das configurações no cliente evandro, o próximo passo será baixar o repositório dhcpweb no cliente www-01.

Clonando o repositório dhcpweb no cliente www-01.

Passo 17 – No cliente www-01 irei executar o comando git clone para clonar o repositório dhcpweb.

[root@ba-vm-www-01 /]# git clone git@ba-vm-git-01:dhcpweb
Initialized empty Git repository in /dhcpweb/.git/
remote: Counting objects: 70, done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 70 (delta 22), reused 0 (delta 0)
Receiving objects: 100% (70/70), 57.28 KiB, done.
Resolving deltas: 100% (22/22), done.
[root@ba-vm-www-01 /]# cd dhcpweb/
[root@ba-vm-www-01 dhcpweb]# ll -a
total 104
drwxr-xr-x   7 root root 4096 Mar  6 10:44 .
dr-xr-xr-x. 24 root root 4096 Mar  6 10:44 ..
-rwxr-xr-x   1 root root 9315 Mar  6 10:44 admconf.py
-rwxr-xr-x   1 root root 8128 Mar  6 10:44 admhosts.py
-rwxr-xr-x   1 root root 7532 Mar  6 10:44 administracao.py
drwxr-xr-x   2 root root 4096 Mar  6 10:44 conf
drwxr-xr-x   2 root root 4096 Mar  6 10:44 dump
drwxr-xr-x   8 root root 4096 Mar  6 10:44 .git
drwxr-xr-x   2 root root 4096 Mar  6 10:44 imagens
-rwxr-xr-x   1 root root  615 Mar  6 10:44 inicio.py
-rwxr-xr-x   1 root root  105 Mar  6 10:44 LEIA
-rwxr-xr-x   1 root root 4382 Mar  6 10:44 listarip.py
-rwxr-xr-x   1 root root 5179 Mar  6 10:44 manual.py
-rwxr-xr-x   1 root root 5407 Mar  6 10:44 menu.py
-rw-r--r--   1 root root   27 Mar  6 10:44 README.md
-rwxr-xr-x   1 root root 3902 Mar  6 10:44 removeip.py
-rwxr-xr-x   1 root root 6014 Mar  6 10:44 servidor.py
drwxr-xr-x   2 root root 4096 Mar  6 10:44 sql_comandos

Clonando o repositório dhcpweb no cliente pve-01.

Passo 18 – Clonando o repositório dhcpweb para o cliente pve-01.

root@ba-vm-pve-01:/# git clone git@ba-vm-git-01:dhcpweb
Cloning into dhcpweb...
R access for dhcpweb DENIED to pve
(Or there may be no repository at the given path. Did you spell it correctly?)
fatal: The remote end hung up unexpectedly

Hum…Acesso negado para o cliente pve-01. Ele não esta autorizado a clonar este repositório.

Brincando com os comandos do git.

Para usar a saídas do git coloridas, basta executar o comando abaixo:

git config color.ui true

Para poder adicionar um novo arquivo basta usar o comando:

git add arquivo
git add *

Exemplo:

[root@ba-vm-www-01 dhcpweb]# echo "adicionando um novo arquivo" > LEIA.log
[root@ba-vm-www-01 dhcpweb]# git add LEIA.log 

Para realmente confirmar as mudanças, basta fazer o commit com o comando abaixo:
OBS: Será enviado para o HEAD, mas não para o repositório remoto.

git commit -m "comentários das alterações"

Exemplo:

[root@ba-vm-www-01 dhcpweb]# git commit -m "Commit da adição de um novo arquivo chamado LEIA.log"
[master 44ef8c4] Commit da adição de um novo arquivo chamado LEIA.log
 1 files changed, 1 insertions(+), 6 deletions(-)

Para enviar para o repositório remoto, basta executar o comando abaixo:

git push origin master

Exemplo:

[root@ba-vm-www-01 dhcpweb]# git push origin master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 324 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@ba-vm-git-01:dhcpweb
   b5f88f3..44ef8c4  master -> master

Para se conectar em um servidor git remoto, basta executar o comando abaixo:

git remote add origin "servidor"

Exemplo:

git remote add origin git@ba-vm-git-01:dhcpweb

(Podendo ser por http, https ou por ssh)
para atualizar seu repositório local com a mais nova versão, execute o comando abaixo:

git pull

Exemplo:

evandro@b000177 ~/dhcpweb $ ls
admconf.py  admhosts.py  administracao.py  conf  dump  imagens  inicio.py  LEIA  listarip.py  manual.py  menu.py  README.md  removeip.py  servidor.py  sql_comandos
evandro@b000177 ~/dhcpweb $ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From ba-vm-git-01:dhcpweb
   b5f88f3..44ef8c4  master     -> origin/master
Updating b5f88f3..44ef8c4
Fast-forward
 LEIA.log | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
evandro@b000177 ~/dhcpweb $ ls
admconf.py  admhosts.py  administracao.py  conf  dump  imagens  inicio.py  LEIA LEIA.log listarip.py  manual.py  menu.py  README.md  removeip.py  servidor.py  sql_comandos
evandro@b000177 ~/dhcpweb $ cat LEIA.log 
adicionando um novo arquivo
evandro@b000177 ~/dhcpweb $ 

Caso precise sobrescrever as alterações locais, utilize o comando abaixo:

git checkout -- arquivo

Exemplo:

[root@ba-vm-www-01 dhcpweb]# cat README.md 
# Repositório dhcpweb 2.0
[root@ba-vm-www-01 dhcpweb]# echo "Testando o checkout" >> README.md 
[root@ba-vm-www-01 dhcpweb]# cat README.md 
# Repositório dhcpweb 2.0
Testando o checkout
[root@ba-vm-www-01 dhcpweb]# git checkout README.md 
[root@ba-vm-www-01 dhcpweb]# cat README.md 
# Repositório dhcpweb 2.0

Se for preciso remover todas as alterações e commits locais, voltando para o histórico mais recente do servidor, basta executar o comando abaixo:

git fetch origin
git reset --hard origin/master
[root@ba-vm-www-01 dhcpweb]# rm -rf LEIA.log 
[root@ba-vm-www-01 dhcpweb]# git commit -a -m "Remoção do arquivo LEIA.log"
[master 7c2460f] Remoção do arquivo LEIA.log
 1 files changed, 0 insertions(+), 1 deletions(-)
 delete mode 100644 LEIA.log
[root@ba-vm-www-01 dhcpweb]# git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 242 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To git@ba-vm-git-01:dhcpweb
   8195397..7c2460f  master -> master
evandro@b000177 ~/dhcpweb $ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From ba-vm-git-01:dhcpweb
   8195397..7c2460f  master     -> origin/master
Updating 8195397..7c2460f
Fast-forward
 LEIA.log | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 LEIA.log

No próximo tutorial pretendo abordar mais sobre os comandos do git e também sobre a configuração do gitweb. Até lá!

>_Git e Gitolite no Debian 7.8 – 1.3
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: