• Like
  • Save
[Mini-curso] Sistema de Controle de Versão
Upcoming SlideShare
Loading in...5
×
 

[Mini-curso] Sistema de Controle de Versão

on

  • 5,984 views

Este mini-curso foi ministrado por Marco Rosner durante o Debian Festival 4.0

Este mini-curso foi ministrado por Marco Rosner durante o Debian Festival 4.0

Statistics

Views

Total Views
5,984
Views on SlideShare
5,965
Embed Views
19

Actions

Likes
0
Downloads
122
Comments
0

1 Embed 19

http://www.slideshare.net 19

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    [Mini-curso] Sistema de Controle de Versão [Mini-curso] Sistema de Controle de Versão Presentation Transcript

    • Sistema de Controle de Versão Marco Rosner - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • Sistema de Controle de Versão Conceitos Fundamentais - Como organizar sua cópia de trabalho? [DF 4] Marco Rosner - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • Sistema de Controle de Versão CVS Concurrent Versioning System [DF 4] Marco Rosner - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • Sistema de Controle de Versão SVN [DF 4] Marco Rosner - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • Sistema de Controle de Versão URL's - file:///<servidor local> - http://<servidor> - https://<servidor> - svn://<servidor> - svn+ssh://<servidor> [DF 4] Marco Rosner - marco.rosner@gmail.com
    • Sistema de Controle de Versão Estrutura do repositório $ /repositorio/format /conf /db /hooks /locks Estrutura da CT $ /CT/projeto/Trunk /Branches /Tags [DF 4] Marco Rosner - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 trabalho NEWREV – será o número da revisão HEAD do repositório [DF 4] Marco Rosner - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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_PATH Exibe a descrição de todas as travas $ svnadmin rmlocks REPOS_PATH LOCKED Remove, incondicionalmente, uma ou mais travas de um repositório [DF 4] Marco Rosner - marco.rosner@gmail.com
    • 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_PATH Verifica os dados armazenados no repositório. [DF 4] Marco Rosner - marco.rosner@gmail.com
    • Sistema de Controle de Versão Conceitos gerenciais svnlook $ svnlook cat REPOS_PATH PATH_IN_REPOS Mostra o conteúdo de um arquivo. $ svnlook changed REPOS_PATH Mostra os caminhos que foram mudados. Aceita a opção -r para indicar revisões ou -t para transações. $ svnlook diff REPOS_PATH Mostra 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 - marco.rosner@gmail.com
    • 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_REPOS Se o lock existir no caminho do repositório, o descreve. $ svnlook log REPOS_PATH Mostra a mensagem de log. Aceita a opção -r para indicar revisões ou -t para transações. [DF 4] Marco Rosner - marco.rosner@gmail.com
    • Sistema de Controle de Versão Conceitos gerenciais svnlook $ svnlook proplist REPOS_PATH PATH_IN_REPOS Exibe os nomes e valores de propriedades de arquivos e diretórios versionados. $ svnlook propget REPOS_PATH PATH_IN_REPOS Exibe o valor cru de uma propriedade em um caminho no repositório. [DF 4] Marco Rosner - marco.rosner@gmail.com
    • Sistema de Controle de Versão [DF 4] Marco Rosner - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com
    • 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 - marco.rosner@gmail.com