Sei sulla pagina 1di 16

Sistema de controle de verso 1

Sistema de controle de verso


Para mais informaes sobre o sistema de controle de revises
utilizado na Wikipdia, veja Ajuda:Histrico de revises
Um sistema de controle de verso (ou versionamento), VCS (do ingls
version control system) ou ainda SCM (do ingls source code management)
na funo prtica da Cincia da Computao e da Engenharia de Software,
um software com a finalidade de gerenciar diferentes verses no
desenvolvimento de um documento qualquer. Esses sistemas so comumente
utilizados no desenvolvimento de software para controlar as diferentes
verses histrico e desenvolvimento dos cdigos-fontes e tambm da
documentao.

Esse tipo de sistema muito presente em empresas e instituies de


tecnologia e desenvolvimento de software. tambm muito comum no
desenvolvimento de software livre. til, em diversos aspectos, tanto para
projetos pessoais pequenos e simples como tambm para grandes projetos
comerciais.
Entre os mais comuns encontram-se as solues livres: CVS, Mercurial, Git e
SVN; e as comerciais: SourceSafe, PVCS (Serena) e ClearCase. O
desenvolvimento de software livre prefere o SVN que vem substituindo o
clssico CVS. Muitas empresas tambm adotam o SVN, embora algumas
empresas prefiram uma soluo comercial, optando pelo ClearCase (da IBM)
ou SourceSafe (da Microsoft). Optar por uma soluo comercial geralmente
est relacionada garantia, pois as solues livres no se responsabilizam por
Exemplo da visualizao do histrico de
erros no software e perdas de informaes[1], apesar das solues livres um projeto usando um sistema de
poderem ter melhor desempenho e segurana que as comerciais. As solues controle de verses
comerciais apesar de supostas garantias adicionais no garantem o sucesso da
implementao nem indenizam por qualquer tipo de erro mesmo que comprovadamente advindo do software.

A eficcia do controle de verso de software comprovada por fazer parte das exigncias para melhorias do processo
de desenvolvimento de certificaes tais como CMMI e SPICE.[2]

Principais vantagens
As principais vantagens de se utilizar um sistema de controle de verso para rastrear as alteraes feitas durante o
desenvolvimento de software ou o desenvolvimento de um documento de texto qualquer so:
Controle do histrico: facilidade em desfazer e possibilidade de analisar o histrico do desenvolvimento, como
tambm facilidade no resgate de verses mais antigas e estveis. A maioria das implementaes permitem
analisar as alteraes com detalhes, desde a primeira verso at a ltima.
Trabalho em equipe: um sistema de controle de verso permite que diversas pessoas trabalhem sobre o mesmo
conjunto de documentos ao mesmo tempo e minimiza o desgaste provocado por problemas com conflitos de
edies. possvel que a implementao tambm tenha um controle sofisticado de acesso para cada usurio ou
grupo de usurios.
Marcao e resgate de verses estveis: a maioria dos sistemas permite marcar onde que o documento estava
com uma verso estvel, podendo ser facilmente resgatado no futuro.
Sistema de controle de verso 2

Ramificao de projeto: a maioria das implementaes possibilita a diviso do projeto em vrias linhas de
desenvolvimento, que podem ser trabalhadas paralelamente, sem que uma interfira na outra.

Funcionamento bsico
Cada implementao possui sua particularidade, mas a maioria deles compartilham alguns conceitos bsicos. Nota:
Apesar disso, possvel que algum sistema especfico funcione de maneira totalmente diferente da explicada neste captulo.

