TortoiseSVN 1.7.12 Pt BR

Embed Size (px)

Citation preview

  • TortoiseSVNUm aplicativo do Subversion para Windows

    Version 1.7

    Stefan KngLbbe OnkenSimon Large

  • TortoiseSVN: Um aplicativo do Subversion para Windows: Version1.7por Stefan Kng, Lbbe Onken, e Simon LargeTraduo: tradudor-crditos

    Data de Publicao

  • iii

    ndicePrefcio ...................................................................................................................................... xi

    1. O que o TortoiseSVN? ................................................................................................... xi2. Caractersiticas do TortoiseSVN .......................................................................................... xi3. Licena .......................................................................................................................... xii4. Desenvolvimento ............................................................................................................. xii

    4.1. Histria do TortoiseSVN ........................................................................................ xii4.2. Agradecimentos ................................................................................................... xiii

    5. Guia de leitura ............................................................................................................... xiii6. Termos usados neste documento ........................................................................................ xiv

    1. Comeando .............................................................................................................................. 11.1. Instalando TortoiseSVN ................................................................................................... 1

    1.1.1. Requerimentos do sistema ...................................................................................... 11.1.2. Instalao ............................................................................................................ 1

    1.2. Conceitos Bsicos ........................................................................................................... 11.3. V em frente para um Teste ............................................................................................. 2

    1.3.1. Criando um Repositrio ......................................................................................... 21.3.2. Importando um Projeto .......................................................................................... 21.3.3. Obtendo Uma Cpia de Trabalho ............................................................................ 31.3.4. Alterando ............................................................................................................ 31.3.5. Adicionando Mais Arquivos ................................................................................... 41.3.6. Vendo o Histrico do Projeto ................................................................................. 41.3.7. Desfazendo Alteraes .......................................................................................... 5

    1.4. Continuando... ................................................................................................................ 52. Conceitos bsicos do Controle de Verso ...................................................................................... 7

    2.1. O Repositrio ................................................................................................................. 72.2. Modelo de controles ........................................................................................................ 7

    2.2.1. O problema do compartilhamento de arquivo ............................................................. 82.2.2. A soluo Alocar-Modificar-Desalocar ..................................................................... 82.2.3. A soluo Copiar-Modificar-Unificar ....................................................................... 92.2.4. O que o Subversion faz? ...................................................................................... 12

    2.3. Subversion em Ao ...................................................................................................... 122.3.1. Cpias de Trabalho ............................................................................................. 122.3.2. URLs do Repositrio ........................................................................................... 142.3.3. Revises ........................................................................................................... 142.3.4. Como Cpia de Trabalho Acompanham o Repositrio ............................................... 16

    2.4. Resumo ....................................................................................................................... 163. O Repositrio ......................................................................................................................... 18

    3.1. Criao do Repositrio ................................................................................................... 183.1.1. Criando um Repositrio com a linha de comando do cliente ........................................ 183.1.2. Criando um Repositrio com o TortoiseSVN ........................................................... 183.1.3. Acesso Local para o Repositrio ........................................................................... 193.1.4. Acessando um Repositrio em uma Rede Compartilhada ............................................ 193.1.5. Leiaute do Repositrio ......................................................................................... 20

    3.2. Cpia de Segurana do Repositrio .................................................................................. 213.3. Rotinas de eventos no servidor ........................................................................................ 223.4. Vnculos externos .......................................................................................................... 223.5. Acessando o Repositrio ................................................................................................ 23

    4. Guia do Uso Dirio ................................................................................................................. 244.1. General Features ........................................................................................................... 24

    4.1.1. Sobreposio dos cones ...................................................................................... 244.1.2. Menus do Contexto ............................................................................................. 244.1.3. Arrastar e Soltar ................................................................................................. 264.1.4. Atalhos Comuns ................................................................................................. 274.1.5. Autenticao ...................................................................................................... 274.1.6. Maximizando Janelas .......................................................................................... 28

  • TortoiseSVN

    iv

    4.2. Importando Dados Para Um Repositrio ............................................................................ 294.2.1. Importar ............................................................................................................ 294.2.2. Importando na Pasta ............................................................................................ 304.2.3. Arquivos Especiais .............................................................................................. 30

    4.3. Obtendo Uma Cpia de Trabalho ..................................................................................... 304.3.1. Profundidade da Obteno .................................................................................... 31

    4.4. Submetendo Suas Alteraes Para o Repositrio ................................................................. 334.4.1. A Janela de Submisso ........................................................................................ 334.4.2. Lista de Alteraes ............................................................................................. 364.4.3. Excluindo Itens de uma Lista de Submisses ........................................................... 364.4.4. Registro de Mensagens de Submisso ..................................................................... 364.4.5. Progresso da Submisso ....................................................................................... 38

    4.5. Atualizar sua Cpia de Trabalho com mudanas feitas por outros ........................................... 394.6. Resolvendo Conflitos ..................................................................................................... 40

    4.6.1. Conflitos de Arquivo ........................................................................................... 414.6.2. Conflitos de Propriedade ...................................................................................... 414.6.3. Conflitos de Estrutura .......................................................................................... 42

    4.7. Obtendo Informaes de Estado ....................................................................................... 454.7.1. Sobreposio dos cones ...................................................................................... 454.7.2. Situao Detalhada .............................................................................................. 464.7.3. Colunas do TortoiseSVN no Windows Explorer ....................................................... 484.7.4. Estado Local e Remoto ........................................................................................ 484.7.5. Visualizar diferenas ........................................................................................... 50

    4.8. Lista de Alteraes ........................................................................................................ 504.9. Janela de Reviso de Registro ......................................................................................... 52

    4.9.1. Invocando a Janela de Histrico de Reviso ............................................................. 534.9.2. Histrico de Aes de Reviso .............................................................................. 534.9.3. Recuperando Informaes Adicionais ..................................................................... 544.9.4. Obtendo mais mensagens de log ............................................................................ 594.9.5. Reviso da Cpia de Trabalho Atual ...................................................................... 594.9.6. Combinar Recursos Monitorados ........................................................................... 594.9.7. Alterando a Mensagem de Auditoria e o Autor ......................................................... 604.9.8. Filtrando Mensagens de Log ................................................................................. 614.9.9. Informao Estatstica .......................................................................................... 624.9.10. Modo desconectado ........................................................................................... 664.9.11. Atualizando a Visualizao ................................................................................. 66

    4.10. Visualizando as Diferenas ............................................................................................ 664.10.1. Diferenas do Arquivo ....................................................................................... 674.10.2. Opes de Quebra de Linha e Espaos em Branco ................................................... 684.10.3. Comparando Diretrios ...................................................................................... 684.10.4. Comparando Imagens Utilizando o TortoiseIDiff .................................................... 704.10.5. Diffing Office Documents .................................................................................. 714.10.6. External Diff/Merge Tools .................................................................................. 71

    4.11. Adding New Files And Directories ................................................................................. 714.12. Copying/Moving/Renaming Files and Folders ................................................................... 724.13. Ignorando Arquivos e Diretrios .................................................................................... 73

    4.13.1. Padres de Filtro na Lista de Arquivos Ignorados .................................................... 744.14. Apagando, Movendo e Renomeando ............................................................................... 75

    4.14.1. Apagando arquivos e diretrios ............................................................................ 764.14.2. Movendo arquivos e diretrios ............................................................................ 764.14.3. Procedimento em caso de conflito com o nome do arquivo ........................................ 774.14.4. Reparando Renomeao de Arquivos .................................................................... 774.14.5. Apagando Arquivos no Controlados .................................................................... 77

    4.15. Desfazendo Alteraes ................................................................................................. 784.16. Limpar ....................................................................................................................... 794.17. Configuraes do Projeto .............................................................................................. 79

    4.17.1. Propriedades do Subversion ................................................................................ 794.17.2. TortoiseSVN Project Properties ........................................................................... 83

  • TortoiseSVN

    v

    4.17.3. Property Editors ................................................................................................ 854.18. Itens Externos ............................................................................................................. 90

    4.18.1. Diretrios Externos ............................................................................................ 914.18.2. Arquivos Externos ............................................................................................. 92

    4.19. Ramificando / Rotulando ............................................................................................... 934.19.1. Criando um Ramo ou Rtulo .............................................................................. 934.19.2. Other ways to create a branch or tag .................................................................... 954.19.3. Para Obter ou Alternar ....................................................................................... 95

    4.20. Unificando ................................................................................................................. 974.20.1. Unificar um Intervalo de Revises ....................................................................... 984.20.2. Reintegrar um ramo ........................................................................................... 994.20.3. Combinando Duas rvores Diferentes ................................................................. 1004.20.4. Opes de Combinao .................................................................................... 1014.20.5. Reviewing the Merge Results ............................................................................ 1024.20.6. Histrico de combinaes ................................................................................. 1034.20.7. Handling Conflicts during Merge ....................................................................... 1034.20.8. Merge a Completed Branch ............................................................................... 1044.20.9. Feature Branch Maintenance ............................................................................. 105

    4.21. Bloqueando ............................................................................................................... 1054.21.1. How Locking Works in Subversion .................................................................... 1064.21.2. Obtendo uma trava .......................................................................................... 1064.21.3. Liberando uma trava ........................................................................................ 1074.21.4. Checking Lock Status ...................................................................................... 1084.21.5. Making Non-locked Files Read-Only .................................................................. 1084.21.6. The Locking Hook Scripts ................................................................................ 108

    4.22. Creating and Applying Patches ..................................................................................... 1094.22.1. Creating a Patch File ....................................................................................... 1094.22.2. Applying a Patch File ...................................................................................... 110

    4.23. Who Changed Which Line? ......................................................................................... 1104.23.1. Blame for Files ............................................................................................... 1114.23.2. Diferenas de Autoria ...................................................................................... 113

    4.24. O Navegador de Repositrio ........................................................................................ 1134.25. Grfico de Revises ................................................................................................... 116

    4.25.1. Ns do Grfico de Revises .............................................................................. 1164.25.2. Changing the View .......................................................................................... 1174.25.3. Using the Graph .............................................................................................. 1194.25.4. Atualizando a Visualizao ............................................................................... 1194.25.5. Pruning Trees ................................................................................................. 120

    4.26. Exporting a Subversion Working Copy .......................................................................... 1204.26.1. Removing a working copy from version control .................................................... 122

    4.27. Relocating a working copy .......................................................................................... 1224.28. Integration with Bug Tracking Systems / Issue Trackers .................................................... 123

    4.28.1. Adding Issue Numbers to Log Messages .............................................................. 1234.28.2. Getting Information from the Issue Tracker .......................................................... 127

    4.29. Integration with Web-based Repository Viewers .............................................................. 1284.30. Configuraes do TortoiseSVN .................................................................................... 128

    4.30.1. Configuraes Gerais ....................................................................................... 1294.30.2. Revision Graph Settings ................................................................................... 1364.30.3. Icon Overlay Settings ....................................................................................... 1384.30.4. Network Settings ............................................................................................. 1424.30.5. External Program Settings ................................................................................. 1434.30.6. Saved Data Settings ......................................................................................... 1474.30.7. Log Caching ................................................................................................... 1484.30.8. Client Side Hook Scripts .................................................................................. 1514.30.9. Configuraes TortoiseBlame ............................................................................ 1554.30.10. Configuraes Avanadas ................................................................................ 1554.30.11. Exporting TSVN Settings ................................................................................ 159

    4.31. Final Step ................................................................................................................. 159

  • TortoiseSVN

    vi

    5. The SubWCRev Program ........................................................................................................ 1605.1. The SubWCRev Command Line .................................................................................... 1605.2. Keyword Substitution ................................................................................................... 1605.3. Keyword Example ....................................................................................................... 1625.4. COM interface ............................................................................................................ 162

    6. IBugtraqProvider interface ....................................................................................................... 1666.1. Naming conventions ..................................................................................................... 1666.2. The IBugtraqProvider interface ...................................................................................... 1666.3. The IBugtraqProvider2 interface ..................................................................................... 167

    A. Frequently Asked Questions (FAQ) .......................................................................................... 171B. Como eu fao... .................................................................................................................... 172

    B.1. Move/copy a lot of files at once .................................................................................... 172B.2. Force users to enter a log message ................................................................................. 172

    B.2.1. Hook-script on the server ................................................................................... 172B.2.2. Project properties .............................................................................................. 172

    B.3. Update selected files from the repository ......................................................................... 173B.4. Roll back (Undo) revisions in the repository .................................................................... 173

    B.4.1. Use the revision log dialog ................................................................................. 173B.4.2. Use the merge dialog ........................................................................................ 173B.4.3. Use svndumpfilter ..................................................................................... 173

    B.5. Compare two revisions of a file or folder ........................................................................ 174B.6. Include a common sub-project ....................................................................................... 174

    B.6.1. Use svn:externals .............................................................................................. 174B.6.2. Use a nested working copy ................................................................................ 174B.6.3. Use a relative location ....................................................................................... 175

    B.7. Create a shortcut to a repository .................................................................................... 175B.8. Ignore files which are already versioned ......................................................................... 175B.9. Unversion a working copy ............................................................................................ 176B.10. Remove a working copy ............................................................................................. 176

    C. Useful Tips For Administrators ................................................................................................ 177C.1. Deploy TortoiseSVN via group policies .......................................................................... 177C.2. Redirect the upgrade check ........................................................................................... 177C.3. Setting the SVN_ASP_DOT_NET_HACK environment variable ............................................ 178C.4. Desabilitar opes do menu de contexto .......................................................................... 178

    D. Automatizando o TortoiseSVN ................................................................................................ 181D.1. Comandos do TortoiseSVN .......................................................................................... 181D.2. Controlador de URL do Tsvncmd .................................................................................. 185D.3. Comandos do TortoiseIDiff .......................................................................................... 186

    E. Command Line Interface Cross Reference .................................................................................. 187E.1. Conventions and Basic Rules ........................................................................................ 187E.2. Comandos do TortoiseSVN ........................................................................................... 187

    E.2.1. Obter .............................................................................................................. 187E.2.2. Atualizar ......................................................................................................... 187E.2.3. Atualizar para Reviso ....................................................................................... 188E.2.4. Submeter ......................................................................................................... 188E.2.5. Diff ................................................................................................................ 188E.2.6. Log ................................................................................................................ 188E.2.7. Procurar por Modificaes ................................................................................. 189E.2.8. Grfico de Revises .......................................................................................... 189E.2.9. Navegador de ................................................................................................... 189E.2.10. Conflitos ....................................................................................................... 189E.2.11. Resolvido ...................................................................................................... 189E.2.12. Renomear ...................................................................................................... 189E.2.13. Apagar .......................................................................................................... 190E.2.14. Reverter ........................................................................................................ 190E.2.15. Limpar .......................................................................................................... 190E.2.16. Obter bloqueio ................................................................................................ 190E.2.17. Liberar bloqueio ............................................................................................. 190

  • TortoiseSVN

    vii

    E.2.18. Ramificar/Rotular... ......................................................................................... 190E.2.19. Alternar ......................................................................................................... 191E.2.20. Combinar ....................................................................................................... 191E.2.21. Exportar ........................................................................................................ 191E.2.22. Reposicionar .................................................................................................. 191E.2.23. Criar reposit aqui .......................................................................................... 191E.2.24. Adicionar ....................................................................................................... 191E.2.25. Importar ........................................................................................................ 191E.2.26. Autoria .......................................................................................................... 191E.2.27. Adicionar lista de ignorados ........................................................................... 192E.2.28. Criar Correo ................................................................................................ 192E.2.29. Aplicar correo ............................................................................................. 192

    F. Detalhes da Implementao ..................................................................................................... 193F.1. Sobreposio dos cones ............................................................................................... 193

    G. Language Packs and Spell Checkers ......................................................................................... 195G.1. Pacotes de Idioma ....................................................................................................... 195G.2. Corretor ortogrfico ..................................................................................................... 195

    Glossrio .................................................................................................................................. 196ndice Remissivo ....................................................................................................................... 199

  • viii

    Lista de Figuras1.1. O menu do TortoiseSVN para diretrios no controlados ............................................................... 21.2. A Janela de Importao ........................................................................................................... 31.3. Visualizador das Diferenas do Arquivo ..................................................................................... 41.4. A Janela de Log ..................................................................................................................... 52.1. Um tpico sistema Cliente/Servidor ............................................................................................ 72.2. O problema a ser evitado ......................................................................................................... 82.3. A soluo Alocar-Modificar-Desalocar ....................................................................................... 92.4. A soluo Copiar-Modificar-Unificar ........................................................................................ 102.5. ...Continuando com Copiar-Modificar-Unificar ........................................................................... 112.6. O Sistema de Arquivos do Repositrio ...................................................................................... 132.7. O Repositrio ....................................................................................................................... 153.1. O menu do TortoiseSVN para diretrios no controlados .............................................................. 184.1. Explorer mostra os cones sobrepostos ...................................................................................... 244.2. Menu do contexto para diretrios controlados ............................................................................. 254.3. Atalho no menu arquivo do Explorer em um diretrio controlado ................................................... 264.4. Menu de quando se clica com o boto direito e se arrasta um diretrio que est sob o controle deverso. ....................................................................................................................................... 274.5. Janela de Autenticao ........................................................................................................... 284.6. A janela de Obteno ............................................................................................................ 314.7. A janela de Submisso ........................................................................................................... 344.8. A Janela de Submisso Com Corretor Ortogrfico ....................................................................... 374.9. A janela de Progresso mostra uma submisso em progresso .......................................................... 384.10. Janela de progresso mostrando atualizao terminada ................................................................. 394.11. Explorer mostra os cones sobrepostos .................................................................................... 454.12. Pgina de propriedade do explorador, aba do Subversion ............................................................ 474.13. Procurar por Modificaes .................................................................................................... 484.14. Janela de Submisso com Lista de Alteraes ........................................................................... 514.15. A Janela de Histrico de Reviso ........................................................................................... 534.16. O Menu de Contexto do Painel Superior da Janela de Auditoria da Reviso .................................... 544.17. Menu de Contexto do Painel Superior para 2 Revises Selecionadas ............................................. 574.18. O Painel Inferior da Janela de Auditoria com Menu de Contexto .................................................. 574.19. A Janela de Auditoria Mostrando as Revises de Rastreamento de Combinao ............................... 604.20. Histograma de Submisses-por-autor ....................................................................................... 634.21. Grfico de Pizza das Submisses-por-Autor ............................................................................. 644.22. Grfico de Submisses-por-data ............................................................................................. 654.23. Ir para Janela de Desconectado .............................................................................................. 664.24. A Janela de Comparao de Revises ..................................................................................... 694.25. The image difference viewer ................................................................................................. 704.26. Explorer context menu for unversioned files ............................................................................. 724.27. Menu de quando se clica com o boto direito e se arrasta um diretrio que est sob o controle deverso. ....................................................................................................................................... 734.28. Explorer context menu for unversioned files ............................................................................. 744.29. Menu de contexto do Explorerer para arquivos controlados ......................................................... 754.30. Janela de Reverso .............................................................................................................. 784.31. pgina de propriedades do Subversion ..................................................................................... 804.32. Adicionando propriedades ..................................................................................................... 814.33. svn:externals property page ................................................................................................... 864.34. svn:keywords property page .................................................................................................. 864.35. svn:eol-style property page .................................................................................................... 874.36. tsvn:bugtraq property page .................................................................................................... 884.37. Size of log messages property page ........................................................................................ 894.38. Language property page ........................................................................................................ 894.39. svn:mime-type property page ................................................................................................. 904.40. svn:needs-lock property page ................................................................................................. 904.41. svn:executable property page ................................................................................................. 90

  • TortoiseSVN

    ix

    4.42. A Janela de Ramificao/Rotulao ........................................................................................ 944.43. A Janela de Troca ............................................................................................................... 964.44. The Merge Wizard - Select Revision Range ............................................................................. 984.45. The Merge Wizard - Reintegrate Merge ................................................................................. 1004.46. The Merge Wizard - Tree Merge .......................................................................................... 1014.47. The Merge Conflict Callback Dialog ..................................................................................... 1044.48. The Merge reintegrate Dialog .............................................................................................. 1054.49. The Locking Dialog ........................................................................................................... 1074.50. The Check for Modifications Dialog ..................................................................................... 1084.51. The Create Patch dialog ...................................................................................................... 1094.52. The Annotate / Blame Dialog ............................................................................................... 1114.53. TortoiseBlame ................................................................................................................... 1124.54. O Navegador de Repositrio ................................................................................................ 1144.55. Um Grfico de Reviso ...................................................................................................... 1164.56. The Export-from-URL Dialog .............................................................................................. 1214.57. The Relocate Dialog ........................................................................................................... 1224.58. The Bugtraq Properties Dialog ............................................................................................. 1244.59. Example issue tracker query dialog ....................................................................................... 1274.60. The Settings Dialog, General Page ........................................................................................ 1294.61. The Settings Dialog, Context Menu Page ............................................................................... 1314.62. The Settings Dialog, Dialogs 1 Page ..................................................................................... 1324.63. The Settings Dialog, Dialogs 2 Page ..................................................................................... 1334.64. The Settings Dialog, Colours Page ........................................................................................ 1354.65. The Settings Dialog, Revision Graph Page ............................................................................. 1364.66. The Settings Dialog, Revision Graph Colors Page .................................................................... 1374.67. The Settings Dialog, Icon Overlays Page ............................................................................... 1384.68. The Settings Dialog, Icon Set Page ....................................................................................... 1414.69. The Settings Dialog, Icon Handlers Page ............................................................................... 1414.70. The Settings Dialog, Network Page ....................................................................................... 1424.71. The Settings Dialog, Diff Viewer Page .................................................................................. 1434.72. The Settings Dialog, Diff/Merge Advanced Dialog .................................................................. 1464.73. The Settings Dialog, Saved Data Page ................................................................................... 1474.74. The Settings Dialog, Log Cache Page .................................................................................... 1484.75. The Settings Dialog, Log Cache Statistics .............................................................................. 1504.76. The Settings Dialog, Hook Scripts Page ................................................................................. 1514.77. The Settings Dialog, Configure Hook Scripts .......................................................................... 1524.78. The Settings Dialog, Issue Tracker Integration Page ................................................................. 1544.79. The Settings Dialog, TortoiseBlame Page ............................................................................... 1554.80. Taskbar with default grouping .............................................................................................. 1574.81. Taskbar with repository grouping ......................................................................................... 1574.82. Taskbar with repository grouping ......................................................................................... 1574.83. Taskbar grouping with repository color overlays ...................................................................... 158C.1. The commit dialog, showing the upgrade notification ................................................................ 177

  • xLista de Tabelas2.1. URLs de Acesso ao Repositrio .............................................................................................. 145.1. List of available command line switches .................................................................................. 1605.2. List of available command line switches .................................................................................. 1615.3. COM/automation methods supported ....................................................................................... 162C.1. Menu entries and their values ............................................................................................... 178D.1. List of available commands and options .................................................................................. 181D.2. Lista de opes disponveis .................................................................................................. 186

  • xi

    Prefcio

    Controle de verso a arte de administrar as mudanas das informaes. Isto uma ferramenta crticapara programadores, que normalmente gastam horas fazendo pequenas modificaes em seus aplicativos eento desfazem ou verificam algumas dessas modificaes no dia seguinte. Imagine uma equipe de vriosdesenvolvedores trabalhando juntos - e talvez simultaneamente em mesmos arquivos! - e voc precisa ver porqueum bom controle necessrio para controlar uma possvel desordem.

    1. O que o TortoiseSVN?TortoiseSVN is a free open-source Windows client for the Apache Subversion version control system. Thatis, TortoiseSVN manages files and directories over time. Files are stored in a central repository. The repository ismuch like an ordinary file server, except that it remembers every change ever made to your files and directories.This allows you to recover older versions of your files and examine the history of how and when your data changed,and who changed it. This is why many people think of Subversion and version control systems in general as asort of time machine.

    Alguns sistemas de controle de verso tambm so um aplicativo de gerenciamento de configurao (SCM). Essessistemas so especificamente adaptados para controlar estruturas de cdigo fonte, e tem muitas caractersticasde um aplicativo especfico de desenvolvimento - como um aplicativo para uma linguagem de programaoespecfica, or fornecendo ferramentas de construo de software. Subversion, entretanto, no um desses sistemas; um sistema genrico que pode ser usado para administrar qualquer conjunto de arquivos, incluindo cdigo fonte.

    2. Caractersiticas do TortoiseSVNO que faz do TortoiseSVN um bom aplicativo cliente para Subversion? Aqui est uma pequena lista de recursos.

    Interface integrada

    TortoiseSVN integra-se perfeitamente ao shell do Windows (ou seja, o Explorer). Isto significa que voc podecontinuar trabalhando com as ferramentas com as quais voc j est familiarizado. E voc no tem que mudarpara uma aplicao diferente cada vez que precisar das funes de controle de verso.

    E voc no est limitado a usar o Windows Explorer; os menus de contexto do TortoiseSVN funcionamem muitos outros gerenciadores de arquivos, e tambm na caixa de dilogo Arquivo/Abrir que comumna maioria dos aplicativos padro Windows. Voc deve, entretanto, ter em mente que o TortoiseSVN intencionalmente desenvolvido como uma extenso para o Windows Explorer. Assim, possvel que emoutras aplicaes, a integrao no seja to completa e, por exemplo, as sobreposies de cones podem noser exibidas.

    Sobreposio dos conesA situao de cada arquivo e diretrio controlado indicado por uma pequena sobreposio de cones. O quepermite a voc ver rapidamente qual a situao da sua cpia de trabalho.

    Interface Grfica de UsurioQuando voc lista as alteraes em um arquivo ou pasta, voc pode clicar em uma reviso para ver oscomentrios para aquela submisso. Voc tambm pode ver uma lista de arquivos alterados - basta clicar duasvezes em um arquivo para ver exatamente o que mudou.

    A caixa de dilogo de submisses lista todos os itens que sero includos em uma submisso, e cada itemtem uma caixa de seleo para que voc possa escolher os itens que voc deseja incluir. Arquivos sem versotambm podem ser listados, no caso de voc ter esquecido de adicionar aquele novo arquivo.

  • Prefcio

    xii

    Fcil acesso aos comandos do SubversionTodos os comandos do Subversion esto disponveis nos menus do explorer. TortoiseSVN adiciona seuprprio submenu.

    Uma vez que TortoiseSVN um aplicativo cliente do Subversion, tambm gostaramos de mostrar a voc algumasdas funcionalidades do Subversion:

    Controle de diretrioCVS somente mantm o histrico de alteraes de arquivos individuais, mas Subversion usa um controlevirtual de sistema de arquivos que mantm o histrico de toda a estrutura de diretrio ao longo do tempo.Arquivos e diretrios so controlados. E como resultado, temos verdadeiros comandos para mover e copiararquivos e diretrios.

    Submisso atmicaCada submisso enviada completamente para o repositrio, ou no enviado nada. Isto permite aosdesenvolvedores construir e submeter as alteraes em partes coesas.

    Metadados controladosCada arquivo e diretrio possue um conjunto de propriedades invisveis. Voc pode inventar e gravarqualquer conjunto de chave/valor que desejar. Propriedades so controladas ao longo do tempo, exatamentecomo o contedo dos arquivos.

    Escolha das camadas da redeSubversion tem uma noo abstrata de acesso ao repositrio, tornando fcil para as pessoas desenvolveremnovos mecanismos de rede. O servidor de rede avanado do Subversion um mdulo para o servidor webApache, do qual expe uma variante do HTTP chamada WebDAV/DeltaV. Isto d ao Subversion uma grandevantagem em estabilidade e interoperabilidade, e prov vrias funcionalidades chave de graa: autenticao,autorizao, compresso, e navegao no repositrio, por exemplo. Uma caracterstica menor, um processoservidor autnomo do Subversion tambm est disponvel. Este servidor exterioriza um protocolo especficoque pode ser facilmente encapsulado sobre o protocolo ssh.

    Manipulao consiste de dadosSubversion apresenta as diferenas de arquivos usando um algoritmo de comparao binria, que funcionaigualmente para arquivos texto (compreensveis) and binrios (ilegveis). Ambos os tipos de arquivos sogravados compactados da mesma forma no repositrio, e as diferenas so trasmitidas em ambas as direesatravs da rede.

    Ramificao e Rotulao eficienteOs recursos necessrios para ramificar e rotular no propocional ao tamanho do projeto. Subversion criaramos e rtulos simplesmente copiando o projeto, usando um mecanismo parecido ao hard-link. Deste modoestas operaes so realizadas rapidamente sem variao de tempo, e consomem muito pouco espao norepositrio.

    3. LicenaTortoiseSVN um projeto Open Source desenvolvido sob a licena GNU General Public License (GPL). gratuitopara baixar e de uso gratuito, pessoalmente ou comercialmente, em qualquer nmero de computadores.

    Embora a maioria das pessoas baixem apenas o instalador, voc tambm tem total acesso de leitura do cdigofonte deste programa. Voc pode navegar at o cdigo atravs do link http://code.google.com/p/tortoisesvn/source/browse/. A linha de desenvolvimento atual est localizado sob /trunk/, e as verses publicadas em /tags/.

    4. DesenvolvimentoTortoiseSVN e Subversion so desenvolvidos por uma comunidade de pessoas que esto trabalhando nestesprojetos. Eles vm de diferentes pases pelo mundo, trabalhando juntos para criar um timo software.

    4.1. Histria do TortoiseSVNEm 2002, Tim Kemp achou que o Subversion era um sistema de controle de verso muito bom mas que faltavauma boa interface grfica GUI. A idia para um programa cliente do Subversion integrado ao shell do Windows foi

  • Prefcio

    xiii

    inpirado num programa similar para CVS de nome TortoiseCVS. Tim estudou o cdigo fonte do TortoiseCVS e ousou como base para o TortoiseSVN. Ele ento comeou o projeto, registrando o domnio tortoisesvn.orge colocando o cdigo fonte online.

    Por volta daquela poca, Stefan Kng estava procurando por um bom e gratuito sistema de controle de verso,encontrando assim o Subversion e o cdigo do TortoiseSVN. Como o TortoiseSVN ainda no estava pronto parao uso, ele se juntou ao projeto e comeou a programar. Ele, em pouco tempo, reescreveu grande parte do cdigoexistente e comeou a adicionar comandos e features, at o ponto em que nada do cdigo original restou.

    medida que o Subversion se tornou mais estvel, mais e mais usurios foram atrados, os quais tambmcomearam a usar o TortoiseSVN como seu programa cliente Subversion. A base de usurios cresceu rapidamente(e ainda est crescendo todos os dias). Foi ento que Lbbe Onken ofereceu ajuda com alguns belos cones e alogomarca para o TortoiseSVN. Ele agora toma conta do website e administra muitas tradues.

    4.2. AgradecimentosTim Kemp

    por iniciar o projeto TortoiseSVNStefan Kng

    pelo trabalho manual para tornar o TortoiseSVN o que agora, e sua liderana no projetoLbbe Onken

    pelos belos cones, logomarca, encontrar erros, tradues e gerenciar as tradues

    Simon Largepor atualizar a documentao

    Stefan Fuhrmannpelo cache de log e o grfico de revisionamento

    O livro Subversionpor ensinar sobre o Subversion e pelo captulo 2 de onde copiamos

    O estilo de projeto Tigrispelos estilos da documentao de onde copiamos

    Nossos Colaboradorespelos patches, relatrio de erros e novas idias, e por ajudar outros, respondendo perguntas na nossa lista dediscusso

    Nossos Contribuidorespor muitas horas de diverso com as msicas que nos enviaram

    5. Guia de leituraEste livro escrito para o pessoal letrado em computao que querem usar o Subversion para administrar seusdados, mas preferem usar uma cliente GUI do que usar um cliente por linhas de comando. TortoiseSVN umaextenso do shell do windows e se supe que o usurio esteja familiarizado com o windows explorer e saiba us-lo.Este Prefcio explica o que TortoiseSVN , um pouco sobre o projeto TortoiseSVN, a comunidade de pessoas quetrabalham nele, as condies de licenciamento para seu uso e sua distribuio.

    O Captulo 1, Comeandoexplica como instalar TortoiseSVN no seu computador, e como comear a us-lo deimediato.

    Em Captulo 2, Conceitos bsicos do Controle de Verso damos uma introduo sobre o controle de revisoSubversion que a base do TortoiseSVN. Isto uma cpia da documentao do projeto Subversion e explica asdiferentes formas de controlar verso, e como Subversion funciona.

    O captulo Captulo 3, O Repositrio explica como carregar um repositrio local, que vantajoso para testarSubversion e TortoiseSVN em um nico computador. Tambm explica um pouco sobre o gerenciamento de um

  • Prefcio

    xiv

    repositrio que relevante para repositrios localizados em um servidor. Existe tambm um captulo sobre comoconfigurar um servidor caso voc precise de um.

    O Captulo 4, Guia do Uso Dirio a parte mais importante pois explica todas as principais caractersticas doTortoiseSVN e como us-las. Com o formato de tutorial, inicia explicando a funo de obter uma cpia de trabalho,depois como modificar a cpia de trabalho, ento submeter as modificaes, etc. E ento continua com os tpicosavanados.

    Captulo 5, The SubWCRev Program um outro aplicativo que acompanha TortoiseSVN que permite extrairinformaes da cpia de trabalho e escrever isto em arquivos.. Isto til para incluir informaes sobre aconstruo dos seus projetos.A seo Apndice B, Como eu fao... responde as dvidas comuns sobre a execuo das tarefas que no estoexplicitamente descritas em outras sees.

    A parte Apndice D, Automatizando o TortoiseSVN mostra como a as janelas do TortoiseSVN podem ser chamadasatravs da linha de comando. Isso pode ser til em scripts que precisam da interao do usurio.

    O Apndice E, Command Line Interface Cross Reference mostra a relao entre os comandos do TortoiseSVN eseus equivalentes na linha de comando do aplicativo Subversion svn.exe.

    6. Termos usados neste documentoPara facilitar a leitura do documento, o nome de todas as telas e Menus do TortoiseSVN esto em destaque. AJanela de Log por exemplo.

    As opes de menu esto indicadas com uma seta. TortoiseSVN Mostrar Log significa: selecionar MostrarLog no menu TortoiseSVN.

    Quando referenciar um menu especfico dentro de uma das janelas do TortoiseSVN, ser usado algo como: MenuEspecfico Salvar como ...

    Os Botes da Interface do Usurio so indicados como: Clique em OK para continuar.

    Aes de Usurios so indicados por uma fonte em negrito. Alt+A: pressione a tecla Alt no seu teclado e enquantoa aperta, pressione tambm a tecla A. Right drag: aperte o boto direito do mouse e enquanto segura, arraste ositens para o novo local.

    Sadas de vdeo e entradas de dados so indicadas com uma fonte different.

    Importante

    Detalhes importantes so indicados com um cone.

    Dica

    Dicas tornam sua vida mais fcil.

    Cuidado

    Lugares onde voc deve tomar cuidado com o que faz.

    Ateno

    Onde preciso cuidado extremo. Corrupo de dados e outras coisas desagradveis podem ocorrerse estes avisos forem ignorados.

  • Prefcio

    xv

  • 1Captulo 1. ComeandoEsta seo voltada s pessoas que gostariam de saber do que se trata o TortoiseSVN e fazer um teste. Ela explicacomo instalar o TortoiseSVN e configurar um repositrio local, e d o passo-a-passo para a maioria das operaesmais comuns.

    1.1. Instalando TortoiseSVN1.1.1. Requerimentos do sistema

    TortoiseSVN roda em Windows XP com service pack 3 ou mais recente e est disponvel em verses de 32 bitse 64 bits. O instalador para o Windows 64 bits tambm inclui as extenses da verso de 32 bits. Portanto vocno precisa instalar a verso de 32 bits em separado para ter o menu de contexto do TortoiseSVN e sobreposiesnas aplicaes de 32 bits.

    Importante

    Se voc est usando o Windows XP, dever ter pelo menos o Service Pack 3 instalado. O programano funcionar se voc ainda no instalou este SP!

    Suporte para Windows 98, Windows ME and Windows NT4 foram abandonados na verso 1.2.0, e para o Windows2000 e XP at SP2 foram abandonados na verso 1.7.0. Voc ainda pode baixar e instalar as verses antigas seprecisar delas.

    1.1.2. InstalaoTortoiseSVN vem com um instalador fcil de usar. Clique duas vezes no arquivo de instalao e siga as instrues.O instalador cuidar de todo o resto. No se esquea de reiniciar aps a instalao.

    Importante

    Voc precisa instalar o TortoiseSVN como Administrador do sistema.

    Pacotes de linguagens esto disponveis, podendo traduzir a interface do TortoiseSVN para muitas diferenteslnguas. Por favor, d uma olhada em Apndice G, Language Packs and Spell Checkers para mais informaesem como as instalar.

    If you encounter any problems during or after installing TortoiseSVN please refer to our online FAQ at http://tortoisesvn.net/faq.html.

    1.2. Conceitos BsicosAntes de ficarmos presos manejando arquivos reais, importanto ter uma viso geral de como o subversionfunciona e os termos que so usados.

    O RepositrioSubversion usa um banco de dados central que contem todos os arquivos versionados com seu histricocompleto. Esse banco de dados referenciado como repositrio. O repositrio normalmente est alocadonum servidor de arquivos rodando o servidor Subversion, abastecendo clientes do Subversion (como oTortoiseSVN) quando requisitado. Se voc faz backup de apenas uma coisa, faa o backup do seu repositriopois a cpia mestre definitiva de todos os seus dados.

    Cpia de TrabalhoAqui onde voc faz o trabalho de verdade. Todo desenvolvedor tem sua prpria cpia de trabalho, algumasvezes conhecido como sandbox, no seu PC local. Voc pode baixar a ltima verso do repositrio, trabalharnele localmente sem afetar os outros e ento, quando estiver feliz com as mudanas que fez, envi-las devolta ao repositrio.

  • Comeando

    2

    Uma cpia de trabalho do Subversion no possui todo o histrico do projeto, mas mantem uma cpia dosarquivos como estavam no repositrio antes de voc comear a fazer modificaes. Isto quer dizer que fcilfazer a checagem das modificaes que voc realizou.

    Voc tambm tem que saber onde encontrar o TortoiseSVN, pois no h muito do que se ver no Menu Inicial. Isso porque o TortoiseSVN uma extenso Shell, portanto, primeiro de tudo, inicie o Windows Explorer. Clique como boto direito numa pasta no Explorer e voc dever ver umas entradas novas no menu de contexto como este:

    Figura 1.1. O menu do TortoiseSVN para diretrios no controlados

    1.3. V em frente para um TesteEsta seo mostra como experimetar as features mais usadas em um repositrio pequeno. Naturalmente, no seexplica tudo - este apenas um Guia Rpido apesar de tudo. Uma vez que voc estiver com tudo rodando, deverpegar um tempinho e ler o resto deste guia, que o leva a coisas com muito mais detalhes. Tambm explicadomais sobre como configurar um servidor Subversion.

    1.3.1. Criando um RepositrioPara um projeto real voc ter um repositrio configurado em algum lugar seguro e um servidor do Subversionpara ser controlado. Para os propsitos deste tutorial ns usaremos um repositrio local do Subversion que temcomo caracterstica o acesso direto ao repositrio criado no seu disco sem a necessidade de um servidor.

    First create a new empty directory on your PC. It can go anywhere, but in this tutorial we are going to call it C:\svn_repos. Now right click on the new folder and from the context menu choose TortoiseSVN CreateRepository here.... The repository is then created inside the folder, ready for you to use. We will also create thedefault internal folder structure by clicking the Create folder structure button.

    Importante

    A caracterstica do repositrio local muito til para testes e avaliaes mas exceto se voc um desenvolver individual em um nico computador voc dever sempre utilizar um servidordo Subversion devidamente configurado. tentador para uma pequena empresa evitar o trabalhode configurar um servidor e simplesmente acessar seu repositrio em uma rede compartilhada.Nunca faa isso. Voc perder dados. Leia Seo 3.1.4, Acessando um Repositrio em uma RedeCompartilhada para descobrir porque fazer isso uma m idia, e como configurar um servidor.

    1.3.2. Importando um ProjetoNow we have a repository, but it is completely empty at the moment. Let's assume I have a set of files in C:\Projects\Widget1 that I would like to add. Navigate to the Widget1 folder in Explorer and right click onit. Now select TortoiseSVN Import... which brings up a dialog

  • Comeando

    3

    Figura 1.2. A Janela de Importao

    A Subversion repository is referred to by URL, which allows us to specify a repository anywhere on the Internet.In this case we need to point to our own local repository which has a URL of file:///c:/svn_repos/trunk, and to which we add our own project name Widget1. Note that there are 3 slashes after file: andthat forward slashes are used throughout.

    Outra importante caracterstica desta janela a caixa Mensagem Importante a qual lhe permite digitar umamensagem descrevendo o que voc est fazendo. Quando voc visualizar o histrico do seu projeto, essasmensagens sero um valioso guia para entender as alteraes feitas e porque. Neste caso ns podemos dizer algosimples como Importar o Projeto Componente1. Clicar no OK e o diretrio ser adicionado ao seu repositrio.

    1.3.3. Obtendo Uma Cpia de Trabalho

    Now that we have a project in our repository, we need to create a working copy to use for day-to-day work. Notethat the act of importing a folder does not automatically turn that folder into a working copy. The Subversion termfor creating a fresh working copy is Checkout. We are going to checkout the Widget1 folder of our repository intoa development folder on the PC called C:\Projects\Widget1-Dev. Create that folder, then right click on itand select TortoiseSVN Checkout.... Enter the URL to checkout, in this case file:///c:/svn_repos/trunk/Widget1 and click on OK. Our development folder is then populated with files from the repository.

    Voc notar que a aparncia deste diretrio ser diferente do diretrio original. Cada arquivo ter uma marcaverde no canto inferior esquerdo. Esses cones de situao do TortoiseSVN estaro presentes apenas na cpia detrabalho. A situao verde indica que o arquivo no foi alterado em relao verso do repositrio.

    1.3.4. Alterando

    Hora de trabalhar. No Componente1-Dev ns comeamos editando arquivos - vamos dizer que ns mudamospara Componente1.c e ReadMe.txt. note que a sobreposio de cones nestes arquivos foram agora mudadospara vermelho, indicando que h alteraes locais nos mesmos.

    Mas o que ns fizemos? Clique com o boto direito em um dos arquivos alterados e selecione TortoiseSVN Diferenas. A ferramenta de comparao do TortoiseSVN ser aberta, mostrando exatamente quais linhas forammodificadas.

  • Comeando

    4

    Figura 1.3. Visualizador das Diferenas do Arquivo

    Bom, ento ns estamos felizes com as alteraes, vamos atualizar o repositrio. Esta ao referenciada comoSubmisso das alteraes. Clique com o boto direito sobre o diretrio Componente1-Dev e selecioneTortoiseSVN Submeter. A janela de submisso mostrar os arquivos alterados, cada um com uma caixa deseleo. Voc pode querer escolher apenas alguns dos arquivos, mas neste caso ns vamos submeter as alteraesem ambos os arquivos. Digite uma mensagem para descrever sobre o que so as alteraes e clique em OK. Ajanela de progresso mostrar os arquivos sendo enviados para o repositrio e ento est feito.

    1.3.5. Adicionando Mais Arquivos

    Como os desenvolvedores precisaro adicionar novos arquivos - vamos dizer que voc adicionou alguma novafuncionalidade em Extras.c e adicionou um referncia no arquivo que j existia Makefile. Clique com oboto direito sobre o diretrio e selecione TortoiseSVN Adicionar. A janela de Adio gora mostra paravoc todos os arquivos no controlados e voc poder selecionar cada um que voc quer adicionar. Outra formade adicionar arquivos poder ser um clique com o boto direito sobre o prprio arquivo e ento selecionarTortoiseSVN Adicionar.

    Agora quando voc for submeter o diretrio, o novo arquivo aparecer como Adicionado e o arquivo j existentecomo Modificado. Note que voc pode dar um duplo clique sobre o arquivo modificado e verificar exatamenteas alteraes feitas.

    1.3.6. Vendo o Histrico do ProjetoUma das caractersticas mais teis do TortoiseSVN a janela de Auditoria. A janela mostra para voc a lista detodas as submisses feitas para um arquivo ou diretrio, e mostra detalhadamente as mensagens que voc digitou ;-)

  • Comeando

    5

    Figura 1.4. A Janela de Log

    Bom, ento eu manipulei um pouco aqui e usei uma imagem do repositrio do TortoiseSVN.

    O painel superior mostra a lista das revises submetidas e o incio da mensagem relacionada. Se voc selecionaruma dessas revises, o painel do meio mostrar a mensagem completa para a reviso e o painel de baixo mostrara lista dos arquivos e diretrios modificados.

    Cada um dos painis possui um menu de contexto que prov a voc vrias maneiras de usar a informao. Nopainel inferior voc pode dar um duplo clique em um arquivo e ver exatamente as alteraes feitas naquela reviso.Leia Seo 4.9, Janela de Reviso de Registro para ver o texto completo.

    1.3.7. Desfazendo Alteraes

    Umas das caractersticas de todo sistema de controle de reviso que eles permitem a voc desfazer alteraesfeitas anteriormente. Como voc pode esperar, TortoiseSVN faz isso de forma simples.

    Se voc quer controlar as mudanas que voc fez e ainda no submeteu e desfazer essas mudanas voltando paraa verso original, TortoiseSVN Reverter

    Se voc quer desfazer as alteraes de uma reviso em particular, abra a janela de Auditoria e encontre a reviso emquesto. Selecione Menu de Contexto Reverter alteraes desta reviso e ento as alteraes da revisosero desfeitas.

    1.4. Continuando...Este guia tem mostrado a voc uma breve descrio das coisas mais importantes do TortoiseSVN e funcionalidadesteis, mas claro que h mais que isso que ns no abordamos. Ns fortemente recomendamos que voc gasteum tempo para ler todo o manual, especialmente Captulo 4, Guia do Uso Dirio que lhe dar mais detalhes sobreo que se faz no do dia-a-dia.

  • Comeando

    6

    Ns encontramos muitas dificuldades para ter certeza de que este manual tanto informativo quanto fcil deler, mas ns reconhecemos que h muito disso! Fique tranquilo e no tenha medo de tentar as coisas em umrepositrio de testes a medida que vai lendo. A melhor maneira de aprender usando.

  • 7Captulo 2. Conceitos bsicos doControle de Verso

    Este captulo uma verso levemente modificada do mesmo captulo do livro do Subversion. H uma versodisponvel do livro do Subversion aqui: http://svnbook.red-bean.com/.

    Este captulo uma pequena, simplria introduo ao Subversion. Se voc novato em controle de verses, estecaptulo com certeza para voc. Ns comeamos com uma abordagem geral dos conceitos do controle de verso,seguindo nossas idias sobre o Subversion, e mostrando alguns exemplos simples de uso do Subversion.

    Embora os exemplos desse captulo mostre pessoas compartilhando uma poro de cdigo de fonte, tenha emmente que Subversion pode controlar qualquer conjunto de arquivos - no est limitado a ajudar programadores.

    2.1. O RepositrioSubversion um sistema centralizador de compartilhamento de informao. A essncia um repositrio, que um arquivo central de dados. O repositrio grava informao no formato de diretrio de arquivo de sistemas -uma tpica hierarquia de arquivos e diretrios. Quantos clientes quiser se conectam no repositrio, e ento leeme escrevem nesses arquivos. Escrevendo dados, um usurio torna a informao disponvel para outros; lendo osdados, um usurio recebe a informao de outros.

    Figura 2.1. Um tpico sistema Cliente/Servidor

    Ento porque isto interessante? At agora, isso se parece com a definio de um tpico servidor de arquivos. Ede verdade, o repositrio um tipo de servidor de arquivos, mas no sua funo normal. O que o repositrio doSubversion faz de especial que ele guarda cada modificao feita: cada modificao para cada arquivo e mesmoas modificaes na prria estrutura de diretrios, como adio, excluso e reorganizao de arquivos e diretrios.

    When um cliente l uma informao do repositrio, normalmente v apenas a ltima verso da estrutura dearquivos. Mas o usurio tambm pode ver estruturas mais antigas. Por exemplo, um usurio pode fazer perguntascomo, o que este diretrio continha na ltma quarta-feira?, ou quem foi a ltima pessoa a modificar este arquivo,e que modificaes foram feitas? Estas so os tipos de perguntas principais em qualquer sistema de controle deverso: sistemas que so projetados para gravar e armazenar modificaes dos dados ao longo do tempo.

    2.2. Modelo de controlesTodo sistema de controle de verso precisa resolver algumas problemas fundamentais: como o sistema vai permitiraos usurios compartilhar a informao, mas prevenindo que um no atrapalhe o outro? muito fcil para osusurios acidentalmente sobreescrever as modificaes de outros no repositrio.

  • Conceitos bsicos do Controle de Verso

    8

    2.2.1. O problema do compartilhamento de arquivo

    Considere o cenrio: suponha que ns temos dois usurios, Harry e Sally. Cada um deles decide editar o mesmoarquivo no mesmo repositrio ao mesmo tempo. Se Harry salvar suas alteraes no repositrio primeiro, possvelque (alguns tempo depois) Sally poderia acidentalmente sobreescrever as alteraes com sua verso do arquivo.Enquanto a verso do arquivo do Harry se perderia para sempre (porque o sistema guarda cada modificao),qualquer alterao que Harry fez no estariam presentes na nova verso do arquivo de Sally, porque ela nuncaviu as modificaes do Harry. O trabalho do Harry foi perdido - ou no mnimo estaria na verso mais recente - eprovavelmente por acidente. Esta definitivamente um situao que ns queremos evitar!

    Figura 2.2. O problema a ser evitado

    2.2.2. A soluo Alocar-Modificar-Desalocar

    Muitos sistemas de controle de verso usam o modelo alocar-modificar-desalocar para resolver este problema,o qual uma soluo simples. Em cada sistema, o repositrio permite somente uma pessoa por vez modificar oarquivo. Primeiro Harry deve alocar o arquivo antes que possa fazer as alteraes. Alocar um arquivo como umcontrole de biblioteca/ se Harry alocou o arquivo, ento Sally no pode fazer qualquer alterao nele. Se ela tentaralocar o arquivo, o repositrio vai negar essa solicitao. Tudo que ela pode fazer ler o arquivo, e esperar at queHarry acabe as suas alteraes e libere o arquivo. Depois que Harry desalocar o arquivo, sua vez acaba, e ento a vez de Sally alocar o arquivo e fazer suas alteraes.

  • Conceitos bsicos do Controle de Verso

    9

    Figura 2.3. A soluo Alocar-Modificar-Desalocar

    O problema com o modelo alocar-modificar-desalocar que muito restritivo, e muitas vezes um empecilhopara os usurios:

    Alocao pode causar problemas administrativos. Algumas vezes Harry vai alocar o arquivo e ento esquecerdele. Entretanto, porque Sally continua esperando para para editar o arquivo, suas mos esto atadas. E entoHarry sai de frias. Agora Sally precisa pedir a um administrador para liberar o arquivo alocado por Harry. Asituao acaba causando atrasos e uma poro de tempo perdido desnecessrio.

    Alocao pode causa uma serializao desnecessria. O que fazer se Harry estava editando o incio deum arquivo texto, e Sally quer editar apenas o fim do arquivo? Estas alteraes no se sobrepoem. Elespoderiam facilmente editar o arquivo ao mesmo tempo, e nenhum grande problema ocorreria, assumindo queas modificaes seriam corretamente unificadas. No necessrio travar o arquivo neste caso.

    Alocar pode criar uma falta noo de segurana. Suponhamos que Harry aloque e altere o arquivo A, enquantoao mesmo tempo Sally aloca e edita o arquivo B. Supondo que A e B dependem um do outro, e que asmodificaes feitas em cada um so semanticamente incompatveis. Imprevisivelmente A e B no funcionammais juntos. O sistema de alocao no tem como prever este problema - ainda que esse sistema passe uma faltasensao de segurana. fcil para Harry e Sally imaginar que alocando arquivos, cada um est seguro, numatarefa isola, e deste modo evitando discusses precosss sobre as modificaes.

    2.2.3. A soluo Copiar-Modificar-UnificarSubversion, CVS e outros sistemas de controle de verso usam o modelo copiar-modificar-unificar comoalternativa para a alocao. Neste modelo, cada usurio l o repositrio e cria uma cpia de trabalho pessoal dos

  • Conceitos bsicos do Controle de Verso

    10

    arquivos do projeto. Eles ento trabalham de forma paralela, modificando suas prprias cpias. No final, as cpiaslocais so unificadas com uma nova verso, uma verso final. O sistema de controle de verso oferece ajuda coma unificao, mas no final uma interveno humana que decide como a unificao ser feita.

    Aqui vai um exemplo. Digamos que Harry e Sally criam cada um uma cpia de trabalho de um mesmo projeto,copiado do repositrio. Eles trabalham ao mesmo tempo, e fazem modificaes em um mesmo arquivo A emsuas cpias. Sally salva suas alteraes no repositrio primeiro. Quando Harry tenta salvar suas modificaesaps Sally, o repositrio informa a ele que o arquivo A est desatualizado. Em outras palavras, o arquivo Ado repositrio tem alguma alterao desde a ltima vez que ele foi copiado. Ento Harry questionado sobrea unificao das modificaes no repositrio serem inseridas em sua cpia do arquivo A. Oportunamente asmodicaes de Sally no foram sobreescritas pelas dele; uma vez que ele unificou ambas as alteraes, ele salvaa sua cpia no repositrio.

    Figura 2.4. A soluo Copiar-Modificar-Unificar

  • Conceitos bsicos do Controle de Verso

    11

    Figura 2.5. ...Continuando com Copiar-Modificar-Unificar

    Mas o que acontece se as alteraes de Sally se sobrepoem sobre as alteraes de Harry? O que ento deve serfeito? Esta situao chamada de conflito, e em geral isto no um problema. Quando Harry for questionado sobrea unificao das ltimas alteraes no repositrio em sua cpia de trabalho, sua cpia do arquivo A de qualquermaneira marcada como conflitante: ele ver todas as modificaes em conflito, e manualmente resolver. Entendaque o software no pode resolver automaticamente os conflitos; somente humanos so capazes de entender quaisso as escolhas lgicas a serem tomadas. Uma vez que Harry manualmente resolveu o que estava se sobreponde(talvez precise discutir o conflito com Sally!), ele pode seguramente salvar o arquivo unificado de volta norepositrio.

    O modelo copiar-modificar-unificar pode parecer bagunado, mas na prtica, isto funciona grandemente. Usuriospodem trabalhar paralelamente, sem esperar por outros. Quando eles trabalham num mesmo arquivo, a maioriadas alteraes no se sobrepoem; conflitos so pouco frequentes. E na maioria das vezes o tempo que leva pararesolver os conflitos muito menor que o tempo perdido em um sistema de alocao.

    No final das contas, tudo isso acaba em um ponto crtico: comunicao entre os usurios. Quando os usuriosno se comunicam direito, aumenta-se os conflitos sintticos e semnticos. Nenhum sistema pode forar umaperfeita comunicao, nenhum sistema pode detectar conflitos de semntica. Ento no h porque se entusiasmarcom falsas promessas de que um sistema de alocao evitar conflitos; na prtica, alocaes parecem restringira produtividade mais que qualquer outra cosa.

    Existe uma situao em comum onde o modelo alocar-modificar-desalocar se torna melhor, e com arquivos queno so unificveis. Por exemplo, se seu repositrio contm alguns arquivos de imagens, e duas pessoas mudama imagem ao mesmo tempo, no h nenhuma maneira de combinar as alteraes. Ou Harry ou Sally perder suaalterao.

  • Conceitos bsicos do Controle de Verso

    12

    2.2.4. O que o Subversion faz?

    Subversion usa a soluo copiar-modificar-unificar como padro, e na maioria dos casos o suficiente. Contudo, apartir da verso 1.2, Subversion tambm permite alocar um arquivo, e se existem arquivos que no so unificveis,voc pode adotar uma poltica de alocao, que o Subversion est preparado para o que voc precisa.

    2.3. Subversion em Ao2.3.1. Cpias de Trabalho

    Voc est pronto para ler sobre cpias de trabalho; agora vamos demonstrar como o aplicativo do Subversion criae usa as cpias.

    Uma cpia de trabalho do Subversion uma estrutura de diretrios como outra qualquer em seu sistema local,contendo um conjunto de arquivos. Voc pode editar esses arquivos como desejar, e se os arquivos so cdigosfonte, voc pode compilar seu programa a partir desta cpia como sempre fez. Sua cpia de trabalho sua prpriarea pessoal. Subversion nunca vai incorporar alteraes de outras pessoas, nem disponibilizar suas alteraespara outros, at que voc mesmo o faa.

    Depois que voc fez algumas modificaes nos seus arquivos em sua cpia de trabalho e verificou que estofuncionando corretamente, Subversion prov a voc comandos para publicar suas alteraes para outras pessoasque trabalham com voc em seu projeto (atravs da escrita no repositrio). Se outras pessoas publicarem suasprprias modificaes, Subversion prov comandos para unificar estas modificaes na sua cpia de trabalho(atravs da leitura do repositrio).

    Uma cpia de trabalho tambm contm alguns arquivos extras, criados e mantidos pelo Subversion, para ajudara executar os comandos. Em questo, cada diretrio da sua cpia de trabalho contm um subdiretrio chamado.svn, tambm conhecido como cpia de trabalho do diretrio administrativo. Os arquivos em cada diretrioadministrativo ajuda o Subversion a reconhecer quais arquivos possuem alteraes no publicadas, e quaisarquivos esto desatualizados em relao ao repositrio.

    Um repositrio tpico do Subversion geralmente guarda os arquivos (ou cdigo fonte) para diversos projetos;normalmente, cada projeto um subdiretrio na estrutura de arquivos do repositrio. Desta forma, uma cpia detrabalho de um usurio normalmente corresponde a uma especfica subestrutura do repositrio.

    Por exemplo, suponha que voc tenha um repositrio que contem dois projetos de software.

  • Conceitos bsicos do Controle de Verso

    13

    Figura 2.6. O Sistema de Arquivos do Repositrio

    Em outras palavras, o diretrio principal do repositrio tem dois subdiretrios: paint e calc.

    Para obter uma cpia de trabalho, voc deve obter alguma sub-estrutura do repositrio. (O termo obter podeparecer como algo que ir travar ou reservar os recursos, mas no isso; ele simplesmente cria uma cpia localdo projeto para voc.)Suponha que voc fez mudanas para button.c. J que o diretrio .svn sabe a data de modificao do arquivoe seu contedo original, Subversion pode avisar que voc fez modificaes no arquivo. Contudo, Subversion nopublica nenhuma alterao at que voc realmente o faa. O ato de publicar suas alteraes mais conhecido comosubmeter (ou enviar) modificaes para o repositrio.

    Para publicar suas modificaes para outras pessoas, voc pode usar o commando submeter do Subversion.

    Agora suas modificaes para button.c foram enviadas para o repositrio; se outro usurio obter uma cpia de/calc, eles vero suas modificaes na ltima verso do arquivo.

    Suponha que voc tenha uma colaboradora, Sally, que obteve uma cpia de /calc no mesmo momento quevoc. Quando voc submeter suas modificaes de button.c, a cpia de trabalhode Sally no ser modificada; Subversion somente modificar as cpias dosusurios que solicitarem a atualizao.

    Para atualizar seu projeto, Sally deve pedir ao Subversion para atualizar sua cpia de trabalho, atravs do comandoatualizar do Subversion. Isto incorporar sua modificao na cpia de trabalho dela, assim como qualquer outramodificao que tenha sido submetido desde que ela obteve sua cpia de trabalho.

    Note que Sally no precisou especificar quais arquivos atualizar; Subversion usa a informao do diretrio .svn,e alm disso informaes do repositrio, para decidir quais arquivos precisam ser atualizados.

  • Conceitos bsicos do Controle de Verso

    14

    2.3.2. URLs do RepositrioRepositrios do Subversion podem ser acessados atravs de vrios mtodos direfentes - como disco local, ouatravs de vrios protocolos de rede. Um local de repositrio, contudo, sempre uma URL. O esquema de URLindica o mtodo de acesso:

    Esquema Mtodo de Acessofile:// Acesso direto ao repositrio em um local ou dispositivo de rede.http:// Acesso atravs do protocolo WebDAV para o mdulo Subversion do servidor

    Apache.https:// O mesmo que http://, mas com criptografia SSLsvn:// Acesso TCP/IP no autenticado atravs do protocolo customizado para um

    servidor svnserve.svn:ssh:// acesso TCP/IP autenticado e criptografado atravs de um protocolo

    customizado para um servidor svnserve

    Tabela 2.1. URLs de Acesso ao Repositrio

    Para a maioria, URLs do Subversion usam a sintaxe padro, permitido nomes de servidores e nmeros de porta emuma parte especfica da URL. O mtodo de acesso file:// normalmente usado para acesso local, apesar deque isto pode ser usado com caminhos UNC em uma mquina da rede. A URL portanto usa o formato file://hostname/path/to/repos. Para a mquina local, a parte do hostname da URL deve ser suprimida ou deveser localhost. Por esta razo, caminhos locais normalmente aparecem com trs barras, file:///path/to/repos.

    Tambm, usurios do esquema file:// em plataformas Windows vo precisar usar uma sintaxe padrono oficial para acessar repositrios que esto na mesmo mquina, mas em um dispositivo diferente que o atualdispositivo de trabalho da mquina. Qualquer uma das duas seguintes sintaxes funcionaro onde X o dispositivono qual o repositrio est:

    file:///X:/path/to/repos...

    file:///X|/path/to/repos...

    Note que a URL usa barras normais embora a forma nativa (no URL) de um caminho no Windows seja barrainvertida.

    Voc pode garantir o acesso a um repositrio FSFS atravs de um compartilhamento de rede, mas voc no podeacessar um repositrio BDB desta forma.

    Ateno

    No crie or acesse um repositrio Berkeley DB em uma rede compartilhada. Isto no pode existirem um sistema de arquivos remoto. Nem mesmo se voc tem dispositivos de rede mapeados em umaunidade de disco. Se voc tentar usar Berkeley DB em uma rede compartilhada, os resultados soimprevisveis - voc poder ver erros misteriosos imediatamente, ou meses antes descobrir que seurepositrio est sutilmente corrompido.

    2.3.3. RevisesUm comando svn submeter pode publicar modificaes de qualquer quantidade de arquivos e diretrios comouma nica transao atmica. Em sua cpia de trabalho, voc pode mudar o conteudo de um arquivo, criar,excluir, renomear e copiar arquivos e diretrios, e depois enviar todas as modificaes como uma nica e completaalterao.

  • Conceitos bsicos do Controle de Verso

    15

    Em um repositrio, cada submisso tratada como uma transao atmica: ou todas as mudanas so enviadas, ounenhuma delas. Subversion mantm essa atomicidade por causa de falhas de programas, falhas de sistema, falhasde rede, e aes de outros usurios.

    Cada vez que o repositrio aceita uma submisso, ele cria um novo estado da estrutura de arquivos, chamada dereviso. Cada reviso associada a um nmero natural, maior que o nmero da reviso anterior. A reviso inicialde um repositrio recm criado zero, e no contm nada mais que um diretrio principal vazio.

    Uma maneira interessante de enxergar o repositrio como uma srie de estruturas. Imagine uma matriz denmeros de revises, comeando em 0, e se estendendo da esquerda para a direita. Cada nmero de reviso comuma estrutura de arquivos abaixo, e cada diviso j em seguida da maneira como o repositrio realizou cadasubmisso.

    Figura 2.7. O Repositrio

    Nmeros Globais de Reviso

    Ao contrrio de muitos outros sistemas de controle de verso, o nmero da reviso do Subversion aplicadopara a estrutura inteira, e no para os arquivos individuais. Cada nmero de reviso seleciona em umaestrutura inteira, uma estado em particular do repositrio depois de algumas alterao submetida. Outraforma de enxergar isto que a reviso N representa o estado da estrutura do repositrio depois da ensimasubmisso. Quando o usurio do Subversion fala sobre a ` `reviso 5 do foo.c", eles realmente querem dizer``foo.c como est na reviso 5." Repare que em geral, revises N e M de um arquivo no necessariamenteso diferentes.

    importante notar que cpias de trabalho nem sempre correspondem a uma nica reviso qualquer no repositrio;eles podem conter arquivos de diferentes revises. Por exemplo, suponha que voc obteve uma cpia de trabalhode um repositrio do qual a reviso mais recente a 4:

    calc/Makefile:4 integer.c:4 button.c:4

  • Conceitos bsicos do Controle de Verso

    16

    Neste momento, esta cpia de trabalho corresponde exatamente reviso 4 no repositrio. Entretanto, suponha quevoc fez modificaes em button.c, e submeteu essas alteraes. Assumindo que no houve nenhuma outrasubmisso, o envio vai criar a reviso 5 no repositrio, e sua cpia de trabalho vai se parecer com isto:

    calc/Makefile:4 integer.c:4 button.c:5

    Suponha que, neste momento, Sally envia uma alterao do integer.c, criando a reviso 6. Se voc usar o svnatualizar para atualizar sua cpia de trabalho, ento voc ter algo como isto:

    calc/Makefile:6 integer.c:6 button.c:6

    As modificaes de Sally para integer.c vo aparecer em sua cpia de trabalho, e sua alterao vai continuarpresente em button.c. Neste exemplo, o texto de Makefile identifico nas revises 4, 5 e 6, mas Subversionvai marcar sua cpia de trabalho do Makefile com a reviso 6 indicando que ainda a verso atual. Ento,depois que voc completou todas as atualizaes na sua cpia de trabalho, isto geralmente corresponder a umaexata reviso do repositrio.

    2.3.4. Como Cpia de Trabalho Acompanham o RepositrioPara cada arquivo do diretrio de trabalho, Subversion grava duas partes essenciais da informao na reaadministrativa .svn/:

    qual reviso o arquivo da sua cpia de trabalho esta baseado (isto chamado de reviso de trabalho do arquivo),e

    a informao de data/hora de quando foi a ltima atualizao da cpia do repositrio.

    Com estas informao, atravs de troca de informaes com o repositrio, Subversion pode identificar qual dosquatro estados seguintes o estado de um arquivo:

    No modificado, e atualizadoO arquivo no foi modificado na cpia de trabalho, e nenhuma nova modificao foi submetida no repostrioconsiderando a reviso de trabalho. Um submetero> do arquivo natualizar do arquivo tamb

    Localmente alterado, e atualizadoO arquivo possui modificaes no diretrio de trabalho, e nenhuma modificao para o arquivo foi enviadapara o repositrio considerando a reviso atual. Existem alteraes que no foram submetidas para orepositrio, deste modo um submeter do arquivo vai obter sucesso ao publicar suas alteraes, e um atualizardo arquivo no far nada.

    No modificado, e desatualizadoO arquivo no possui alteraes no diretrio de trabalho, mas h modificaes no repositrio. O arquivodever eventualmente ser atualizado, para sincronizar com a reviso publica. Um submeter do arquivo nofar nada, e um atualizar do arquivo trar as ltimas alteraes para a cpia local.

    Localmente modificado, e desatualizadoO arquivo possui mo