sistema de controle de versão

16
Exemplo da visualização do histórico de um projeto usando um sistema de controle de versões Sistema de controle de versão Origem: Wikipédia, a enciclopédia livre. Para mais informações sobre o sistema de controle de revisões utilizado na Wikipédia, veja Ajuda:Histórico de revisões Um sistema de controle de versão (ou versionamento), VCS (do inglês version control system) ou ainda SCM (do inglês source code management ) na função prática da Ciência da Computação e da Engenharia de Software, é um software com a finalidade de gerenciar diferentes versões no desenvolvimento de um documento qualquer. Esses sistemas são comumente utilizados no desenvolvimento de software para controlar as diferentes versões — histórico e desenvolvimento — dos códigos-fontes e também da documentação. Esse tipo de sistema é muito presente em empresas e instituições de tecnologia e desenvolvimento de software. É também muito comum no desenvolvimento de software livre. É útil, em diversos aspectos, tanto para projetos pessoais pequenos e simples como também para grandes projetos comerciais. Entre os mais comuns encontram-se as soluções 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 clássico CVS. Muitas empresas também adotam o SVN, embora algumas empresas prefiram uma solução comercial, optando pelo ClearCase (da IBM) ou SourceSafe (da Microsoft). Optar por uma solução comercial geralmente está relacionada à garantia, pois as soluções livres não se responsabilizam por erros no software e perdas de informações , apesar das soluções livres poderem ter melhor desempenho e segurança que as comerciais. As soluções comerciais apesar de supostas garantias adicionais não garantem o sucesso da implementação nem indenizam por qualquer tipo de erro mesmo que comprovadamente advindo do software. A eficácia do controle de versão de software é comprovada por fazer parte das exigências para melhorias do processo de desenvolvimento de certificações tais como CMMI e SPICE. Índice 1 Principais vantagens 2 Funcionamento básico 2.1 Envio e resgate de versões 2.2 Histórico de envio 1 2

Upload: rogerio-vieira

Post on 10-Nov-2015

11 views

Category:

Documents


3 download

DESCRIPTION

Sistema de controle de versões