A maior parte das informaes - com todo o histrico - ficam guardadas num repositrio (repository em ingls),
num servidor qualquer. Geralmente o acesso feito por um cliente pela rede (via socket) e pode ser feito localmente
quando o cliente est na mesma mquina do servidor.
O repositrio armazena a informao - um conjunto de documentos - de modo persistente num sistema de arquivos
ou num banco de dados qualquer. possvel que o armazenamento seja feito em outros dispositivos capazes de
"eternizar" e resgatar facilmente a informao.
Cada servidor pode ter vrios sistemas de controle de verso e cada sistema pode ter diversos repositrios,
limitando-se na capacidade de gerenciamento do software e tambm no limite fsico do hardware. Geralmente um
repositrio possui um endereo lgico que permite a conexo do cliente. Esse endereo pode ser um conjunto
IP/porta, uma URL, um caminho do sistema de arquivos etc.
Cada desenvolvedor possui em sua mquina uma cpia local (tambm chamada de working copy em ingls) somente
da ltima verso de cada documento. Essa cpia local geralmente feita num sistema de arquivos simples (FAT,
NTFS, ext3 etc). A cada alterao relevante do desenvolvedor necessrio "atualizar" as informaes do servidor
submetendo (commit em ingls) as alteraes. O servidor ento guarda a nova alterao junto de todo o histrico
mais antigo. Se o desenvolvedor quer atualizar sua cpia local necessrio atualizar as informaes locais, e para
isso necessrio baixar novidades do servidor (ou fazer update em ingls).

fig. a - Esquema geral fsico. "Sistema" representa o sistema de fig. b - Esquema geral lgico.
controle de verso do lado Servidor (server-side). "Software
Cliente" representa o sistema de controle de verso do lado
Cliente (client-side).
Sistema de controle de verso 3

Envio e resgate de verses


A principal funo do sistema de controle de verso armazenar todo o histrico de desenvolvimento do
documento, desde o primeiro envio at sua ltima verso. Isso permite que seja possvel resgatar uma determinada
verso de qualquer data mais antiga, evitando desperdcio de tempo no desenvolvimento para desfazer alteraes
quando se toma algum rumo equivocado.
O envio das alteraes feito a gosto do desenvolvedor (do lado do cliente), quando ele desejar; mas, para minimizar
conflitos de verses, facilitar no desfazer de alteraes e tambm no controle do histrico, recomenda-se que uma
alterao seja enviada cada vez que o software estiver minimamente estvel, i. e., a cada nova parte (uma funo, e.
g.) ou a cada alterao relevante que esteja funcionando corretamente. No recomendvel o envio quando o
documento como um todo possa causar alguma dificuldade no desenvolvimento de outro colaborador, como por
exemplo um cdigo no compilado ou com algum defeito que comprometa a execuo geral.
Cada "envio" na maioria dos sistemas chamado de "commit" (s vezes "submit"), ou seja, efetivar as alteraes no
(ou "submeter" ao) repositrio. Cada envio produz uma nova verso no repositrio e armazenado como "uma
fotografia" do momento.

'fig. c - Em sistemas no estilo do CVS, cada documento tem sua verso


controlada individualmente. Assim, necessrio adicionar marcas ('tags' - em fig. d - J em sistemas no estilo do SVN, o controle de verso feito por cada
ingls) para que se tenha uma "fotografia" de determinado momento. Ou seja, o envio ao servidor. Ou seja, h uma verso global para todos os documentos. Se
versionamento do conjunto fica a cargo do usurio pois a numerao gerada voc enviar 4 verses do arquivo B enquanto voc enviou apenas 2 verses do
pelo sistema de controle de verso no fornece "alinhamento" aos documentos. A, ambos esto na verso final que a 4. Perceba que toda "fotografia" de
qualquer momento ser sempre uma coluna alinhada como mostra a figura.

Se o arquivo fosse armazenado diretamente num sistema de arquivos simples, no haveria histrico, a menos que
isso fosse feito manualmente atravs de cpias completas dos documentos numa organizao (que pode ou no
envolver pastas) que depender do desenvolvedor.
Sistema de controle de verso 4

fig e - Num sistema de arquivos simples, sem controle de verses, seria necessrio fazer cpias manualmente
para manter as verses anteriores, o que poderia se tornar muito confuso com o tempo conforme o nmero de
verses aumentam.

