23

Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Semin�ario sobre GIT

Bruno C�esar Ribas

Centro de Computa�c�ao Cient���ca e Software Livre

21 de outubro de 2007

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 1 / 22

Page 2: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

1 O GIT

2 Trabalhando com o GIT

3 Refer�encias

4 D�uvidas

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 2 / 22

Page 3: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Sum�ario

1 O GIT

2 Trabalhando com o GIT

3 Refer�encias

4 D�uvidas

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 3 / 22

Page 4: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

O que �e?!

GIT �e um sistema de controle de revis�ao distribu��do, com uma vasta gama

de comandos que prov�eem comandos de alto n��vel como de acesso

completo na parte interna do sistema

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 4 / 22

Page 5: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

E o que signi�ca GIT?

De acordo com Linus Torvalds depende do seu humor:

'git' �e uma g��ria Brit�anica para "silly, stupid, or worthless person"

3-letras aleat�orias que �e pronunci�avel, e n�ao �e usado por algum

comando UNIX comumente usado.

"Global Information Tracker": quando est�a em bom humor e est�a

funcionando "Angels sing, and a light suddenly �lls the room."

"Goddamn idiotic truckload of sh*t": quando quebra

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 5 / 22

Page 6: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

E o que signi�ca GIT?

De acordo com Linus Torvalds depende do seu humor:

'git' �e uma g��ria Brit�anica para "silly, stupid, or worthless person"

3-letras aleat�orias que �e pronunci�avel, e n�ao �e usado por algum

comando UNIX comumente usado.

"Global Information Tracker": quando est�a em bom humor e est�a

funcionando "Angels sing, and a light suddenly �lls the room."

"Goddamn idiotic truckload of sh*t": quando quebra

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 5 / 22

Page 7: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Caracter��sticas �Unicas

Id�eia b�asica de desenvolvimento n�ao linear. Facilidade de BRANCH e

MERGE

Desenvolvimento Distribu��do. cada desenvolvedor "ganha"uma c�opia

local que �e a arvore inteira de desenvolvimento.

Reposit�orios podem ser facilmente publicados via: HTTP, FTP, ssh,

rsync, git (o protocolo pr�oprio).

Emulador de Servidor CVS (e futuramente de SVN), o que facilita

algumas integra�c�oes

Desenvolvido seguindo a tradi�c�ao UNIX, v�arios c�odigos primitovs em C

com ferramentas (scripts) para facilitar o uso

V�arios Algoritmos para execu�c�ao de Merge

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 6 / 22

Page 8: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Sum�ario

1 O GIT

2 Trabalhando com o GIT

3 Refer�encias

4 D�uvidas

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 7 / 22

Page 9: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Iniciando

Para existir uma boa rela�c�ao de desenvolvimento �e bom de fato conhecer a

equipe e as ferramentas.

Apresentando-se ao GIT

$ git config --global user.name "Meu Nome"

$ git config --global user.email [email protected]

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 8 / 22

Page 10: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Importando um novo projeto

Imagine a exist�encia de um projeto qualquer: chessd.tar.bz2

E ainda, esse projeto n�ao est�a sobre um bom controle de vers�ao!

Colocando em controle de vers�ao

$ tar xjf chessd.tar.bz2

$ cd chessd

$ git init

Initialized empty Git repository in .git/

$ #adicionando o conte�udo

$ git add .

$ # e finalmente

$ git commit

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 9 / 22

Page 11: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Fazendo altera�c�oes

Certo! Agora temos um projeto em controle de vers�ao! Vamos trabalhar

em cima.

Modi�cando

$ vi novoarquivo.c

##gerando codigo aleatorio##

$ vi chessd.c

###modificando, totalmente independente do novoarquivo###

$ git diff

#receber�a o diff de tudo modificado

$ git add novoarquivo.c

#adiciona o novo arquivo nocontrole

$ git commit novoarquivo.c

#o commit pedira uma descri�c�ao da alter�c�ao

$ git commit chessd.c

#o commit pedir�a uma descri�c�ao da altera�c�ao

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 10 / 22

Page 12: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Pol��tica de COMMIT

Altera�c�oes n�ao relacionadas gera commits separadosI Alterei o suporte a SQL <- COMMIT AI Alterei o controle de �uxo do socket <- COMMIT B

Altera�c�oes n�ao relacionadas no mesmo arquivo?!?!I �E excelente fazer um commit quando terminar uma classe de altera�c�ao.I Antes de fazer uma altera�c�ao n�ao relacionada a anterior, fazer o

commit antes.

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 11 / 22

Page 13: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Olhando o Changelog

Consideramos as mensagens geradas pelos commits como o changelog do

