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

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

  • 1.
    Sistema de Controlede Versão Marco Rosner - marco.rosner@gmail.com
  • 2.
    Sistema de Controlede 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
  • 3.
    Sistema de Controlede 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
  • 4.
    Sistema de Controlede 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
  • 5.
    Sistema de Controlede 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
  • 6.
    Sistema de Controlede 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
  • 7.
    Sistema de Controlede 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
  • 8.
    Sistema de Controlede 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
  • 9.
    Sistema de Controlede 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
  • 10.
    Sistema de Controlede 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
  • 11.
    Sistema de Controlede 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
  • 12.
    Sistema de Controlede Versão Conceitos Fundamentais - Como organizar sua cópia de trabalho? [DF 4] Marco Rosner - marco.rosner@gmail.com
  • 13.
    Sistema de Controlede 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
  • 14.
    Sistema de Controlede Versão CVS Concurrent Versioning System [DF 4] Marco Rosner - marco.rosner@gmail.com
  • 15.
    Sistema de Controlede 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
  • 16.
    Sistema de Controlede 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
  • 17.
    Sistema de Controlede 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
  • 18.
    Sistema de Controlede 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
  • 19.
    Sistema de Controlede 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
  • 20.
    Sistema de Controlede 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
  • 21.
    Sistema de Controlede 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
  • 22.
    Sistema de Controlede Versão SVN [DF 4] Marco Rosner - marco.rosner@gmail.com
  • 23.
    Sistema de Controlede 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
  • 24.
    Sistema de Controlede 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
  • 25.
    Sistema de Controlede 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
  • 26.
    Sistema de Controlede Versão URL's - file:///<servidor local> - http://<servidor> - https://<servidor> - svn://<servidor> - svn+ssh://<servidor> [DF 4] Marco Rosner - marco.rosner@gmail.com
  • 27.
    Sistema de Controlede 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
  • 28.
    Sistema de Controlede 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
  • 29.
    Sistema de Controlede 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
  • 30.
    Sistema de Controlede 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
  • 31.
    Sistema de Controlede 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
  • 32.
    Sistema de Controlede 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
  • 33.
    Sistema de Controlede 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
  • 34.
    Sistema de Controlede 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
  • 35.
    Sistema de Controlede 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
  • 36.
    Sistema de Controlede 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
  • 37.
    Sistema de Controlede 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
  • 38.
    Sistema de Controlede 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
  • 39.
    Sistema de Controlede 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
  • 40.
    Sistema de Controlede 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
  • 41.
    Sistema de Controlede 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
  • 42.
    Sistema de Controlede 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
  • 43.
    Sistema de Controlede Versão [DF 4] Marco Rosner - marco.rosner@gmail.com
  • 44.
    Sistema de Controlede 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
  • 45.
    Sistema de Controlede 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
  • 46.
    Sistema de Controlede 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
  • 47.
    Sistema de Controlede 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
  • 48.
    Sistema de Controlede 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
  • 49.
    Sistema de Controlede 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
  • 50.
    Sistema de Controlede 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
  • 51.
    Sistema de Controlede 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
  • 52.
    Sistema de Controlede 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
  • 53.
    Sistema de Controlede 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