Histrico de envio
Muitas vezes, possvel acrescentar comentrios no envio das alteraes, o que facilita tambm uma possvel anlise
do histrico. Geralmente o relatrio com as verses e os comentrios de cada envio so chamados de "histrico" ou
"log", e uma anlise deste relatrio pode facilitar em muitos aspectos no desenvolvimento do produto.
A documentao do CVS, SVN e outros, recomendam que o comentrio do histrico seja amplo, geral e abstrato, ou
seja, que no se limite explicao da mudana do cdigo em si, mas sim sobre o que foi mudado ou acrescentado
no conceito ou no funcionamento como um todo. A mudana do cdigo pode ser analisada atravs de uma diferena
(ou diff) entre duas verses, portanto o comentrio seria til apenas para explicar a mudana de forma lgica.
Exemplo prtico dessa recomendao: utilize "acrscimo de uma condio que verifica se existe saldo na conta para
no permitir que seja sacado sem saldo" ao invs de um comentrio contendo o prprio cdigo modificado como:

"+ if (!this.haSaldoNaConta()) { this.proibeSaque() }"

Trabalho em equipe
Sistemas de controle de verso tambm so convenientes quando diversos desenvolvedores trabalham sobre o
mesmo projeto simultaneamente, resolvendo eventuais conflitos entre as alteraes. A maioria dos sistemas possui
diversos recursos como ramificao e mesclagem de histrico para auxiliar nessas tarefas.
Para que seja possvel o trabalho em equipe, o sistema de controle de verso pode possuir um mini sistema de
controle de usurios embutido ou pode utilizar algum outro sistema de autenticao separado. Assim, possvel
identificar cada usurio, que geralmente fica protegido por uma senha pessoal, ou alguma senha criada pelo
administrador de sistemas.
No CVS, por exemplo, possvel escolher o mtodo de autenticao a ser usado, dentre vrias opes. No caso do
SVN, por exemplo, se ele estiver rodando via Apache, o controle de usurios poder ser feito pela autenticao
padro do Apache. Embora menos comum, possvel tambm configurar o SVN para utilizar o usurio do sistema,
como os usurios do Linux ou do Windows.
Sistema de controle de verso 5

Mesclagens Otimistas vs Edies Exclusivas


Com relao ao trabalho em equipe num sistema de controle de verso, h basicamente dois mtodos (ou filosofias)
relevantes de edio:
"Optimistic Merges" ("Mesclagens Otimistas") ou "Branch and Merge" ("Ramificando e Mesclando") ou ainda
"Copia-modifica-resolve"[2]
"Exclusive Lock" ("Tranca exclusiva", "Edies exclusivas") ou ainda "Trava-modifica-destrava"[2])
Nota: a ausncia de um sistema de controle de verso, ou seja, o trabalho direto num sistema de arquivos comum
equivalente ao "Exclusive Lock" nesse aspecto. H tambm alguns sistemas, como o MediaWiki (pelo menos at a
verso 1.8) e. g., que permitem a edio simultnea (sem trancar ou bloquear o outro) mas que no gerenciam
automaticamente os conflitos, tendo que ser feitos manualmente sempre.
A filosofia "Optimistic Merges" ("Mesclagens Otimistas"), um mtodo de conflitos otimista que geralmente
padro na maioria dos sistemas abertos, como o SVN e CVS. Essa filosofia presume que os conflitos de edies so
to pequenos e pontuais se houver relativa atualizao frequente do repositrio por ambos que a grande
maioria das fuses podem ser feitas de forma automtica, restando para fuses manuais somente casos em que a
alterao for feita num mesmo ponto de um mesmo arquivo. A prtica demonstra que essa viso , na verdade,
tambm a mais realista. O captulo #"Demonstrao de Mesclagens Otimistas" demonstra como esse mtodo
funciona na prtica.
Em contrapartida, numa viso mais pessimista (ou "conservadora"), pode-se afirmar que, se houver muitas
modificaes simultneas sem intervalos pequenos de atualizao mtua num mesmo arquivo, possvel que a fuso
manual se torne to complicada a ponto de desperdiar parcialmente ou totalmente o trabalho de um ou de outro
editor usurio do sistema. por esse principal motivo que alguns sistemas, geralmente as solues comerciais como
o ClearCase e o SourceSafe, adotam outro mtodo de trabalho como padro: o "Exclusive Lock" ("Tranca exclusiva"
ou "Edies exclusivas"). Esse mtodo consiste basicamente em deixar apenas um usurio editar um arquivo de cada
vez, sendo que este fica bloqueado enquanto no houver um reenvio (atualizao) do editor ao servidor. possvel
mesclagem neste mtodo, mas apenas aps a liberao (ou desbloqueio) do editor. O captulo #"Edies Exclusivas"
ou ausncia de um sistema de controle de verso demonstra como esse mtodo funciona na prtica.
Sistema de controle de verso 6