projeto.

Olhando o Changelog

$ git log

#ver os logs desde o in��cio at�e agora

$ git log -p

#alem do log ver os diffs de cada passo

$ git log v1.0.0 v1.0.2

#ver o log entre a vers�ao 1.0.0 e 1.0.2

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 12 / 22

Page 14: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

TaggingTag �e marcar uma revis�ao com algum nome espec���co.

Geralmente Tag �e usada para identi�car uma vers�ao est�avel do

desenvolvimento.

Criando Tag - Leve

Uma Tag Leve �e usada s�o para o controle do programador. Facilitador de

indicador de problemas

$ git tag minha-tag

#pronto! Tag criada

Criando Tag - �annotated�

Usada para demarcar o territ�orio (como uma nova vers�ao)

$ git tag -s minha-tag

#necess�ario entrar com a descri�c�ao da Tag, al�em de pedir uma chave PGP

$ git tag -a minha-tag

#igual a anterior, por�em n�ao assina.

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 13 / 22

Page 15: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Branches - conceito

Duplica�c�ao de um objeto em controle de revis�ao. Onde o novo objeto

criado tem o mesmo conte�udo da vers�ao original.

Normalmente Branch implica em MERGE, que �e o processo de aplicar

as diferen�cas do branch em outro (normalmente de onde se originou).

id�eia boa quando vai manter duas vers�oes de um projetoI Branch MASTER (default) �e a cabe�ca de desenvolvimentoI Branch STABLE seria o Branch da TAG est�avel, e apenas se corrigem

bugs (sempre faz merge com a MASTER)

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 14 / 22

Page 16: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Branch

Trabalhando com Branch

$ git branch

experimental

* master

#mostra os branches existestes, e o "*" �e que est�a na �arvore

$ git checkout experimental

(editar aquivos)

$ git commit <arquivos>

$ git checkout master

#altera�c�oes n�ao s�ao visiveis no master

$ git merge experimental

#aplica altera�c�oes do experimental no master

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 15 / 22

Page 17: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Criando Branch

Criando Branch

$ git checkout -b meu-branch

# cria um branch baseado na arvore que est�a usando

$ git checkout -b meu-branch minha-tag

#cria um branch com a �arvore at�e marcada com minha-tag

$ git branch -d meu-branch

#remove o branch e garante que tenha sido feito o merge com

#o master

$git branch -D experimental

#remove o branch e n�ao verifica se aplicou o merge com o

#master

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 16 / 22

Page 18: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Trabalhando com Colabora�c�aoUm dos prop�ositos de manter um projeto em controle de vers�ao �e tamb�em

a sua facilidade de manter um grupo de trabalho atualizado.

reposit�orio de colabora�c�ao

$ git clone git@shiva:chessd/chessdserver.git

#isso cria um diret�orio chessdserver em $(pwd) com a �arvore

#completa de desenvolvimento desse projeto

$ git pull

#atualiza o reposit�orio em rela�c�ao ao guardado no servidor

#faz eventuais merges em rela�c�ao a sua �arvore

$ git push

#envia toda a sua pilha de commits para o servidor

$ git push --tags

#envia a sua pilha de Tags criadas para o servidor

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 17 / 22

Page 19: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Achando Bugs introduzidos

�E comum acontecer a entrada de um bug inesperada em nosso sistema.

Para isso o GIT fornece uma ferramenta que faz um busca bin�aria a

procura do bug

Achando bugs

$ git bisect start

$ git bisect bad

#diz que a �arvore atual est�a ruim

$ git bisect good v1.0.0

#avisa que a tag v1.0.0 �e a vers�ao que com certeza

#est�a boa

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 18 / 22

Page 20: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Sum�ario

1 O GIT

2 Trabalhando com o GIT

3 Refer�encias

4 D�uvidas

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 19 / 22

Page 21: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Refer�encias

http://git.or.cz/

http://www.kernel.org/pub/software/scm/git/docs/

http://www.kernel.org/pub/software/scm/git/docs/tutorial.html

http://www.kernel.org/pub/software/scm/git/docs/core-tutorial.html

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 20 / 22

Page 22: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

Sum�ario

1 O GIT

2 Trabalhando com o GIT

3 Refer�encias

4 D�uvidas

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 21 / 22

Page 23: Seminário sobre GITReposit orios podem ser facilmente publicados via: HTTP, FTP, ssh, rsync, git (o protocolo pr oprio). Emulador de Servidor CVS (e futuramente de SVN), o que facilita

D�uvidas,

Perguntas,

Choro,

Lamenta�c�oes

Bruno Ribas (C3SL) GIT 21 de outubro de 2007 22 / 22