Http:// Controle de Versão bitbuchet & mercurial Thiago e Rafael.
[Mini-curso] Sistema de Controle de Versão
-
Upload
marco-rosner -
Category
Education
-
view
4.804 -
download
6
description
Transcript of [Mini-curso] Sistema de Controle de Versão
Sistema de Controle de Versão
Quem sou?
Marco Rosner
● Graduado em Sistemas de Informação pelo IFAL
● Técnico em Administração e Projeto de Redes pelo CET/IFAL
● Analista e desenvolvedor do SAEO● Desenvolvedor do Brisa● Amo perguntas! =)
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Motivação
Independente da sua área de atuação, em algum momento, você irá trabalhar com Sistema de Controle de Versão.
E acredite, você já trabalha! Então, dominar este assunto é um diferencial competitivo necessário!
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Importância
- Compartilhamento de documentos e versionamento deles- Permitir trabalho em paralelo e controlar as modificações- Facilidade de aplicar manutenção e gerenciar a qualidade- Possibilidade de trabalhar em equipe (e agregar mais pessoas a equipe)
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Onde é aplicado o SCV?
- Wikis (Foswiki, Wikipedia...)- Processadores de texto (Google Docs...)- CMS (Joomla!, Drupal, Mambo, Plone...)- Projetos de softwares- Documentação de software
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Agenda
- Conceitos fundamentais- CVS – Concurrent Versioning System
- O que é?- Principais comandos- Limitações
- Subversion (SVN)- O que é?- Comandos básicos- Comandos avançados- Comandos gerenciais
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Agenda
- GIT- O que é?- Comandos básicos
- Referências*
*Isso aquí é só o começo! Preparem-se para estudar =)
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos Fundamentais
- Repositório- Sistema de arquivo virtual
- Compartilhando documentos- Trabalho em equipe- Problema !!!- E agora José, a festa acabou?
Calma, a festa ta apenas começando...
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos Fundamentais
- Solução 1: Lock-Modify-Unlock● Lock pode causar problemas administrativos● Locking pode causar serialização desnecessária
- Solução 2: Copy-Modify-Merge
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos Fundamentais
- Cópias de Trabalho (CT)
- Revisões● calc/Makefile:2
integer.c:2 button.c:3
- Revisões Mistas● Atualizações e Submissões são separadas.
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos Fundamentais (Terminologia)
- Check out/Clone● Cria uma CT do repositório*
- Update● Atualiza uma CT com a última versão do repositório
- Commit● Ato de submeter as alterações feitas na CT para o repositório
- Branch● Conjunto de arquivos separados do mainstream do projeto para
ser trabalhado separadamente.
- Trunk● Linha principal de trabalho do projeto
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos Fundamentais
- Como organizar sua cópia de trabalho?
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Ufa! Acabou a teoria, vamos à prática!!
Mas antes! Vamos fazer uma revisão...
- O que é um repositório?- Quais as duas soluções para o
compartilhamento de documentos?- Para que serve uma revisão?- Quais são os três comandos básicos de um
CVS?- O que é um Branch?
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
CVSConcurrent Versioning System
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
O que é?
- Sistema centralizado- Open Source- O repositório pode ser local ou remoto- As revisões começam em 1.1- Permite tanto locking quanto merging- Possibilita criar branches- Sua atual versão é 1.12.12
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Estrutura de um repositório
$ $CVSROOT/<arquivos> /CVSROOT/<arquivos_do_cvs>
Estrutura da cópia de trabalho
$ <CT>/<nome_do_repositorio>/<arquivos> /CVS/arquivosCVS
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Principais comandos
Montando um repositório
1 – Definir a localização e criar um repositório
$ export CVSROOT=~/repositorio$ cvs init
O diretorio indicado na variavel de ambiente $CVSROOT deve conceder premissão de leitura e escrita para todos que acessarão o repositório.
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Principais comandos
Montando um repositório
2 – Criar e importar documentos ao repositório
$ mkdir ~/temp$ echo “Debian Festival” > ~/temp/teste.txt$ cd ~/temp$ cvs import -m “Importando documentos” projeto repositorio start
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Principais comandos
Montando um repositório
3 – Fazer um check-out
$ mkdir ~/CopiaDeTrabalho$ cd ~/CopiaDeTrabalho$ cvs checkout projeto
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Principais comandos
Montando um repositório
4 – Alterar e submeter documentos ao repositório
$ cd ~/CopiaDeTrabalho/projeto$ vim teste.txt$ cvs commit -m “Alteração do arquivo teste.txt”
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Principais comandos
Montando um repositório
5 – Vendo o log das últimas transações
$ cd ~/CopiaDeTrabalho$ cvs update projeto$ cd projeto$ cvs log teste.txt
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
O que é?
- Criado pela CollabNet, em 2000- Baseado no CVS, também Open Source (APL)- Sistema centralizado- O repositório pode ser local ou remoto- Revisões incrementais- Permite tanto locking quanto merging- Possibilita criar branches e tags- Sua atual versão é 1.6.3
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Quem usa?
- Apache Software Fundation- Free Pascal- FreeBSD- GCC- Python- Django- Mono- SourceForge.net- PHP- Google Code- BRisa
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Características
- Versionamento de diretórios- Histórico de versões efetivo- Commits atômico- Versionamento de metadados- Branch e Tag eficientes
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
URL's
- file:///<servidor local>- http://<servidor>- https://<servidor>- svn://<servidor>- svn+ssh://<servidor>
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Estrutura do repositório
$ /repositorio/format /conf /db /hooks /locks
[DF 4] Marco Rosner - [email protected]
Estrutura da CT
$ /CT/projeto/Trunk /Branches /Tags
Sistema de Controle de Versão
Comandos básicos
1 - Criando um repositório e importando arquivos
$ svnadmin create ~/repositorioSVN$ mkdir ~/temp$ cd ~/temp$ echo “Debian Festival” > teste.txt$ svn import ~/temp file:///home/<user>/repositorioSVN -m “Importando teste.txt”
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Comandos básicos
2 – Dando um checkout
$ mkdir ~/trabalhoSVN$ cd ~/trabalhoSVN$ svn checkout file:///home/<user>/repositorioSVN ~/trabalhoSVN/projeto
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Comandos básicos
3 – Alterando arquivo e submetendo ao repositório
$ cd ~/trabalhoSVN/projeto$ vim teste.txt$ svn status$ svn commit -m “Alteração no arquivo teste.txt”$ svn update
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Comandos básicos
4 – Verificando o log
$ cd ~/trabalhoSVN/projeto$ svn log teste.txt
5 – Adicionando uma pasta ao repositório
$ mkdir trunk branches$ svn add trunk branches (svn del <arq_ou_dir>)$ svn commit -m “Organizando cópia de trabalho”
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Comandos úteis
$ svn diff [-r[N:M]] <arquivo>- Mostra as diferenças entre a cópia de trabalho e a última versão
atualizada.
$ svn status
$ svn info <arq_dir>
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Arquivos em conflitos
- arquivo.mine- arquivo.rOLDREV- arquivo.rNEWREV
$ svn resolved <arquivo/url>
OLDREV – será sempre o número da revisão da sua cópia de trabalhoNEWREV – será o número da revisão HEAD do repositório
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos avançados
Propriedades
- svn:autor- svn:date- svn:log
$ svn propset <propriedade> <valor> <arq_dir>$ svn propget <propriedade> <arq_dir>$ svn propedit <propriedade> <arq_dir>$ svn proplist <arq_dir>
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos avançados
Travamento
$ svn lock <arquivo>$ svn unlock <arquivo>
$ svn commit -m “Trava efetuada para <arquivo>”
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos avançados
Ramos (Branches) e Tags
$ svn copy SRC DSC$ svn merge -r REV1:REV2 <arquivo/url>$ svn revert <arquivo/url>
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos gerenciais
Ganchos (hooks)
$ cd ~/repositorioSVN/hooks
- post-commit.tmpl- post-[un]lock.tmpl- pre-commit.tmpl- pre-[un]lock.tmpl- start-commit.tmpl
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos gerenciais
svnadmin
$ svnadmin dump REPOS_PATH [-r rev1:rev2] [--incremental]Despeja o conteúdo do sistema de arquivos para o stdout
$ svnadmin lslocks REPOS_PATHExibe a descrição de todas as travas
$ svnadmin rmlocks REPOS_PATH LOCKEDRemove, incondicionalmente, uma ou mais travas de um repositório
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos gerenciais
svnadmin
$ svnadmin setlog REPOS_PATH [-r rev] <arq>Define a mensagem de log de uma revisão
$ svnadmin verify REPOS_PATHVerifica os dados armazenados no repositório.
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos gerenciais
svnlook
$ svnlook cat REPOS_PATH PATH_IN_REPOSMostra o conteúdo de um arquivo.
$ svnlook changed REPOS_PATHMostra os caminhos que foram mudados. Aceita a opção -r para indicar revisões ou -t para transações.
$ svnlook diff REPOS_PATHMostra as diferenças de arquivos e propriedades que foram mudadas. Aceita a opção -r para indicar revisões ou -t para transações.
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos gerenciais
svnlook
$ svnlook info REPOS_PATH Mostra o autor, data-hora, tamanho da mensagem de log, e a mensagem de log. Aceita a opção -r para indicar revisões ou -t para transações.
$ svnlook lock REPOS_PATH PATH_IN_REPOSSe o lock existir no caminho do repositório, o descreve.
$ svnlook log REPOS_PATHMostra a mensagem de log. Aceita a opção -r para indicar revisões ou -t para transações.
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Conceitos gerenciais
svnlook
$ svnlook proplist REPOS_PATH PATH_IN_REPOSExibe os nomes e valores de propriedades de arquivos e diretórios versionados.
$ svnlook propget REPOS_PATH PATH_IN_REPOSExibe o valor cru de uma propriedade em um caminho no repositório.
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
O que é?
- Criado por Linus Torvalds, em 2005- GIT = Estupido- Licenciado pela GPLv2- Sistema distribuído- Independe de um servidor central oiu da rede.- Revisões incrementais- Permite tanto locking quanto merging- Possibilita criar branches e tags- Sua atual versão é 1.6.4
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Quem usa?
- Android- Fedora- GNOME- Linux Kernel- One Laptop Per Child- Perl- Qt- Ruby on Rails- Samba- Wine- X.org Server
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Características
- Desenvolvimento distribuído- Acesso ao repositorio por HTTP, FTP, rsync ou pelo protocolo GIT- Ferramenta git-svn- Escrito em C- Facilidade de criação e combinação (merge) de branchs
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Comandos básicos
1 – Criando o repositório e adicionando os arquivos do projeto
$ mkdir ~/trabalhoGIT$ cd ~/trabalhoGIT$ git init(criar/copiar arquivo)$ git commit -a -m “Iniciando repositório”
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Comandos básicos
2 – Verificando o status do projeto
(editar arquivo)$ git status
3 – Navegando pelo log do projeto
$ git log [<arq_dir> / <commit_id>]
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Comandos básicos
4 – Criando um branch
$ git branch calc
5 – Mudando de branch e efetuando merge
$ git checkout calc(editar arquivo)$ git commit -a -m “Editando arq no branch x”$ git checkout master$ git merge calc
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Agradecimentos
Obrigado pela sua presença neste mini-curso
Qualquer dúvida, fico a disposição através do e-mail.
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Referências bibliográficas
CVS
- http://www.nongnu.org/cvs/- http://en.wikipedia.org/wiki/Concurrent_Versions_System- http://cvsbook.red-bean.com/
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Referências bibliográficas
SVN
- http://subversion.tigris.org/- http://svnbook.red-bean.com/- http://en.wikipedia.org/wiki/Subversion_(software)
[DF 4] Marco Rosner - [email protected]
Sistema de Controle de Versão
Referências bibliográficas
GIT
- http://git-scm.com/- http://en.wikipedia.org/wiki/Git_(software)- Google tech talk: Linus Torvalds on git (http://www.youtube.com/watch?v=4XpnKHJAok8)
[DF 4] Marco Rosner - [email protected]