Академический Документы
Профессиональный Документы
Культура Документы
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
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:
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
1 passo: atualizando
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.
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
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.
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.
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".
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.
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
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
Licena
Creative Commons Attribution-Share Alike 3.0 Unported
//creativecommons.org/licenses/by-sa/3.0/