Demonstrao de "Mesclagens Otimistas" passo-a-passo


A seguir, demonstrado em alguns passos, numa edio fictcia, como funciona o mtodo de "Mesclagens
Otimistas". Cada animal personificado a seguir nas figuras - Pig, Dog e Panda - representam um programador
independente (com ou sem comunicao entre si), que podem estar em locais fsicos separados.

1 passo: atualizando

fig f - todos atualizam sua verso local. (geralmente comando update)

2 passo: desenvolvendo

fig g - todos trabalham simultaneamente, perceba que o Dog e o Panda esto modificando o mesmo
documento porm em locais diferentes (linhas distintas).
Sistema de controle de verso 7

3 passo: submetendo

fig h - Pig e Dog terminaram o trabalho e submetem (commit) as alteraes ao Servidor atravs do software
Cliente. Perceba que o Panda ainda no terminou o trabalho.

4 passo: necessita atualizao

fig i - Panda tenta enviar o arquivo ao Servidor, mas no consegue porque o


Cliente alerta que h uma verso mais atualizada. No caso, a verso do
documento C que Dog submetera anteriormente.
Sistema de controle de verso 8

5 passo: baixando atualizao e mesclando

fig j - Nesse caso Panda precisa atualizar (update) sua verso local antes de
submeter as alteraes. Geralmente o software Cliente faz uma cpia de
segurana do arquivo local antes de tentar mesclar (merge) as diferenas. Nesse
caso, como na maioria dos casos reais, Panda e Dog modificaram locais
diferentes no arquivo e o Cliente conseguiu mesclar as diferenas com sucesso.
Nesse caso, ele inclui na verso local tanto a alterao de Dog quanto a de Panda.
A maioria dos sistemas analisa as diferenas por linha alterada, mas possvel
que esse bloco seja por pargrafo ou at por letras. Quando a mesma regio do
documento modificada acontece o conflito e ele precisa ser resolvido
manualmente; esse caso ser melhor explicado depois.
Sistema de controle de verso 9

6 e ltimo passo: submetendo a verso final

fig k - Depois de mesclado com sucesso, Panda testa para ver se realmente est
tudo OK e simplesmente reenvia (commit) ao Servidor atravs do Cliente.

"Edies Exclusivas" ou ausncia de um sistema de controle de verso


No mtodo mais conservador, ou quando se compartilha o mesmo projeto numa rede diretamente num sistema de
arquivos simples, sem um sistema de controle de verso, alguns arquivos ficam bloqueados para escrita enquanto
esto sendo utilizados. Ainda, um agravante na ausncia do sistema de controle de verso, que o fluxo de
informaes pela rede alto porque a cada modificao substancial necessrio reenviar o documento todo e a
chance de corromper arquivos tambm aumenta; o que no acontece com um sistema de controle de verso, pois
cada desenvolvedor possui uma cpia local do projeto, trabalhando localmente, baixando as atualizaes e enviando
as alteraes.
Sistema de controle de verso 10

fig l - (compare com a fig. f) Perceba a dificuldade em trabalhar em equipe utilizando um compartilhamento simples de arquivos pela
rede. No exemplo da figura, o desenvolvedor Panda est ocioso enquanto Dog no terminar de trabalhar com o documento C.
Diferentemente, quando se utiliza um sistema de controle de verses cada desenvolvedor pode trabalhar tranquilamente em sua cpia
local e o sistema fica encarregado de mesclar o que for necessrio de acordo com as mudanas simultneas.

Mesclagem no mtodo "Edies Exclusivas"


