Professional Documents
Culture Documents
REPOSITRIOS
1
RESUMO DA APRESENTAO
Definies Vantagens Atividades Comuns Integrao com outros Softwares Como funciona ? Repositrios Centralizados Repositrios Distribudos
Sistemas de Controle de Verso Centralizados RCS Revision Control System CVS Concurrent Version System SVN Subversion VSS Microsoft Visual SourceSafe Rational ClearCase Distribuidos GIT BAZZAR Mercurial GNU Arch Monotone
Darcs
DEFINIES
Um repositrio pode ser um sistema de arquivos local ou um servidor remoto, e so extensamente usados em Sistemas de Controle de Verso.
Um sistema de controle de verso, VCS (Version Control System) ou ainda SCM (Source Code Management) por sua vez, providencia rvore de verso para gerenciar verses diferentes de arquivos.
EXEMPLO : Vrias ferramentas de controle de verso usam arquitetura de cliente/servidor e os clientes podem pegar qualquer informaes sobre qualquer arquivo acessando o repositrio.
4
4
PRINCIPAIS VANTAGENS
Controle do histrico Trabalho em equipe Marcao e resgate de verses estveis Ramificao de projeto
Os sistemas de controle de verses mais flexveis permitem que seja possvel integr-los a outros softwares. A integrao mais comum em ambientes de desenvolvimento atravs de plugins . Alguns ambientes que suportam a integrao de alguns sistemas so:
O TortoiseSVN, o TortoiseCVS e o TortoiseHg, clientes do SVN, do CVS e do Mercurial, respectivamente, funcionam sobre o Windows Explorer.
REPOSITRIOS CENTRALIZADOS
REPOSITRIOS CENTRALIZADOS
VANTAGENS Mantm as informaes referentes aos arquivos em um repositrio nico acessvel a todos os desenvolvedores de um projeto.
DESVANTAGENS
So extremamente dependentes do repositrio que contm os dados Necessidade de uma boa estrutura de backup
9
REPOSITRIOS DISTRIBUDOS
Design muito mais complexo Uma conexo permanente com o servidor no requisito fundamental para 10 o funcionamento do sistema
REPOSITRIOS CENTRALIZADOS
RCS Revision Control System CVS Concurrent Version System SVN Subversion VSS Microsoft Visual SourceSafe Rational ClearCase
12
REPOSITRIOS CENTRALIZADOS
RCS foi inicialmente desenvolvido em 1980 por Walter F. Tichy [1985 ] Consiste em um conjunto de comandos UNIX Modelo checkout/checkin [Feiler 1991] Os arquivos so armazenados no repositrio na forma de rvore. Armazena somente os arquivos correntes no repositrio, que conhece somente as diferenas entre as revises armazenadas
13
REPOSITRIOS
RCS DEFEITOS
O mtodo de bloqueio (locking) dos arquivos impede o desenvolvimento paralelo . OBS: A programao paralela pode ser simulada com a utilizao de branches, seguidos da instruo merge. O sistema no permite que exista uma hierarquia de diretrios dentro de um repositrio. ( O RCS gerencia os artefatos apenas dentro de um determinado diretrio.) Estas limitaes incentivaram o desenvolvimento do chamado CVS (Concurrent Versions System).
13
REPOSITRIOS CENTRALIZADOS
Primeira verso lanada em 1984 por Dick Grune O cdigo que evoluiu para a verso atual do CVS foi iniciada por Brian Berliner em abril de 1989. Usa o formato para armazenamento de arquivo do RCS Pode ser usado tanto localmente como remotamente Licena GPL Suporte ao rastreamento de mudanas linha-a-linha (annotate),
14
REPOSITRIOS CENTRALIZADOS
Suporte ao desenvolvimento de um software originalmente desenvolvido por outra pessoa ou empresa . (Import) Criao de mdulos dentro de um repositrio. Permite total personalizao sobre o armazenamento do registro de mudanas Desenvolvimento concorrente Paradigma copy-modifymerge" [Berliner 1990]
Um levantamento bastante completo das funcionalidades do CVS pode ser encontrado em [Fogel 1999] e [Cederqvist 1993].
REPOSITRIOS CENTRALIZADOS
17
REPOSITRIOS CENTRALIZADOS
CVS DEFEITOS
Os commits no so atmicos, Histrico de verses no muito bom Requer maior administrao que o RCS Curva de aprendizagem ngreme para os novatos
17
REPOSITRIOS CENTRALIZADOS
SVN - SUBVERSION
O projeto Subversion comeou em 2000, financiado pela empresas CollabNet e Red Hat Em agosto de 2001 o sistema se tornou auto gerencivel (Os desenvolvedores do Subversion pararam de usar o CVS para gerir seu prprio cdigo-fonte, e comearam a usar o prprio Subversion no lugar.) Primeira verso lanada em 2004 Atualmente encontra-se na verso 1.6 Licena CollabNet/Tigris.org Os custos so proporcionais ao tamanho das mudanas e no ao tamanho dos dados Enquanto o CVS usa versionamento por arquivo, o SVN usa versionamento por mdulo.
19
REPOSITRIOS CENTRALIZADOS
SVN - SUBVERSION
O Subversion conta com vrias caractersticas inexistentes no seu irmo mais velho, o CVS, e entre elas podemos citar:
Versionamento de diretrios Histrico de verses bom Commits atmicos Escolha das camadas de rede (associa-se ao servidor Apache HTTP pelo protocolo WebDAV/DeltaV)
http://svnbook.red-bean.com/en/1.4/svn-book.html Segundo informaes encontradas na internet, todo o repositrio de cdigos-fonte da Conectiva (criadora do Conectiva Linux), armazenado em um repositrio Subversion consistindo em mais de 20 Gb de dados.
20
REPOSITRIOS CENTRALIZADOS
20
REPOSITRIOS CENTRALIZADOS
um sistema de controle de verses e administrao de cdigo fonte vendido pela Microsoft junto com o pacote Microsoft Visual Studio. A grande vantagem a integrao com outras ferramentas Microsoft como o Visual Studio .NET. Boa interface com usurio Podemos definir o VSS em 3 funes bsicas de um SCV:
REPOSITRIOS CENTRALIZADOS
VSS - DESVANTAGENS
Ruim gerenciamento em redes Dificiculdade de gerenciar mdulos externos Lentido na busca por verses anteriores no seu repositrio No existe verso nativa para Linux ou Unix.
OBS : Hoje em dia o VSS est em desuso e sua utilizao no muito indicada, a Microsoft apostou em um novo produto, o Visual Studio 2005 Team System (VSTS). O VSTS no herdeu nada do VSS e foi construdo a partir do zero, tendo toda estrutura de gerenciamento refeita. Alm disso, trabalha sobre o banco de dados SQL Server 2005 e tem acesso remoto nativo atravs da web.
23
REPOSITRIOS CENTRALIZADOS
CLEAR CASE
Permite criar dois tipos de projetos: Base e UCM. Projeto proprietrio da Rational (IBM) Um projeto do ClearCase Base possui recursos similares ao SVN e CVS. (check-in, check-out, branch, labels, etc) No ClearCase UCM
Stream: Seria como um branch integrado a atividades. Geralmente so separadas por desenvolvedores e existe uma stream de integrao. Delivery: a entrega do cdigo de uma atividade para a stream de integrao; Rebase: Representa a atualizao da sua stream de desenvolvimento a partir de uma baseline;
24
BRANCH X STREAM
Um branch uma ramificao no controlador de verso do fonte do nosso projeto. Essa ramificao muito utilizada para realizar manutenes evolutivas e correes no software.
25
BRANCH X STREAM
Branch pode evitar que o cdigo parcial de uma manuteno evolutiva v por engano para homologao/ produo junto com a correo de um bug simples aberto e corrigido nas ltimas horas. Se uma pessoa fizer algo errado e realizar o check-in, essa pessoa pode impactar o trabalho de outras pessoas, mesmo em projetos com testes unitrios Para evitar isso o ClearCase UCM existe a opo de utilizar o que chamado de desenvolvimento em paralelo que um pouco diferente do conceito do CVS / SVN ou mesmo ClearCase Base.
25 25
REPOSITRIOS CENTRALIZADOS
COMPARATIVO GERAL
SCV Desenvolvi mento Concorrent e Comits Atmicos Versionamento Histrico de verses RCS No permite CVS Bom SVN Bom VSS No permite Clear Case Muito Bom
26
REPOSITRIOS CENTRALIZADOS
COMPARATIVO GERAL
SCV Lanado em Desenvolvi do por Licena RCS 1980 Walter F. Tichy GPL CVS 1986 Dick Grune GPL SVN 2004 CollabNet e Red Hat CollabNet/ Tigris.org VSS 1995 One Tree Software MSDN Universal License Sim No Clear Case 1992 Atria Software Rational Licence No Sim
27
REPOSITRIOS CENTRALIZADOS
CONCLUSES
Entre os mais comuns encontram-se as solues livres: CVS e SVN; e as comerciais: SourceSafe e ClearCase. Optar por uma soluo comercial geralmente est relacionada garantia, pois as solues livres no se responsabilizam por erros no software e perdas de informaes, apesar das solues livres poderem ter melhor desempenho e segurana que as comerciais
28
http://www.infoq.com/articles/dvcs-guide
29
29
REPOSITRIOS DISTRIBUDOS
Cada projeto um repositrio completo, com histrico total. Independente de acesso rede ou servidor central. Commits podem ser feitos offline. Commits podem ser transferidos (push e pull) de um repositrio para outro facilmente.
30
RECOMENDVEL
31
GIT
32
REPOSITRIOS DISTRIBUDOS
GIT
Criador: Linus Torvalds(2005). Responsvel: Junio C Hamano Licena: GPL v2 ltima verso: v1.6.5.2 Escrito em: C, Bourne Shell, Perl
33
REPOSITRIOS DISTRIBUDOS
GIT: CARACTERSTICAS
Desenvolvido para manter o Kernel do Linux. Rapidez, eficincia e uso em grandes projetos. http://git.or.cz Commits offline. Commits parciais. Bisect Git SVN: Permite usar Git em repositrios SVN
34
REPOSITRIOS DISTRIBUDOS
GIT: GUIS
35
REPOSITRIOS DISTRIBUDOS
GIT: HOSPEDAGEM
Hospedagem pblica
repo.or.cz - http://repo.or.cz Gitorious - http://gitorious.org/ codebase - http://www.codebasehq.com/ Unfuddle - http://unfuddle.com/ GitHub - http://github.com/ CodaSet - http://codaset.com/
Hospedagem privada
36
REPOSITRIOS DISTRIBUDOS
GIT
Kernel do Linux, Servidor X.org, Qt(toolkit), Android do Google Ruby on Rails. gcc
37
BAZAAR
38
REPOSITRIOS DISTRIBUDOS
BAZAAR
Criador: Martin Pool Desenvolvido por: Canonical Ltd. and community Licena: GPL ltima verso: October 14, 2009: Bazaar 2.0.1 Escrito em: Python, Pyrex, C
39
REPOSITRIOS DISTRIBUDOS
BAZAAR: CARACTERISTICAS
Comunidade grande e ativa(Canonical/Ubuntu) http://bazaar-vsc.org/ O controle do repositrio fica na raiz do projeto, em um diretrio chamado .bzr Permite trabalhar nos repositrios SVN, Git, Mercurial. Workflows Focado na facilidade de uso. Suporta plugins. Criticado por mau desempenho
40
REPOSITRIOS DISTRIBUDOS
BAZAAR: GUIS
Windows Linux OS X
41
REPOSITRIOS DISTRIBUDOS
BAZAAR: HOSPEDAGEM
42
REPOSITRIOS DISTRIBUDOS
BAZAAR
43
MERCURIAL
44
REPOSITRIOS DISTRIBUDOS
MERCURIAL
Responsvel: Matt Mackall Licena: GPL v2 ltima verso: 1.3.1 / 2009-07-23 Escrito em: Python e C.
45
REPOSITRIOS DISTRIBUDOS
MERCURIAL: CARACTERSTICAS
Funciona basicamente linha de comando, sempre comea com hg. http://mercurial.selenic.com/ Permitir fazer o clone via http Permitir fazer o pull (subir as alteraes) para o servidor tambm via http
46
REPOSITRIOS DISTRIBUDOS
MERCURIAL: GUI
Windows Linux OS X
REPOSITRIOS DISTRIBUDOS
MERCURIAL: HOSPEDAGEM
FreeHg - http://freehg.org/ SourceForce - http://sourceforge.net/ Google Code- http://code.google.com/projecthosting/ GNU Savannah - http://savannah.gnu.org/ Bitbucket - http://www.bitbucket.org/
48
REPOSITRIOS DISTRIBUDOS
MERCURIAL
Mozilla Symbian OS GNU Octave Todos os projetos da Sun usam Mercurial, exceto MySQL.
49
LAUNCHPAD
50
LAUNCHPAD
uma aplicao web. Software livre. Criador: Canonical Ltd. Desenvolvido por: Canonical Ltd. and community Licena: GNU Affero General Public License ltima verso: Launchpad 3.0 23 Sep 2009 Escrito em: Python
51
LAUNCHPAD
Usa Bazaar, como repositrio Outros grandes projetos usando Launchpad so:
MySQL (code hosting) Zope 3 (bug tracking) Inkscape (bug tracking) Bazaar GNOME Do Integrade
52
LAUNCHPAD
53
REPOSITRIOS DISTRIBUDOS
GNU ARCH
Parte do projeto GNU. Licena: GNU GPL Autor original: Thomas Lord Desenvolvedor: Andy Tai Verso estvel: 1.3.5 / 2006-07-20. Criticado pela quantidade de comandos.
54
REPOSITRIOS DISTRIBUDOS
MONOTONE
Desenvolvedores: Nathaniel Smith, Graydon Hoare Escrito em: C++ Pode importar projetos CVS. Fcil de aprender. Menos popular do que Bazaar, Git e Mercurial.
55
REPOSITRIOS DISTRIBUDOS
DARCS
Desenvolvido por: David Roundy Escrito em: Inicialmente C++, depois Haskell Desenvolvido para substituir os tradicionais CVS e SVN
56
REPOSITRIOS DISTRIBUDOS
REPOSITRIOS DISTRIBUDOS
58
REPOSITRIOS DISTRIBUDOS
59
REPOSITRIOS DISTRIBUDOS
60
DVIDAS ?
61
BIBLIOGRAFIA
MOLINARI, Leonardo. Gerncia de Configurao - Tcnicas e Prticas no Desenvolvimento do Software. Florianpolis: Visual Books, 2007. 85-7502-210-5 MIKKELSEN, Tim, PHERIGO, Suzanne. Parctical Software Configuration Management: The Latenight Developer's Handbook. Upper Saddle River, NJ, EUA: Prentice Hall PTR, 1997. 0-13-240854-6 Cristiano Caetano. CVS: Controle de Verses e Desenvolvimento Colaborativo de Software. ed. Novatec, 2004.
62
BIBLIOGRAFIA
http://www.gnu.org/software/gnu-arch/tutorial/arch.html
Subversion Home Page: http://subversion.tigris.org/ Wikipedia (CVS): http://en.wikipedia.org/wiki/Cvs Wikipedia (RCS): http://en.wikipedia.org/wiki/Revision_Control_System Wikipedia (Version Control System): http://en.wikipedia.org/wiki/Version_control_system Configuration Management (SCM) Systems http://www.dwheeler.com/essays/scm.html
63