TRANSCRIPT

  • Exemplo da visualizao do histrico

    de um projeto usando um sistema de

    controle de verses

    Sistema de controle de verso

    Origem: Wikipdia, a enciclopdia livre.

    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 (doingls version control system) ou ainda SCM (do ingls sourcecode management) na funo prtica da Cincia da Computao eda Engenharia de Software, um software com a finalidade degerenciar diferentes verses no desenvolvimento de um documentoqualquer. Esses sistemas so comumente utilizados nodesenvolvimento de software para controlar as diferentes verses histrico e desenvolvimento dos cdigos-fontes e tambm dadocumentao.

    Esse tipo de sistema muito presente em empresas e instituies detecnologia e desenvolvimento de software. tambm muito comumno desenvolvimento de software livre. til, em diversos aspectos,tanto para projetos pessoais pequenos e simples como tambm paragrandes 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 SVNque vem substituindo o clssico CVS. Muitas empresas tambmadotam o SVN, embora algumas empresas prefiram uma soluocomercial, optando pelo ClearCase (da IBM) ou SourceSafe (daMicrosoft). Optar por uma soluo comercial geralmente estrelacionada garantia, pois as solues livres no se responsabilizampor erros no software e perdas de informaes , apesar dassolues livres poderem ter melhor desempenho e segurana que ascomerciais. As solues comerciais apesar de supostas garantiasadicionais no garantem o sucesso da implementao nem indenizampor qualquer tipo de erro mesmo que comprovadamente advindo dosoftware.

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

    ndice

    1 Principais vantagens

    2 Funcionamento bsico

    2.1 Envio e resgate de verses

    2.2 Histrico de envio

    1

    2

  • 2.3 Trabalho em equipe2.3.1 Mesclagens Otimistas vs Edies Exclusivas

    2.3.2 Demonstrao de "Mesclagens Otimistas" passo-a-passo

    2.3.2.1 1 passo: atualizando

    2.3.2.2 2 passo: desenvolvendo

    2.3.2.3 3 passo: submetendo

    2.3.2.4 4 passo: necessita atualizao

    2.3.2.5 5 passo: baixando atualizao e mesclando

    2.3.2.6 6 e ltimo passo: submetendo a verso final

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

    2.3.3.1 Mesclagem no mtodo "Edies Exclusivas"

    2.3.4 Bloqueio de arquivo2.4 Comparao de verses

    2.5 Conflitos

    2.5.1 Mesclagem

    2.5.2 Resoluo manual de conflitos2.6 Ramificaes e marcaes2.7 Otimizao de espao e velocidade

    3 Integrao com outros softwares4 Vocabulrio comum

    5 Lista de sistemas de controle de verso6 Notas e referncias

    7 Bibliografia8 Ver tambm

    9 Ligaes externas

    Principais vantagens

    As principais vantagens de se utilizar um sistema de controle de verso para rastrear as alteraes feitasdurante 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 dasimplementaes 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 sobreo mesmo conjunto de documentos ao mesmo tempo e minimiza o desgaste provocado por problemascom 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.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 emingls), num servidor qualquer. Geralmente o acesso feito por um cliente pela rede (via socket) e pode serfeito localmente quando o cliente est na mesma mquina do servidor.

    O repositrio armazena a informao - um conjunto de documentos - de modo persistente num sistema dearquivos ou num banco de dados qualquer. possvel que o armazenamento seja feito em outros dispositivoscapazes 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. Geralmenteum repositrio possui um endereo lgico que permite a conexo do cliente. Esse endereo pode ser umconjunto 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 arquivossimples (FAT, NTFS, ext3 etc). A cada alterao relevante do desenvolvedor necessrio "atualizar" asinformaes do servidor submetendo (commit em ingls) as alteraes. O servidor ento guarda a novaalterao junto de todo o histrico mais antigo. Se o desenvolvedor quer atualizar sua cpia local necessrioatualizar as informaes locais, e para isso necessrio baixar novidades do servidor (ou fazer update emingls).

    fig. a - Esquema geral fsico. "Sistema" representa

    o sistema de controle de verso do lado Servidor

    (server-side). "Software Cliente" representa o

    sistema de controle de verso do lado Cliente

    (client-side).

    fig. b - Esquema geral lgico.

    Envio e resgate de verses

    A principal funo do sistema de controle de verso armazenar todo o histrico de desenvolvimento dodocumento, desde o primeiro envio at sua ltima verso. Isso permite que seja possvel resgatar umadeterminada 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, paraminimizar 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., acada 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 nodesenvolvimento de outro colaborador, como por exemplo um cdigo no compilado ou com algum defeitoque comprometa a execuo geral.

    Cada "envio" na maioria dos sistemas chamado de "commit" (s vezes "submit"), ou seja, efetivar asalteraes 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 ingls) para que se tenha uma

    "fotografia" de determinado momento. Ou seja, o

    versionamento do conjunto fica a cargo do usurio

    pois a numerao gerada pelo sistema de controle

    de verso no fornece "alinhamento" aos

    documentos.

    fig. d - J em sistemas no estilo do SVN, o controle

    de verso feito por cada envio ao servidor. Ou

    seja, h uma verso global para todos os

    documentos. Se voc enviar 4 verses do arquivo B

    enquanto voc enviou apenas 2 verses do 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 menosque isso fosse feito manualmente atravs de cpias completas dos documentos numa organizao (que pode ouno envolver pastas) que depender do desenvolvedor.

  • 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 possvelanlise 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 doproduto.

    A documentao do CVS, SVN e outros, recomendam que o comentrio do histrico seja amplo, geral eabstrato, ou seja, que no se limite explicao da mudana do cdigo em si, mas sim sobre o que foi mudadoou acrescentado no conceito ou no funcionamento como um todo. A mudana do cdigo pode ser analisadaatravs de uma diferena (ou diff) entre duas verses, portanto o comentrio seria til apenas para explicar amudana de forma lgica.

    Exemplo prtico dessa recomendao: utilize "acrscimo de uma condio que verifica se existe saldo naconta para no permitir que seja sacado sem saldo" ao invs de um comentrio contendo o prprio cdigomodificado como:

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

    Trabalho em equipe

    Sistemas de controle de verso tambm so convenientes quando diversos desenvolvedores trabalham sobre omesmo projeto simultaneamente, resolvendo eventuais conflitos entre as alteraes. A maioria dos sistemaspossui 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 decontrole 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 criadapelo administrador de sistemas.

    No CVS, por exemplo, possvel escolher o mtodo de autenticao a ser usado, dentre vrias opes. Nocaso do SVN, por exemplo, se ele estiver rodando via Apache, o controle de usurios poder ser feito pelaautenticao padro do Apache. Embora menos comum, possvel tambm configurar o SVN para utilizar ousurio do sistema, como os usurios do Linux ou do Windows.

  • Mesclagens Otimistas vs Edies Exclusivas

    Com relao ao trabalho em equipe num sistema de controle de verso, h basicamente dois mtodos (oufilosofias) relevantes de edio:

    "Optimistic Merges" ("Mesclagens Otimistas") ou "Branch and Merge" ("Ramificando e Mesclando")ou ainda "Copia-modifica-resolve"

    "Exclusive Lock" ("Tranca exclusiva", "Edies exclusivas") ou ainda "Trava-modifica-destrava" )

    Nota: a ausncia de um sistema de controle de verso, ou seja, o trabalho direto num sistema dearquivos comum equivalente ao "Exclusive Lock" nesse aspecto. H tambm alguns sistemas, como oMediaWiki (pelo menos at a verso 1.8) e. g., que permitem a edio simultnea (sem trancar oubloquear o outro) mas que no gerenciam automaticamente os conflitos, tendo que ser feitosmanualmente sempre.

    A filosofia "Optimistic Merges" ("Mesclagens Otimistas"), um mtodo de conflitos otimista que geralmentepadro na maioria dos sistemas abertos, como o SVN e CVS. Essa filosofia presume que os conflitos deedies 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 somentecasos em que a alterao for feita num mesmo ponto de um mesmo arquivo. A prtica demonstra que essaviso , 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 muitasmodificaes simultneas sem intervalos pequenos de atualizao mtua num mesmo arquivo, possvel que afuso manual se torne to complicada a ponto de desperdiar parcialmente ou totalmente o trabalho de um oude outro editor usurio do sistema. por esse principal motivo que alguns sistemas, geralmente as soluescomerciais como o ClearCase e o SourceSafe, adotam outro mtodo de trabalho como padro: o "ExclusiveLock" ("Tranca exclusiva" ou "Edies exclusivas"). Esse mtodo consiste basicamente em deixar apenas umusurio 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 (oudesbloqueio) do editor. O captulo #"Edies Exclusivas" ou ausncia de um sistema de controle deverso demonstra como esse mtodo funciona na prtica.

    Demonstrao de "Mesclagens Otimistas" passo-a-passo

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

    1 passo: atualizando

    2

    2

  • 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).

    3 passo: submetendo

  • fig h - Pig e Dog terminaram o trabalho e submetem (commit) as

    alteraes ao Servidor atravs do manual de 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.

    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.

    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 sistemade arquivos simples, sem um sistema de controle de verso, alguns arquivos ficam bloqueados para escritaenquanto esto sendo utilizados. Ainda, um agravante na ausncia do sistema de controle de verso, que ofluxo de informaes pela rede alto porque a cada modificao substancial necessrio reenviar o documentotodo e a chance de corromper arquivos tambm aumenta; o que no acontece com um sistema de controle deverso, pois cada desenvolvedor possui uma cpia local do projeto, trabalhando localmente, baixando asatualizaes e enviando as alteraes.

  • 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 CVSe 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, pormmuitas 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.

  • 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. Issopermite 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: [1] (http://pt.wikipedia.org/w/index.php?

    title=Sistema_de_controle_de_verso&diff=3305934&oldid=3305901)). 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 nomesmo intervalo de tempo entre o envio de uma nova verso ao sistema. A chance de conflitos aumentamquando aumentam o nmero de usurios utilizando o mesmo conjunto de documentos. O envio de alteraesmuito grandes podem tambm aumentar a chance de conflito.

  • Mesclagem

    A mesclagem (ou merge em ingls) consiste na aglutinao (ou fuso) automtica de verses atravs dacomparao 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 conseguiuresolver o conflito automaticamente, a mesclagem pode ser feita manualmente. Algumas implementaes comoo MediaWiki (at a verso 1.8 pelo menos) no possuem o sistema de "mesclagem", portanto quando hqualquer 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 oconflito "manualmente". O software de Cliente far uma cpia de segurana da sua alterao para que no hajachance de voc perd-la e depois mostrar o local de conflito. O software geralmente mostra os conflitos natela e o desenvolvedor escolhe qual verso manter. Geralmente quando acontece esse tipo de coisa porquehouve falha na organizao de diviso do trabalho e provavelmente uma alterao semelhante foi produzida namesma regio.

    Ramificaes e marcaes

    Num sistema moderno de controle de verses possvel quebrar a linha do desenvolvimento em mais de umcaminho. Isso pode ser chamado de ramificao (ramo), braos ou em ingls branches. Isso muito tilquando 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, atformar a ltima, com o principal objetivo de economizar espao. claro que tambm existem outrasotimizaes que guardam a verso final ou verses recentes para que algumas operaes possam ser feitas demodo mais rpido (utilizando uma espcie de cache). possvel tambm, dependendo do sistema e daconfigurao, que seja compactado algumas partes do repositrio muito antigas que no esto sendo utilizadasde modo a salvar espao.

    Os sistemas so otimizados para trabalhar com arquivos texto e muitas vezes no se do muito bem comarquivos binrios. Sistemas mais modernos trabalham melhor com esse segundo tipo de arquivo, mas aindaassim de forma pouco satisfatria: tanto pelo alto consumo de espao quanto pela dificuldade de se fazercomparao entre uma verso e outra.

    Sistemas como o CVS e o SVN recomendam que documentos textos que necessitam de estilos, formataesespeciais, tabelas e figuras, tais como o arquivo DOC do Microsoft Word que so em binrio, sejam gravadosem algum formato texto como o Rich Text Format (RTF), HTML ou XML (com quebras de linha entre umatag e outra ) porque internamente ele guarda a informao em texto. Um texto desse tipo no fica tootimizado quanto um texto simples, mas ainda assim fica melhor que um arquivo binrio.

    Integrao com outros softwares

    3

  • Os sistemas de controle de verses mais flexveis permitem que seja possvel integr-los a outros softwares. Aintegrao mais comum em IDE (ambientes de desenvolvimento) atravs de plugins. Alguns ambientes quesuportam a integrao de alguns sistemas so: IntelliJ IDEA, Eclipse, NetBeans e Visual Studio. OTortoiseSVN, 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) juntodos arquivos baixados.

    Conflito / Conflict - a alterao simultnea (entre um update e um commit) de um mesmodocumento 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 cpialocal 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 Servidoratravs 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 demarcao.

    Mesclagem / Merge ou integration - Permite que mais de um utilizador modifique um mesmodocumento ao mesmo tempo, comparando as diferenas e mesclando mantendo as duas alteraes (sepossvel). 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 eoutra de um mesmo documento.

    Raiz, linha principal ou brao principal / Head, trunk, mainline - o caminho de revises que no sequebrou 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 nessemomento. 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 ouimpossveis 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 nopermite 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 sistemaque 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.

    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 muitasIDEs 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 temincorporada 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 internacionalmentereconhecidas como a Apache Foundation j adotaram o Subversion como padro.

    Git - Software para controle de verso distribudo com foco na velocidade. .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 versesdos documentos. Esse sistema permite o trabalho simultneo de milhares de voluntrios.GNU CSSC

    Revision Control System (RCS)Bazaar

    DarcsMercurial - SCM usado para gerenciar o cdigo fonte do Python

    MonotoneSVK

    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 hnenhum 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

    4

    5

  • QUALQUER GARANTIA; sem mesmo a garantia implcita de COMERCIALIZAO ou deADEQUAO A QUALQUER PROPSITO EM PARTICULAR. (...)"

    2. Conceitos Bsicos de Controle de Verso de Software, por Andr Felipe Dias publicado porPronus Engenharia de Software (04/08/2006)

    (http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/controle_versao.php?pagNum=0)3. 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. Assimsendo, 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.4. 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/

    5. Ver http://bazaar-vcs.org

    Bibliografia

    MOLINARI, Leonardo. Gerncia de Configurao - Tcnicas e Prticas no Desenvolvimento do

    Software. Florianpolis: Visual Books, 2007. 85-7502-210-5MIKKELSEN, 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.

    Ver tambm

    Gerncia de Configurao de SoftwareTrunk

    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 doCVS) (http://www.debian.org/doc/manuals/reference/ch-vcs.pt-br.html)

    Obtida de "http://pt.wikipedia.org/w/index.php?title=Sistema_de_controle_de_verso&oldid=36342269"Categoria: Sistemas de controlo de verso

    Esta pgina foi modificada pela ltima vez (s) 21h00min de 8 de julho de 2013.Este texto disponibilizado nos termos da licena Atribuio-Partilha nos Mesmos Termos 3.0 noAdaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Consulte as condies de uso

    para mais detalhes.

    a b c