A mesclagem no mtodo "Edies Exclusivas" ainda possvel desta forma:
1. usurio A d checkout (ou update).
2. B tenta dar checkout e no consegue porque A est bloqueado.
3. B d checkout no reservado (sem bloquear).
4. B tenta dar commit (ou checkin), mas no consegue, B fica aguardando A liberar o lock (bloqueio).
5. A d commit ou release, liberando a trava.
6. B d um update & merge (que j cria um lock para ele).
7. B d commit com a verso mesclada.

Bloqueio de arquivo
Alguns sistemas permitem o bloqueio voluntrio de qualquer arquivo. Alguns sistemas que suportam so o CVS e
SVN (a partir da verso 1.2.0), por exemplo.
A opo de bloquear um arquivo muito til nos seguintes casos:
Quando h trabalho simultneo num mesmo arquivo de difcil ou impossvel mesclagem.
Ao editar um arquivo binrio (que no permite a mesclagem), como arquivos compactados, bibliotecas, imagens
etc. No muito recomendvel trabalhar com arquivos binrios num sistema de arquivos, porm muitas vezes
til deixar arquivos binrios junto do cdigo-fonte ou da documentao, principalmente em casos em que difcil
gerar esses arquivos, como imagens, algumas bibliotecas etc.
Sistema de controle de verso 11

Quando h muita dificuldade na comunicao entre os desenvolvedores e conflitos freqentes que desperdiam
muito tempo manual de mesclagem.

Comparao de verses
possvel, na grande maioria dos sistemas de controle de verso (e quando o tipo de arquivo permite isso),
comparar (tambm chamado de diff ou diferena) quaisquer verses entre si, enviadas a qualquer tempo. Saber
exatamente o que foi acrescentado, modificado ou excludo em qualquer ponto dos documentos. Isso permite que
seja feito uma anlise minuciosa das alteraes desde a criao do projeto at seu estado atual.

Analise esta figura e veja um exemplo prtico real de uma diferena entre duas verses: (tambm neste link: [3]). Essa
diferena feita pelo software MediaWiki que exibe a diferena com cores diferentes e smbolos para facilitar o
entendimento. A cor amarela indica que a linha foi retirada, a cor verde que a linha foi colocada e a cor vermelha indica
qual palavra ou trecho foi modificado dentro da linha. O smbolo (+) indica que foi acrescentado e o (-) que foi retirado.

Conflitos
chamado de conflito de edio a situao em que dois ou mais usurios modificam o mesmo documento no mesmo
intervalo de tempo entre o envio de uma nova verso ao sistema. A chance de conflitos aumentam quando aumentam
o nmero de usurios utilizando o mesmo conjunto de documentos. O envio de alteraes muito grandes podem
tambm aumentar a chance de conflito.

Mesclagem
A mesclagem (ou merge em ingls) consiste na aglutinao (ou fuso) automtica de verses atravs da comparao
entre elas, quando h um conflito de edies simples.
Quando um conflito direto, ou seja, no mesmo ponto do mesmo documento e o sistema no conseguiu resolver o
conflito automaticamente, a mesclagem pode ser feita manualmente. Algumas implementaes como o MediaWiki
Sistema de controle de verso 12

(at a verso 1.8 pelo menos) no possuem o sistema de "mesclagem", portanto quando h qualquer conflito, mesmo
os mais simples, necessrio resolv-lo manualmente como descreve a seo "Resoluo manual de conflitos".

Resoluo manual de conflitos


Quando dois ou mais desenvolvedores modificam uma mesma regio num documento necessrio resolver o
conflito "manualmente". O software de Cliente far uma cpia de segurana da sua alterao para que no haja
chance de voc perd-la e depois mostrar o local de conflito. O software geralmente mostra os conflitos na tela e o
desenvolvedor escolhe qual verso manter. Geralmente quando acontece esse tipo de coisa porque houve falha na
organizao de diviso do trabalho e provavelmente uma alterao semelhante foi produzida na mesma regio.

