curso de controle de versão

Upload: marcos-monteiro

Post on 07-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 curso de controle de verso

    1/100

    Sistema de Controle de Verso

    Marcelo de Gomensoro [email protected]

    UNIVATES

  • 8/6/2019 curso de controle de verso

    2/100

    Sistema de Controle de Verso V SDSL

    Sistema de Controle de Verso

    Roteiro do minicurso

  • 8/6/2019 curso de controle de verso

    3/100

    Sistema de Controle de Verso V SDSL

    Roteiro do minicurso

    Parte I: Importncia

    Conceitos bsicos Ferramenta CVS:

    Montando um repositrio local

    Operaes avanadas Montando um repositrio remoto Limitaes

  • 8/6/2019 curso de controle de verso

    4/100

    Sistema de Controle de Verso V SDSL

    Roteiro do minicurso

    Parte II: Ferramenta Subversion:

    Montando um repositrio local Branching Montando um repositrio remoto

    Outros sistemas Desenvolvimento cooperativo Mais fontes de informao

  • 8/6/2019 curso de controle de verso

    5/100

    Sistema de Controle de Verso V SDSL

    Sistema de Controle de Verso

    Importncia

  • 8/6/2019 curso de controle de verso

    6/100

    Sistema de Controle de Verso V SDSL

    Motivao

    Permitir que qualquer alterao feita em umconjunto de cdigos-fonte seja controlada edocumentada, criando um histrico demodificaes e tambm impondo um

    mecanismo de controle de acesso

  • 8/6/2019 curso de controle de verso

    7/100

    Sistema de Controle de Verso V SDSL

    Importncia de controlar verses

    Possibilitar compartilhamento de cdigo-fonte e desenvolvimento distribudo

    Permitir controle de modificaes e trabalhoem paralelo Auxiliar na qualidade do cdigo e em sua

    manuteno Atrair novos colaboradores para projetos

    abertos e expor sua evoluo

  • 8/6/2019 curso de controle de verso

    8/100

    Sistema de Controle de Verso V SDSL

    Controle de verso em outras reas

    Histrico de modificaes em documentosde texto (wikis)

    Configuraes de um sistema computacional(snapshotsouprofiles): gerenciamento deconfiguraes de software (SCM)

    Alterao de desenhos feitos em CAD Protocolos de comunicao Interfaces de programao (APIs)

  • 8/6/2019 curso de controle de verso

    9/100

    Sistema de Controle de Verso V SDSL

    Sistema de Controle de Verso

    Conceitos bsicos

  • 8/6/2019 curso de controle de verso

    10/100

    Sistema de Controle de Verso V SDSL

    Conceitos bsicos

    Verso:Genericamente, o nome atribudo a um estado ou

    contedo de um objeto em uma cadeia demudanas

    Especificamente, indica um marcador (checkpoint)na evoluo ou desenvolvimento de um sistemacomputacional

  • 8/6/2019 curso de controle de verso

    11/100

    Sistema de Controle de Verso V SDSL

    Conceitos bsicos

    Verses so tradicionalmente usadas pelaEngenharia de Software para indicarmudanas em programas

    Tipos de verses: Simples: 10, 2003 Compostas: 0.9, 1.0rc1, 1.2.0, 2.6.11.354

    major.minor[.micro[.build]] Datas: 20050720 Cdigos: XP, MX, CS

  • 8/6/2019 curso de controle de verso

    12/100

    Sistema de Controle de Verso V SDSL

    Conceitos bsicos

    Reviso:Numerao incremental que especfica a um

    componente de um software, normalmente semrelao direta com a verso global do mesmo

    Tambm chamado de nmero de reviso ou nvelde reviso

    1.1 1.2 1.3

  • 8/6/2019 curso de controle de verso

    13/100

    Sistema de Controle de Verso V SDSL

    Conceitos bsicos

    Sistema de controle de verso (SCV):Ferramenta automatizada para atribuio e

    gerenciamento de revises de componentes deum software

    Normalmente o controle feito individualmentepara cada arquivo de cdigo-fonte

    Permite disciplinar o acesso para edio destescomponentes

  • 8/6/2019 curso de controle de verso

    14/100

    Sistema de Controle de Verso V SDSL

    Conceitos bsicos

    Funcionalidades de um SCV: Monitorar e registrar todas as alteraes em um

    ou mais arquivos Permitir que as alteraes possam ser

    examinadas individualmente e revertidas casonecessrio

    Possibilita que a imagem de um arquivo possa

    ser obtida para qualquer instante de sua histria Permite que vrios programadores trabalhem

    simultaneamente sobre os arquivos

  • 8/6/2019 curso de controle de verso

    15/100

    Sistema de Controle de Verso V SDSL

    Conceitos bsicos

    Caractersticas de um SCV: Pode ser centralizado ou no, onde as alteraes

    sempre passam por um servidor central Pode permitir somente armazenamento de

    arquivos texto ou tambm de binrios Pode implementar mecanismo de lockingpara

    evitar acessos simultneos ou mergingpara

    possibilitar edio concorrente Pode dispor ou no de autenticao e controle de

    acesso

  • 8/6/2019 curso de controle de verso

    16/100

    Sistema de Controle de Verso V SDSL

    Terminologia

    Repositrio:Local onde so armazenados os arquivos mantidos

    sob controle de verso

    rea de trabalho:Cpia local dos arquivos de um repositrio, utilizada

    para o desenvolvimento propriamente dito

    Mdulo ou projeto:Conjunto independente de arquivos; normalmente

    um repositrio constitudo de muitos mdulos

  • 8/6/2019 curso de controle de verso

    17/100

    Sistema de Controle de Verso V SDSL

    Operaes fundamentais

    Check-out:Operao inicial de criar uma rea de trabalho a

    partir de um mdulo do repositrioUpdate:

    Operao que atualiza a cpia local com eventuaismudanas ocorridas no repositrio

    Commit:Operao de efetuar mudanas em um repositrio,

    tambm chamada de check-in

  • 8/6/2019 curso de controle de verso

    18/100

    Sistema de Controle de Verso V SDSL

    Sistema de Controle de Verso

    Ferramenta CVS

  • 8/6/2019 curso de controle de verso

    19/100

    Sistema de Controle de Verso V SDSL

    Ferramenta CVS

    Abreviao de Concurrent Versions System Iniciado em 1986, tomou sua forma atual a

    partir de 1989 Herda caractersticas do programa RCS o sistema de controle de verso mais

    usado no desenvolvimento de Software Livre Hoje usado nos maiores projetos de SL Verso atual: 1.11.20

  • 8/6/2019 curso de controle de verso

    20/100

    Sistema de Controle de Verso V SDSL

    Ferramenta CVS

    Caractersticas: um sistema centralizado O repositrio pode ser local ou remoto O acesso ao repositrio nunca direto, mas feito

    atravs de ferramentas do pacote CVS As revises sempre comeam em 1.1 Permite fazer tanto lockingquanto merging Permite atribuir rtulos (tags) Possibilita criar ramificaes (branches)

  • 8/6/2019 curso de controle de verso

    21/100

    Sistema de Controle de Verso V SDSL

    Ferramenta CVS

    Principais vantagens: um sistema maduro e bem testado amplamente documentado o sistema em maior utilizao hoje, dispondo de

    um grande nmero de ferramentas de apoio Est integrado nativamente com os principais

    ambientes de desenvolvimento (IDEs) Permite execuo de check-outssem restries,

    reduzindo a necessidade de locking, para isso seapoiando na capacidade de fazer merging

  • 8/6/2019 curso de controle de verso

    22/100

    Sistema de Controle de Verso V SDSL

    Usando o CVS

    Foco inicial: uso das ferramentas de linha decomando programa cvs

    A localizao do repositrio sempreindicada pela varivel $CVSROOT ou pelaopo -d

  • 8/6/2019 curso de controle de verso

    23/100

    Sistema de Controle de Verso V SDSL

    Estrutura de um repositrio

    /usr/local/cvsroot/CVSROOT/gnu/

    hello.c,vteste.txt,v

    meta/Attic/help.php,v

  • 8/6/2019 curso de controle de verso

    24/100

    Sistema de Controle de Verso V SDSL

    Estrutura de uma rea de trabalho

    /home/mgm/devel/gnu/

    CVS/EntriesRepositoryRoot

    hello.cteste.txt

  • 8/6/2019 curso de controle de verso

    25/100

    Sistema de Controle de Verso V SDSL

    Principais comandos

    checkout: obter uma cpia de um mdulopara a rea de trabalho local

    commit: enviar as alteraes da cpia localpara o repositrio update: atualizar a cpia local com eventuais

    mudanas do repositrio add/remove: adicionar e remover arquivos

    de um mdulo

  • 8/6/2019 curso de controle de verso

    26/100

    Sistema de Controle de Verso V SDSL

    Principais comandos

    Ajuda do programa cvs: cvs --help: ajuda geral

    cvs --help-commands: lista de comandos cvs --help-options: lista de opes cvs -H : opes do comando

    especificado

  • 8/6/2019 curso de controle de verso

    27/100

    Sistema de Controle de Verso V SDSL

    Ferramenta CVS

    Montando um repositrio local

  • 8/6/2019 curso de controle de verso

    28/100

    Sistema de Controle de Verso V SDSL

    Montando um repositrio local

    Definir a localizao e criar um repositrio Criar e importar um mdulo

    Fazer um checkout Efetuar alteraes nos fontes Fazer um commit

    Atualizar rea de trabalho e ver alteraes Adicionar e remover arquivos

  • 8/6/2019 curso de controle de verso

    29/100

    Sistema de Controle de Verso V SDSL

    Definindo e inicializando

    Defina a localizao do repositrio:$ export CVSROOT=~/cvs

    Inicialize o repositrio:$ cvs init

    Nota: este diretrio deve ter permisso deleitura e escrita por todos que tero acesso

    ao CVS

  • 8/6/2019 curso de controle de verso

    30/100

    Sistema de Controle de Verso V SDSL

    Criando um mdulo simples

    Crie um diretrio temporrio:$ mkdir ~/temp

    Crie dentro dele um arquivo texto:$ printf "um\ndois\ntrs\n" > ~/temp/teste.txt

  • 8/6/2019 curso de controle de verso

    31/100

    Sistema de Controle de Verso V SDSL

    Importando arquivos

    V at o diretrio que contm os arquivos aserem importados:$ cd ~/temp

    Importe todos os arquivos e diretriospresentes no mdulo gnu:$ cvs import -m "Importao" gnu gnu start

    A opo -m indica a mensagem a serregistrada para a operao de importao

    A palavra start indica um release

  • 8/6/2019 curso de controle de verso

    32/100

    Sistema de Controle de Verso V SDSL

    Criando uma rea de trabalho

    Crie um diretrio base para sua cpia local:$ mkdir ~/devel

    Faa um checkoutdo mdulo gnu nestediretrio:$ cd ~/devel$ cvs checkout gnu

    cvs checkout: Updating gnuU gnu/teste.txt

  • 8/6/2019 curso de controle de verso

    33/100

    Sistema de Controle de Verso V SDSL

    Editando o mdulo

    Entre no diretrio gnu e edite o arquivoteste.txt, adicionando a palavra quatro:$ cd gnu$ lsCVS teste.txt$ vi teste.txt

  • 8/6/2019 curso de controle de verso

    34/100

    Sistema de Controle de Verso V SDSL

    Enviando as alteraes

    Faa um commit, especificando umamensagem para ser includa no histrico:$ cvs commit -m "atualizao"cvs commit: Examining .Checking in teste.txt; /home/mgm/cvs/gnu/teste.txt,v

  • 8/6/2019 curso de controle de verso

    35/100

    Sistema de Controle de Verso V SDSL

    Obtendo atualizaes

    Faa um update, na rea de trabalho:$ cvs updatecvs update: Updating .

    Modifique novamente o arquivo teste.txt, agoraremovendo a palavra trs:$ vi teste.txt

    $ cvs updatecvs update: Updating .M teste.txt

  • 8/6/2019 curso de controle de verso

    36/100

    Sistema de Controle de Verso V SDSL

    Verificando alteraes

    Faa um diff, entre o repositrio e a rea local:$ cvs diff -u

    O resultado deste comando a comparaolinha-a-linha entre os arquivos mais recentesdo mdulo e a sua rea de trabalho

    A opo -u indica um tipo de diffbastante

    legvel, sendo o mais usado em SoftwareLivre para a divulgao de patches, tambmchamado de diffunificado

  • 8/6/2019 curso de controle de verso

    37/100

    Sistema de Controle de Verso V SDSL

    Adicionando fontes

    Crie dois novos arquivos, arq1 e arq2:$ cp teste.txt arq1; cp teste.txt arq2

    Remova o arquivo teste.txt, para que sejamrevertidas as mudanas feitas antes:$ rm teste.txt

    Faa um updatee analise sua sada:

    $ cvs updateSolicite a incluso dos dois novos arquivos:

    $ cvs add arq1 arq2

  • 8/6/2019 curso de controle de verso

    38/100

    Sistema de Controle de Verso V SDSL

    Adicionando fontes

    Faa outro update:$ cvs update

    Adicione definitivamente os arquivos aorepositrio com um commit, agora semespecificar uma mensagem:$ cvs commit

    Ser aberto o editor de texto padro, solicitandoa mensagem a ser armazenada

  • 8/6/2019 curso de controle de verso

    39/100

    Sistema de Controle de Verso V SDSL

    Removendo fontes

    Remova o arquivo arq2 e depois use ocomando removepara sinalizar a remoo:$ rm arq2

    $ cvs remove arq2$ cvs update

    Remova definitivamente o arquivo dorepositrio com o comando commit:$ cvs commit -m "Remoo"

  • 8/6/2019 curso de controle de verso

    40/100

    Sistema de Controle de Verso V SDSL

    Ferramenta CVS

    Operaes avanadas

  • 8/6/2019 curso de controle de verso

    41/100

    Sistema de Controle de Verso V SDSL

    Operaes avanadas

    Configurao Comportamento recursivo

    Substituio de keywords Arquivos binrios Arquivos temporrios

    Exibindo e definindo tags Obtendo e efetuando alteraes

  • 8/6/2019 curso de controle de verso

    42/100

    Sistema de Controle de Verso V SDSL

    Operaes avanadas

    Outros comandos Alterao manual do repositrio

    Branching

  • 8/6/2019 curso de controle de verso

    43/100

    Sistema de Controle de Verso V SDSL

    Configurao

    As opes defaultpara os comandos do CVSso colocadas no arquivo ~/.cvsrc

    Exemplo:cvs -z3diff -uupdate -d -P

    Neste caso: usar compresso em nvel 3, usartipo -u para o diffe fazer criao e remooautomtica de diretrios quando do update

  • 8/6/2019 curso de controle de verso

    44/100

    Sistema de Controle de Verso V SDSL

    Comportamento recursivo

    Por defaulttodos os comandos do CVSoperam recursivamente:$ cvs commit

    Contudo estes tambm podem ser chamadospara um ou mais arquivos separadamente:$ cvs commit arq1

  • 8/6/2019 curso de controle de verso

    45/100

    Sistema de Controle de Verso V SDSL

    Substituio de keywords

    O CVS capaz de manter atualizadasautomaticamente diversas informaessobre o fonte, quando feito um update

    As seguintes keywordsso sempreexpandidas:

    $Author$, $Date$, $Header$, $Id$, $Name$,

    $Locker$, $Log$, $RCSfile$, $Revision$,$Source$, $State$$Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $

  • 8/6/2019 curso de controle de verso

    46/100

    Sistema de Controle de Verso V SDSL

    Arquivos binrios

    Devem ser adicionados com a opo -kb docomando add:$ cvs add -kb imagem.gif

    Nos arquivos de configurao do repositrio(no diretrio CVSROOT) existe o arquivocvswrappers que pode definir que tipo dearquivos so binrios por default:*.gif -kb*.jpg -kb

  • 8/6/2019 curso de controle de verso

    47/100

    Sistema de Controle de Verso V SDSL

    Arquivos temporrios

    Alguns tipos de arquivos temporrios soautomaticamente ignorados pelo CVS, nofazendo parte do repositrio:

    CVS, core, *~, *.bak, *.old, *.o, *.a, ...Ainda possvel definir padres de nomes

    para serem ignorados:

    via varivel de ambiente $CVSIGNORE em arquivos .cvsignore, no homedo usurio

    ou em cada diretrio do projeto

  • 8/6/2019 curso de controle de verso

    48/100

    Sistema de Controle de Verso V SDSL

    Exibindo e definindo tags

    Exibir dados de um arquivo, indicando averso de trabalho, a verso do repositrio eas tagsassociadas:

    $ cvs status -v teste.txtDefinir uma tagpara um arquivo:

    $ cvs tag dia-16 teste.txt

    Definir uma tagpara um mdulo inteiro(chamada de release):$ cvs rtag release-0-0 gnu

  • 8/6/2019 curso de controle de verso

    49/100

    Sistema de Controle de Verso V SDSL

    Obtendo e efetuando alteraes

    Obtendo alteraes entre verses:$ cvs diff -r start$ cvs diff -r 1.1 -r 1.2

    Obtendo alteraes entre releasesde umprojeto inteiro:$ cvs rdiff -r VER1 -r VER2 prog

    Aplicando um patch:$ patch -p1 < changes.diff

  • 8/6/2019 curso de controle de verso

    50/100

    Sistema de Controle de Verso V SDSL

    Outros comandos

    Alteraes linha-a-linha:$ cvs annotate teste.txt

    Histrico de acessos ao repositrio:$ cvs history

    Registro de alteraes de cada arquivo:$ cvs log teste.txt

  • 8/6/2019 curso de controle de verso

    51/100

    Sistema de Controle de Verso V SDSL

    Conflitos

    Quando um updatetraz atualizaes dorepositrio para um trecho de cdigo que jfoi alterado, pode ocorrer um conflito

    Esse conflito sinalizado com a letra C e deveser resolvido manualmente pelo usurioantes de um prximo commit:

    $ cvs updatecvs update: Updating .C driver.c

  • 8/6/2019 curso de controle de verso

    52/100

    Sistema de Controle de Verso V SDSL

    Conflitos

    Exemplo de cdigo alterado para sinalizar umconflito:

    fprintf(stderr, "No code generated.\n");

    > 1.6}

  • 8/6/2019 curso de controle de verso

    53/100

    Sistema de Controle de Verso V SDSL

    Alterao manual do repositrio

    Em algumas situaes prefervel alterarmanualmente o repositrio, ao invs deutilizar os comandos adde remove:

    para mover diretrios e preservar seucontedo inalterado

    para mover arquivos e manter seu histrico

    para remover arquivos e diretriosdefinitivamente do CVS, inclusive com seushistricos

  • 8/6/2019 curso de controle de verso

    54/100

    Sistema de Controle de Verso V SDSL

    Branching

    O CVS implementa um mecanismo complexopara manter mltiplos releasesde ummesmo projeto:

    1.0 1.1 1.2

    1.1.1 1.1.2

  • 8/6/2019 curso de controle de verso

    55/100

    Sistema de Controle de Verso V SDSL

    Ferramenta CVS

    Montando um repositrio remoto

  • 8/6/2019 curso de controle de verso

    56/100

    Sistema de Controle de Verso V SDSL

    Montando um repositrio remoto

    O servidor CVS precisa rodar como umservio do inetd:

    cvspserver stream tcp nowait root

    /usr/bin/cvs cvs -f --allow-root=/home/cvs pserver

    importante criar um usurio cvs prprio parao CVS, que seja dono do repositrio etambm o usurio sob o qual ir rodar oservidor

  • 8/6/2019 curso de controle de verso

    57/100

    Sistema de Controle de Verso V SDSL

    Montando um repositrio remoto

    O arquivo de configurao passwd permitedefinir usurios com senhas para o acesso:job:kfeIWZpz58xOI:cvs

    mgm:AAqo55sskNRpI:cvsO acesso deve ser feito via comando login:

    export CVSROOT=:pserver:[email protected]:/cvscvs login

    O resto da utilizao idntica a umrepositrio local

  • 8/6/2019 curso de controle de verso

    58/100

    Sistema de Controle de Verso V SDSL

    Ferramenta CVS

    Limitaes do CVS

    d C S

  • 8/6/2019 curso de controle de verso

    59/100

    Sistema de Controle de Verso V SDSL

    Limitaes do CVS

    Alterar nome, copiar ou mover arquivosexige operaes especiais para preservar ohistrico

    No h versionamento para diretrios Commitsno so operaes atmicas Arquivos binrios exigem cuidados

    especiais; todas as revises so mantidasintegralmente

    Li i d CVS

  • 8/6/2019 curso de controle de verso

    60/100

    Sistema de Controle de Verso V SDSL

    Limitaes do CVS

    Numerao de revises complexa No h suporte para linkssimblicos Branching uma operao complicada e

    demorada Diferenas so transmitidas somente entre o

    servidor e o cliente O protocolo defaultdo CVS no seguro Servidor pserver depende do inetd

    Si d C l d V

  • 8/6/2019 curso de controle de verso

    61/100

    Sistema de Controle de Verso V SDSL

    Sistema de Controle de Verso

    Ferramenta Subversion

    F t S b i

  • 8/6/2019 curso de controle de verso

    62/100

    Sistema de Controle de Verso V SDSL

    Ferramenta Subversion

    Projeto livre mantido pela CollabNet Iniciado em 2000 Tenta aprimorar o CVS e remover suas

    limitaes, contudo seguindo os mesmosprincpios bsicos

    o provvel substituto do CVS em projetos

    de Software Livre Verso atual: 1.2.1

    F t S b i

  • 8/6/2019 curso de controle de verso

    63/100

    Sistema de Controle de Verso V SDSL

    Ferramenta Subversion

    Caractersticas: um sistema centralizado O repositrio pode ser local ou remoto O acesso ao repositrio feito indiretamente Permite fazer tanto lockingquanto merging Permite atribuir rtulos (tags) Possibilita criar ramificaes (branches)

  • 8/6/2019 curso de controle de verso

    64/100

    Ferramenta Subversion

  • 8/6/2019 curso de controle de verso

    65/100

    Sistema de Controle de Verso V SDSL

    Ferramenta Subversion

    Principais vantagens: Permite alterar nome, copiar ou mover arquivos

    preservando seu histrico

    Faz versionamento para diretrios Commitsso operaes atmicas Arquivos binrios so tratados automaticamente e

    apenas as diferenas so armazenadas

    Suporta linkssimblicos Branching simples e eficiente Marcao de tags rpida

    Ferramenta Subversion

  • 8/6/2019 curso de controle de verso

    66/100

    Sistema de Controle de Verso V SDSL

    Ferramenta Subversion

    Principais vantagens: Muitas operaes so feitas apenas localmente Diferenas so transmitidas nos dois sentidos

    entre cliente e servidor Utiliza protocolos seguros e pode ser roteado

    atravs de SSH Permite acesso remoto atravs de WebDAV,

    sendo integrado ao Apache Servidor defaultpode ser independente oudepender do inetd

    Usando o Subversion

  • 8/6/2019 curso de controle de verso

    67/100

    Sistema de Controle de Verso V SDSL

    Usando o Subversion

    Foco inicial: uso das ferramentas de linha decomando programa svn

    Programa svnadmin: gerenciamento do

    repositrio A localizao do repositrio sempre

    indicada por uma URL:

    Apache: http://...Servidor prprio: svn://...Repositrio local: file://...

    Estrutura de uma rea de trabalho

  • 8/6/2019 curso de controle de verso

    68/100

    Sistema de Controle de Verso V SDSL

    Estrutura de uma rea de trabalho

    /home/mgm/devel/gnu/

    .svn/...hello.cteste.txt

  • 8/6/2019 curso de controle de verso

    69/100

    Principais comandos

  • 8/6/2019 curso de controle de verso

    70/100

    Sistema de Controle de Verso V SDSL

    Principais comandos

    import: importar para o repositrio umarvore de diretrios sem versionamento

    info: exibir informaes sobre o repositrio

    ou arquivo especificado diff: exibe alteraes entre um arquivo e

    revises anteriores

    status: exibe o estado atual de cada arquivo,sem alterar a rea de trabalho ou orepositrio

    Principais comandos

  • 8/6/2019 curso de controle de verso

    71/100

    Sistema de Controle de Verso V SDSL

    Principais comandos

    Ajuda do programa svn: svn --version: exibe a configurao atual e o

    suporte a protocolos de acesso svn help: ajuda geral svn help : ajuda do comando

    especificado

    Ferramenta Subversion

  • 8/6/2019 curso de controle de verso

    72/100

    Sistema de Controle de Verso V SDSL

    Ferramenta Subversion

    Montando um repositrio local

    Montando um repositrio local

  • 8/6/2019 curso de controle de verso

    73/100

    Sistema de Controle de Verso V SDSL

    Montando um repositrio local

    Criar um repositrio e importar um conjuntode diretrios

    Fazer um checkout Efetuar alteraes nos fontes Fazer um commit Atualizar rea de trabalho e ver alteraes Adicionar e remover arquivos

  • 8/6/2019 curso de controle de verso

    74/100

    Importando

  • 8/6/2019 curso de controle de verso

    75/100

    Sistema de Controle de Verso V SDSL

    Importando

    Importe todos os arquivos e diretriospresentes no diretrio temporrio$ svn import ~/temp2 file:///$HOME/subversion -m

    "Importao"A opo -m indica a mensagem a serregistrada para a operao de importao

    Agora verifique a importao:$ svn list --verbose file:///$HOME/subversion

    Criando uma rea de trabalho

  • 8/6/2019 curso de controle de verso

    76/100

    Sistema de Controle de Verso V SDSL

    Criando uma rea de trabalho

    Crie um diretrio base para sua rea:$ mkdir ~/devel

    Faa um checkoutdo diretrio projeto/trunk do

    repositrio para esta rea:$ cd ~/devel$ svn checkout

    file:///$HOME/subversion/projeto/trunk projeto

    A projeto/teste.txtChecked out revision 1.

  • 8/6/2019 curso de controle de verso

    77/100

    Enviando as alteraes

  • 8/6/2019 curso de controle de verso

    78/100

    Sistema de Controle de Verso V SDSL

    Faa um commit, especificando umamensagem para ser includa no histrico:$ svn commit -m "atualizao"

    Sending teste.txtTransmitting file data .Committed revision 2.

    Verifique novamente o estado do arquivo:

    $ svn status

    Verificando alteraes

  • 8/6/2019 curso de controle de verso

    79/100

    Sistema de Controle de Verso V SDSL

    Modifique novamente o arquivo teste.txt, agoraremovendo a palavra trs.

    Faa um diff, entre o repositrio e a rea local:

    $ svn diffCheque as informaes sobre o arquivo:

    $ svn info teste.txtReverta o arquivo ao estado original no repositrio:

    $ svn revert teste.txt$ svn status

    Operao desconectada

  • 8/6/2019 curso de controle de verso

    80/100

    Sistema de Controle de Verso V SDSL

    p

    O Subversion mantm uma cpia localescondida de cada arquivo tal como trazidoda ltima vez do repositrio

    Isso permite que os comandos status, differevert possam ser executados sem que sejanecessria conexo com o repositrio

    Manipulando arquivos

  • 8/6/2019 curso de controle de verso

    81/100

    Sistema de Controle de Verso V SDSL

    p q

    A adio e a remoo de arquivos funciona deforma anloga ao CVS, utilizando oscomandos add e remove

    Arquivos e diretrios tambm podem sercopiados, movidos e renomeados,preservando seu o histrico:$ svn copy teste.txt teste2.txt$ svn rename teste.txt teste1.txt$ svn status

    Ferramenta Subversion

  • 8/6/2019 curso de controle de verso

    82/100

    Sistema de Controle de Verso V SDSL

    Branching

    Branching

  • 8/6/2019 curso de controle de verso

    83/100

    Sistema de Controle de Verso V SDSL

    Branching a ramificao dodesenvolvimento

    No Subversion feito como uma cpia

    eficiente de arquivos e diretrios

    Branching

  • 8/6/2019 curso de controle de verso

    84/100

    Sistema de Controle de Verso V SDSL

    O diretrio trunk a base

    O diretrio

    branchescontmas vriasramificaes

    O diretrio tagscontm novosreleases

    Branching

  • 8/6/2019 curso de controle de verso

    85/100

    Sistema de Controle de Verso V SDSL

    Exemplo de branching:$ svn copy http://svn.example.com/calc/trunk \

    http://svn.example.com/calc/branches/my-calc

    Migrando alteraes de trunk para my-calc:$ svn merge -r 343:344 \

    http://svn.example.com/repos/calc/trunk Criando uma tagchamada release-1.0:

    $ svn copy http://svn.example.com/calc/trunk \http://svn.example.com/calc/tags/release-1.0

    Ferramenta Subversion

  • 8/6/2019 curso de controle de verso

    86/100

    Sistema de Controle de Verso V SDSL

    Montando um repositrio remoto

    Montando um repositrio remoto

  • 8/6/2019 curso de controle de verso

    87/100

    Sistema de Controle de Verso V SDSL

    Um repositrio pode ser montado usando WebDAVcom o Apache ou com um servidor prprio

    No caso de um servidor prprio, basta rodar oprograma svnserve no maquina remota com osparmetros adequados:

    $ svnserve -d -r ~/subversionO acesso na mquina local ento ser atravs de uma

    URL especfica:$ svn checkout svn:///projeto/trunk projeto

    Sistema de Controle de Verso

  • 8/6/2019 curso de controle de verso

    88/100

    Sistema de Controle de Verso V SDSL

    Outros sistemas

    Outros sistemas

  • 8/6/2019 curso de controle de verso

    89/100

    Sistema de Controle de Verso V SDSL

    Sistemas centralizados (livres): Vesta Superversion (Java)

    Stellation (Eclipse) Meta-CVS jedivcs (Delphi) /BriefCase

    Outros sistemas

  • 8/6/2019 curso de controle de verso

    90/100

    Sistema de Controle de Verso V SDSL

    Sistemas distribudos (livres): GNU Arch / Bazaar ArX

    Monotone Cogito (Linux kernel) Mercurial Codeville

    Darcs SVK (sobre o Subversion) Aegis

    Outros sistemas

  • 8/6/2019 curso de controle de verso

    91/100

    Sistema de Controle de Verso V SDSL

    Sistemas comerciais: Razor AccuRev

    BitKeeper IBM/Rational Software ClearCase Perforce SCCS (anos 70)

    Borland Starteam Microsoft Visual SourceSafe TeamWare

    Sistema de Controle de Verso

  • 8/6/2019 curso de controle de verso

    92/100

    Sistema de Controle de Verso V SDSL

    Desenvolvimento cooperativo

    Desenvolvimento cooperativo

  • 8/6/2019 curso de controle de verso

    93/100

    Sistema de Controle de Verso V SDSL

    Poltica de commitdo projeto: Definir quem, quando e como Cada grupo de commitsdeve ser

    documentado Uso de um ou mais ChangeLogs Notificao de alteraes por e-mail: lista

    especfica para desenvolvedores Acesso de escrita restrito

    Desenvolvimento cooperativo

  • 8/6/2019 curso de controle de verso

    94/100

    Sistema de Controle de Verso V SDSL

    ChangeLog:

    Mon Jul 7 11:37:43 2003 Marcelo Malheiros

    * www/document/put.php: added missing translation

    Sun Jul 6 21:27:38 2003 Marcelo Malheiros

    * schema.sql: added quotes to function declaration for

    compatibility

    * www/user/list.php: added missing database translation

    * www/cron/all.php: force change to script directory

    Desenvolvimento cooperativo

  • 8/6/2019 curso de controle de verso

    95/100

    Sistema de Controle de Verso V SDSL

    Como organizar um repositrio? criar um ou mais diretrios de alto nvel por projeto

    Como organizar os fontes em um projeto? seguir a estrutura dada porGNU Autotools

  • 8/6/2019 curso de controle de verso

    96/100

    Desenvolvimento cooperativo

  • 8/6/2019 curso de controle de verso

    97/100

    Sistema de Controle de Verso V SDSL

    Como obter um servidor para um projeto?http://www.codigolivre.org.br/http://incubadora.fapesp.br/

    http://colaborar.softwarelivre.gov.br/

    http://www.sourceforge.net/http://savannah.gnu.org/

    http://www.berlios.de/http://www.tigris.org/http://dev.java.net/

    Sistema de Controle de Verso

  • 8/6/2019 curso de controle de verso

    98/100

    Sistema de Controle de Verso V SDSL

    Mais fontes de informao

    Mais fontes de informao

  • 8/6/2019 curso de controle de verso

    99/100

    Sistema de Controle de Verso V SDSL

    http://www.cvshome.org/http://focalinux.cipsga.org.br/guia/avancado/ch-s-cvs.htmhttp://www.gnu.org/manual/cvs/http://cvsbook.red-bean.com/

    http://subversion.tigris.org/http://svnbook.red-bean.com/

    http://en.wikipedia.org/wiki/Version_control

    http://en.wikipedia.org/wiki/List_of_revision_control_softwarehttp://www.mhavila.com.br/link/prog/tool/control.htmlhttp://sources.redhat.com/autobook/

    FIM

  • 8/6/2019 curso de controle de verso

    100/100

    Sistema de Controle de Verso V SDSL

    Marcelo de Gomensoro [email protected]