Ramificaes e marcaes
Num sistema moderno de controle de verses possvel quebrar a linha do desenvolvimento em mais de um
caminho. Isso pode ser chamado de ramificao (ramo), braos ou em ingls branches. Isso muito til quando se
conquista uma verso estvel dos documentos (ou software) ou quando se quer fazer uma tentativa "no
convencional" fora do ramo principal.

Otimizao de espao e velocidade


Geralmente um sistema assim mantm armazenado apenas a primeira verso e as diferenas entre elas, at formar a
ltima, com o principal objetivo de economizar espao. claro que tambm existem outras otimizaes que
guardam a verso final ou verses recentes para que algumas operaes possam ser feitas de modo mais rpido
(utilizando uma espcie de cache). possvel tambm, dependendo do sistema e da configurao, que seja
compactado algumas partes do repositrio muito antigas que no esto sendo utilizadas de modo a salvar espao.
Os sistemas so otimizados para trabalhar com arquivos texto e muitas vezes no se do muito bem com arquivos
binrios. Sistemas mais modernos trabalham melhor com esse segundo tipo de arquivo, mas ainda assim de forma
pouco satisfatria: tanto pelo alto consumo de espao quanto pela dificuldade de se fazer comparao entre uma
verso e outra.
Sistemas como o CVS e o SVN recomendam que documentos textos que necessitam de estilos, formataes
especiais, tabelas e figuras, tais como o arquivo DOC do Microsoft Word que so em binrio, sejam gravados em
algum formato texto como o Rich Text Format (RTF), HTML ou XML (com quebras de linha entre uma tag e
outra[4]) porque internamente ele guarda a informao em texto. Um texto desse tipo no fica to otimizado quanto
um texto simples, mas ainda assim fica melhor que um arquivo binrio.

Integrao com outros softwares


Os sistemas de controle de verses mais flexveis permitem que seja possvel integr-los a outros softwares. A
integrao mais comum em IDE (ambientes de desenvolvimento) atravs de plugins. Alguns ambientes que
suportam a integrao de alguns sistemas so: IntelliJ IDEA, Eclipse, NetBeans e Visual Studio. O TortoiseSVN, o
TortoiseCVS e o TortoiseHg, clientes do SVN, do CVS e do Mercurial, respectivamente, funcionam sobre o
Windows Explorer.

Vocabulrio comum
Atualizao / Update - Atualiza na cpia local as novidades do Servidor, provavelmente as mudanas enviadas
por outro desenvolvedor.
Baixar / Check-out ou checkout - Quando no existe cpia local e necessrio baixar todo o projeto do servidor.
Nesse processo guardado algum tipo de meta-dados (geralmente em pasta oculta) junto dos arquivos baixados.
Sistema de controle de verso 13

Conflito / Conflict - a alterao simultnea (entre um update e um commit) de um mesmo documento por
usurios diferentes.
Cpia local / Working copy ou working area - geralmente uma pasta no sistema operacional do desenvolvedor
(do lado Cliente) que mantm a cpia da ltima verso do projeto. atravs da cpia local que o Cliente compara
com a ltima verso do Servidor e sabe exatamente o que foi modificado.
Efetivar ou submeter / Commit, submit ou check-in - Enviar as alteraes da cpia local ao Servidor atravs do
Cliente.
Exportar / Export - Semelhante ao checkout, mas no cria meta-dados junto da informao baixada. Esse
processo utilizado para gerar uma verso "distribuvel" e impede (por no conter os meta-dados) que o
desenvolvimento seja feito sobre ele.
Importar / Import - o processo que envia uma rvore de diretrios ainda no controlada (sem meta-dados) para
o repositrio pela primeira vez.
Marcao / Tag ou release - dar um nome a um determinado "momento" do repositrio, ou seja, como uma
"fotografia" de determinada data. Alguns sistemas, como o SVN, no diferenciam entre "marcao" e
"ramificao", pois possvel tratar uma ramificao com o conceito ou finalidade de marcao.
Mesclagem / Merge ou integration - Permite que mais de um utilizador modifique um mesmo documento ao
mesmo tempo, comparando as diferenas e mesclando mantendo as duas alteraes (se possvel). A mesclagem
geralmente feita localmente (lado Cliente) na atualizao de um documento quando h uma verso no Servidor
mais recente que a sua.
Mesclagem inversa / Reverse integration - quando um brao mesclado linha principal.
Modificao, diferena ou mudana (Change ou diff.) - Representa a diferena entre uma verso e outra de um
mesmo documento.
Raiz, linha principal ou brao principal / Head, trunk, mainline - o caminho de revises que no se quebrou
em um brao.
Ramificao ou brao / Branch - Quando a linha de desenvolvimento precisa ser dividida em duas ou mais.
Repositrio / Repository - local no Sistema onde fica armazenado todas as verses, desde a primeira at a ltima.
Cada sistema geralmente pode ter mais de um repositrio.
Resoluo de conflito / Conflict resolve ou Solve - Quando os desenvolvedores precisam analisar o que entrou
em conflito e escolher qual alterao far parte da verso final.
Reviso ou verso / Revision ou version - Representa um determinado "momento" (uma "fotografia") de um
repositrio ou documento.
Travar / Lock - Em alguns sistemas possvel bloquear um arquivo e ningum pode alter-lo nesse momento.
Isso pouco usado e pouco recomendado pois impede o uso simultneo do mesmo arquivo por mais de um
desenvolvedor, mas pode ser bastante til com arquivos binrios e/ou difceis ou impossveis de serem mesclados.
ltima verso / last revision - a ltima verso enviada ao sistema no brao principal.
Verso atualizada / Up-to-date - quando a verso local idntica que est no servidor. Quando algum
submete um documento (que voc tambm est trabalhando) antes de voc, o sistema no permite que voc envie
a sua verso enquanto voc no deixar sua verso local atualizada (up-to-date).
Verso estvel / Stable version - Chama-se de "verso estvel" uma determinada verso do sistema que est
compilando normalmente e no possui nenhuma anomalia grave.
Verso instvel / Unstable version - Chama-se de "verso instvel" uma verso do sistema que no est
compilando ou que possui alguma anomalia bastante visvel e geralmente grave.
Sistema de controle de verso 14

Lista de sistemas de controle de verso


Segue uma lista dos mais conhecidos:
Solues comerciais
Microsoft Visual SourceSafe (VSS) - produto da Microsoft para controle de verso, integrado a muitas IDEs da
Microsoft.
Rational ClearCase - produto da IBM para controle de verso.
Borland StarTeam - produto da Borland para controle de verso e de equipe.
PVCS - Produto campeo da Serena do Brasil, controle de verso, possui tambm produtos que tem incorporada
esta funcionalidade como o Dimension CM.
Solues livres
Concurrent Version System (CVS) - software livre clssico e bem testado.
Subversion (SVN) - alternativa tambm livre e mais eficiente que o CVS. Muitas fundaes no-governamentais
sem fins lucrativos ligadas ao desenvolvimento de software internacionalmente reconhecidas como a Apache
Foundation j adotaram o Subversion como padro.
Git - Software para controle de verso distribudo com foco na velocidade.[5].
MediaWiki - software livre que possui um sistema integrado de controle de verses. Sites com os projetos da
Wikimedia, tal como a Wikipdia mantm o sistema MediaWiki para o controle das verses dos documentos.
Esse sistema permite o trabalho simultneo de milhares de voluntrios.
GNU CSSC
Revision Control System (RCS)
Bazaar[6]
Darcs
Mercurial - SCM usado para gerenciar o cdigo fonte do Python
Monotone
SVK
Para uma lista completa com comparaes visite Lista de sistemas de controle de verso.

Notas e referncias
[1] Geralmente as licenas consideradas "livres" explicitam que o autor no se responsabiliza e no h nenhum tipo de garantia por qualquer
prejuzo que se tenha no uso. A licena GNU General Public License, por exemplo, bem clara: "Este programa distribudo na expectativa
de ser til, mas SEM QUALQUER GARANTIA; sem mesmo a garantia implcita de COMERCIALIZAO ou de ADEQUAO A
QUALQUER PROPSITO EM PARTICULAR. (...)"
[2] Conceitos Bsicos de Controle de Verso de Software, por Andr Felipe Dias publicado por Pronus Engenharia de Software (04/08/2006)
(http:/ / www. pronus. eng. br/ artigos_tutoriais/ gerencia_configuracao/ controle_versao. php?pagNum=0)
[3] http:/ / pt. wikipedia. org/ w/ index. php?title=Sistema_de_controle_de_verso& diff=3305934& oldid=3305901
[4] A quebra de linha num HTML ou XML altamente recomendada porque geralmente um sistema de controle de verso faz a anlise das
diferenas linha-por-linha e no caractere-por-caractere. Assim sendo, se o XML possuir uma nica linha com todas as tags, por exemplo,
uma diferena entre uma verso e outra seria a da linha toda sempre, mesmo que a alterao tenha sido num ponto especfico.
[5] Inicialmente desenvolvido por Linus Torvalds, criador do Linux, mantm o controle de verses do ncleo Linux. O grande diferencial a alta
velocidade. Ver http:/ / git. or. cz/
[6] Ver http:/ / bazaar-vcs. org
Sistema de controle de verso 15

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. [S.l.]:ed. Novatec,
2004.

Ligaes externas
Manual Completo do Subversion (SVN) (http://svnbook.red-bean.com/nightly/pt_BR/index.html)
Site oficial do Subversion (SVN) (http://subversion.tigris.org/)
WinCVS (CVS para Windows) (http://www.wincvs.org/)
Referncia Debian Captulo 12 - Sistemas de Controle de Verso (Resumo de alguns comandos do CVS) (http://
www.debian.org/doc/manuals/reference/ch-vcs.pt-br.html)
Fontes e Editores da Pgina 16

Fontes e Editores da Pgina


Sistema de controle de verso Fonte: http://pt.wikipedia.org/w/index.php?oldid=33857163 Contribuidores: Ce3po, Credmann, Daemorris, Eduardoferreira, FML, Ferbigode, Gaf.arq, Girino,
Giro720, Hermgenes Teixeira Pinto Filho, JLCA, JSSX, Jbribeiro1, Joaopaulo1511, JotaCartas, Juliano, LeonardoG, Llslucas, Lus Felipe Braga, OsvaldoGago, Panthera Tigris, Pedropaulovc,
Peguca, Profvalente, Riconfire, Ruy Pugliesi, 34 edies annimas

Fontes, Licenas e Editores da Imagem


File:Revision controlled project visualization-2010-24-02.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Revision_controlled_project_visualization-2010-24-02.svg Licena:
Creative Commons Attribution-ShareAlike 3.0 Unported Contribuidores: Revision_controlled_project_visualization.svg: *Subversion_project_visualization.svg: Traced by User:Stannered,
original by en:User:Sami Kerola derivative work: Moxfyre (talk) derivative work: Echion2 (talk)
Imagem:Sistema de controle de verso.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Sistema_de_controle_de_verso.svg Licena: desconhecido Contribuidores: FML,
Lmbuga
Imagem:Esquema lgico do sistema de controle de verses.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Esquema_lgico_do_sistema_de_controle_de_verses.svg Licena:
desconhecido Contribuidores: FML, Lmbuga
Imagem:Estilo CVS.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Estilo_CVS.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Estilo SVN.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Estilo_SVN.svg Licena: desconhecido Contribuidores: AVRS, FML, Lmbuga
Imagem:Sistema de arquivos simples.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Sistema_de_arquivos_simples.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Equipe A.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Equipe_A.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Equipe B.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Equipe_B.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Equipe C.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Equipe_C.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Equipe D.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Equipe_D.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Equipe E.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Equipe_E.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Equipe F.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Equipe_F.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Equipe.svg Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Equipe.svg Licena: desconhecido Contribuidores: FML, Lmbuga
Imagem:Exemplo-de-diff.png Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Exemplo-de-diff.png Licena: GNU General Public License Contribuidores: 555, FML, Rd232

Licena
Creative Commons Attribution-Share Alike 3.0 Unported
//creativecommons.org/licenses/by-sa/3.0/

Potrebbero piacerti anche