You are on page 1of 221

TortoiseSVN

Cliente de Subversion para Windows Verso 1.6.10

Stefan Kng Lbbe Onken Simon Large

TortoiseSVN: Cliente de Subversion para Windows: Verso 1.6.10


por Stefan Kng, Lbbe Onken e Simon Large Publicado 2010/03/31 16:00:35 (r19115)

ndice
Prefcio .......................................................................................................................... xi 1. Audincia ............................................................................................................ xi 2. Guia de Leitura .................................................................................................... xi 3. O TortoiseSVN grtis! ....................................................................................... xii 4. Comunidade ....................................................................................................... xii 5. Agradecimentos ................................................................................................... xii 6. Terminologia utilizada neste documento .................................................................. xii 1. Introduo .................................................................................................................... 1 1.1. O que o TortoiseSVN? ...................................................................................... 1 1.2. A histria do TortoiseSVN ................................................................................... 1 1.3. Funcionalidades do TortoiseSVN ........................................................................... 1 1.4. Instalando o TortoiseSVN .................................................................................... 2 1.4.1. Requesitos de sistema ............................................................................... 2 1.4.2. Instalao ................................................................................................ 3 1.4.3. Pacotes de Linguas ................................................................................... 3 1.4.4. Corretor Ortogrfico ................................................................................. 3 2. Conceitos Bsicos de Controlo de Verses ......................................................................... 5 2.1. O Repositrio ..................................................................................................... 5 2.2. Modelos de Controlo de Verses ........................................................................... 5 2.2.1. O Problema da Partilha de Ficheiros ............................................................ 6 2.2.2. A Soluo Bloquear-Modificar-Desbloquear .................................................. 6 2.2.3. A soluo Copiar-Modificar-Integrar ............................................................ 8 2.2.4. O que faz o Subversion? .......................................................................... 10 2.3. O Subversion em Aco ..................................................................................... 10 2.3.1. Cpias de Trabalho. ................................................................................ 10 2.3.2. URLs do Repositrio ............................................................................... 12 2.3.3. Revises ................................................................................................ 12 2.3.4. Como as Cpias de Trabalho Seguem o Repositrio ...................................... 14 2.4. Resumo ........................................................................................................... 15 3. O Repositrio ............................................................................................................. 16 3.1. Criao do Repositrio ....................................................................................... 16 3.1.1. Criar um Repositrio com o Cliente de Linha de Comandos ............................ 16 3.1.2. Criar O Repositrio Com o TortoiseSVN .................................................... 16 3.1.3. Acesso Local ao Repositrio ..................................................................... 17 3.1.4. Aceder ao Repositrio numa Partilha de Rede .............................................. 17 3.1.5. Estrutura do Repositrio .......................................................................... 18 3.2. Cpia de Segurana do Repositrio ...................................................................... 19 3.3. Scripts de gancho de servidor .............................................................................. 20 3.4. Ligaes de Checkout ........................................................................................ 20 3.5. Aceder ao Repositrio ........................................................................................ 21 3.6. Servidor Baseado em Svnserve ........................................................................... 21 3.6.1. Introduo ............................................................................................. 21 3.6.2. Instalar o svnserve .................................................................................. 21 3.6.3. Executar o svnserver ............................................................................... 22 3.6.4. Autenticao Bsica com o svnserve .......................................................... 24 3.6.5. Segurana Melhorada com SASL ............................................................... 25 3.6.6. Autenticao com svn+ssh ........................................................................ 26 3.6.7. Autorizao com o svnserve baseada em Caminhos ....................................... 26 3.7. Servidor Baseado em Apache .............................................................................. 26 3.7.1. Introduo ............................................................................................. 26 3.7.2. Instalar o Apache .................................................................................... 27 3.7.3. Instalar o Subversion ............................................................................... 28 3.7.4. Configurao ......................................................................................... 28 3.7.5. Repositrios Mltiplos ............................................................................. 30 3.7.6. Autorizao Baseada-em-Caminhos ............................................................ 31

iii

TortoiseSVN

3.7.7. Autenticao Com um Domnio Windows ................................................... 3.7.8. Mltiplas Fontes de Autenticao .............................................................. 3.7.9. Proteger o servidor com SSL .................................................................... 3.7.10. Usando certificador cliente com hospedeiros SSL virtuais. ............................ 4. Guia de Uso Dirio ...................................................................................................... 4.1. Comeando ...................................................................................................... 4.1.1. Sobreposio de cones ............................................................................ 4.1.2. Menus de Contexto ................................................................................. 4.1.3. Arrastar e Largar .................................................................................... 4.1.4. Atalhos comuns ...................................................................................... 4.1.5. Autenticao .......................................................................................... 4.1.6. Maxiizando Janelas ................................................................................. 4.2. Importando Dados Para Um Repositrio ................................................................ 4.2.1. Importar ................................................................................................ 4.2.2. Importar no local .................................................................................... 4.2.3. Ficheiros Especiais .................................................................................. 4.3. SVN Exportar Para Uma Cpia de Trabalho .......................................................... 4.3.1. Profundidade do Checkout ........................................................................ 4.4. Submetendo as tuas alteraes para o Repositrio ................................................... 4.4.1. A Caixa de Dilogo Submeter ................................................................... 4.4.2. Listas de Alteraes ................................................................................ 4.4.3. Excluir itens da lista a Submeter ................................................................ 4.4.4. Mensagens de Registo de Submeter ............................................................ 4.4.5. Progresso do Submeter ............................................................................ 4.5. Actualizar a Tua Cpia de Trabalho Com Alteraes de Outros .................................. 4.6. Resolvendo Conflitos ......................................................................................... 4.6.1. Conflitos de Ficheiro ............................................................................... 4.6.2. Conflitos de rvore ................................................................................ 4.7. Obter informao de Estado ................................................................................ 4.7.1. Sobreposio de cones ............................................................................ 4.7.2. Colunas TortoiseSVN no Explorador do Windows ........................................ 4.7.3. Estado Remoto e Local ............................................................................ 4.7.4. Vendo diferenas .................................................................................... 4.8. Listas de Alteraes ........................................................................................... 4.9. Caixa de Dilogo Registo de Revises .................................................................. 4.9.1. Invocando a Caixa de Dilogo Registo de Reviso ........................................ 4.9.2. Aces de Registo de Revises ................................................................. 4.9.3. Obtendo Informao Adicional .................................................................. 4.9.4. Obtendo mais mensagens de registo ........................................................... 4.9.5. Reviso Actual da Cpia de Trabalho ......................................................... 4.9.6. Funcionalidades de Rastreamento de Integrao ............................................ 4.9.7. Alterando a Mensagem de Registo e Autor .................................................. 4.9.8. Filtrando Mensagens de Registo ................................................................ 4.9.9. Informao Estatstica .............................................................................. 4.9.10. Modo Fora de Linha .............................................................................. 4.9.11. Refrescar a Vista .................................................................................. 4.10. Ver Diferenas ................................................................................................ 4.10.1. Diferenas em ficheiros .......................................................................... 4.10.2. Opes de Fim-de-Linha e Espaos-Brancos .............................................. 4.10.3. Comparando Pastas ............................................................................... 4.10.4. Comparando Imagens usando o TortoiseDiff .............................................. 4.10.5. Ferramentas de Comparao/Integrao ..................................................... 4.11. Adicionar Novos Ficheiros e Pastas .................................................................... 4.12. Copiando/Movendo/Renomeando Ficheiros e Pastas ............................................... 4.13. Ignorando Ficheiros E Pastas ............................................................................. 4.13.1. Correspondncia de Padres em Listas de Ignorados .................................... 4.14. Removendo, Movendo e Renomeando ................................................................. 4.14.1. Removendo ficheiros e pastas ..................................................................

31 33 34 36 37 37 37 37 39 40 40 41 41 41 43 43 44 44 46 46 49 49 49 51 52 54 54 55 58 58 59 60 62 62 64 65 65 66 70 71 71 72 73 73 77 77 77 78 79 79 81 82 82 83 84 85 86 87

iv

TortoiseSVN

4.14.2. Movendo ficheiros e pastas ..................................................................... 88 4.14.3. Mudando maisculas e minsculas no nome do ficheiro ................................ 89 4.14.4. Lidando com conflitos de maisculas e minsculas no nome do ficheiro ........... 89 4.14.5. Reparando Renomeaes de Ficheiros ....................................................... 89 4.14.6. Removendo Ficheiros No Versionados ..................................................... 90 4.15. Desfazer Alteraes ......................................................................................... 90 4.16. Limpar ........................................................................................................... 91 4.17. Configuraes de Projecto ................................................................................. 91 4.17.1. Propriedades Subversion ......................................................................... 92 4.17.2. Propriedades de Projecto TortoiseSVN ...................................................... 96 4.18. Itens Externos ................................................................................................. 98 4.18.1. Pastas Externas ..................................................................................... 98 4.18.2. Ficheiros Externos ............................................................................... 100 4.19. Ramificando/Etiquetando ................................................................................. 100 4.19.1. Criando um Ramo ou Etiqueta ............................................................... 101 4.19.2. SVN Exportar ou Trocar... .................................................................... 102 4.20. Integrar ........................................................................................................ 103 4.20.1. A Integrar Um Intervalo de Revises ...................................................... 105 4.20.2. Reintegrar um ramo ............................................................................. 106 4.20.3. A Integrar Duas rvores Diferentes ........................................................ 107 4.20.4. Opes de Integrao ........................................................................... 108 4.20.5. Rever os Resultados de Integrao .......................................................... 109 4.20.6. Rastreamento de Integrao ................................................................... 110 4.20.7. Lidando com Conflitos durante a Integrao ............................................. 110 4.20.8. Integrar um Ramo Completo ................................................................. 111 4.20.9. Manuteno do Ramo de Funcionalidade ................................................. 112 4.21. A bloquear .................................................................................................... 112 4.21.1. Como Funciona o Sistema de Bloqueio no Subversion ................................ 113 4.21.2. Obter um Bloquieo .............................................................................. 113 4.21.3. Libertar um Bloqueio ........................................................................... 114 4.21.4. Verificar o Estado dos Bloqueio ............................................................. 115 4.21.5. Tornar os Ficheiros No-Bloqueados S de Leitura .................................... 115 4.21.6. Os Scripts do Gancho de Bloqueio ......................................................... 116 4.22. Criar e Applicar Correces ............................................................................. 116 4.22.1. Criar um Ficheiro de Correco ............................................................. 116 4.22.2. Aplicar um Ficheiro de Correco .......................................................... 117 4.23. Quem Alterou Que Linha ................................................................................ 117 4.23.1. Responsabilidade para Ficheiros ............................................................. 118 4.23.2. Diferenas de responsabilidade .............................................................. 120 4.24. O Navegador de Repositrio ............................................................................ 120 4.25. Grficos de Revises ...................................................................................... 123 4.25.1. Ns do Grfico de Revises .................................................................. 124 4.25.2. Alterando a Vista ................................................................................ 124 4.25.3. Utilizar o Grfico ................................................................................ 126 4.25.4. Refrescar a Vista ................................................................................. 127 4.25.5. Podar as rvores ................................................................................. 127 4.26. Exportar uma Cpia de Trabalho do Subversion .................................................. 127 4.26.1. Remover uma cpia de trabalho do controlo de verses ............................... 129 4.27. Reposicionar uma cpia de trabalho .................................................................. 129 4.28. Integrao com Sistemas de controlo de problemas/Gestores de Problemas ................ 130 4.28.1. Adicionar Nmeros de Problemas nas Mensagens de Registo ....................... 130 4.28.2. Obter Informaes do Gestor de Problemas .............................................. 133 4.29. Integrao com visualizadores de repositrio Web-based ....................................... 134 4.30. Preferncias do TortoiseSVN ........................................................................... 135 4.30.1. Preferncias Gerais .............................................................................. 135 4.30.2. Preferncias do Grfico de Revises ....................................................... 143 4.30.3. Preferncias de Sobreposio de cones ................................................... 146 4.30.4. Preferncias de Rede ............................................................................ 149

TortoiseSVN

4.30.5. Preferncias de Programas Externos ........................................................ 4.30.6. Preferncias de Dados Guardados ........................................................... 4.30.7. Cache de Registo ................................................................................ 4.30.8. Scripts de Gancho do Lado do Cliente ..................................................... 4.30.9. Preferncias do TortoiseBlame ............................................................... 4.30.10. Registry Settings ................................................................................ 4.30.11. Pastas de Trabalho do Subversion ......................................................... 4.31. Passo Final ................................................................................................... 5. O Programa SubWCRev ............................................................................................. 5.1. A Linha de Comando SubWCRev ...................................................................... 5.2. Substituio de Palavra-Chave ........................................................................... 5.3. Exemplo de Palavra-Chave ................................................................................ 5.4. Interface COM ................................................................................................ 6. Interface IBugtraqProvider ........................................................................................... 6.1. O interface do IBugtraqProvider ......................................................................... 6.2. A interface IBugtraqProvider2 ........................................................................... A. Questes Mais Frequentes (FAQ) ................................................................................. B. Como Farei Para... ..................................................................................................... B.1. Mover/copiar muitos ficheiros de uma vez s ....................................................... B.2. Forar utilizadores a introduzir uma mensagem de registo ....................................... B.2.1. Script-gancho no servidor ...................................................................... B.2.2. Propriedades do projecto ........................................................................ B.3. Actualizar ficheiros seleccionados a partir do repositrio ........................................ B.4. Reverter (Anular) revises no repositrio ............................................................ B.4.1. Usar a caixa de dilogo registo de reviso ................................................. B.4.2. Usa a caixa de dilogo integrar ............................................................... B.4.3. Usa o svndumpfilter ....................................................................... B.5. Comparar duas revises de um ficheiro ou pasta ................................................... B.6. Incluir um subprojecto comum .......................................................................... B.6.1. Usa o svn:externals ............................................................................... B.6.2. Usar uma cpia de trabalho aninhada. ...................................................... B.6.3. Usa uma localizao relativa ................................................................... B.7. Criar um atalho para um repositrio ................................................................... B.8. Ignorar ficheiros que j esto versionados ............................................................ B.9. Remover uma cpia de trabalho do controlo de verses .......................................... B.10. Remover uma cpia de trabalho ....................................................................... C. Dicas teis para Administradores ................................................................................. C.1. Instalar o TortoiseSVN via politicas de grupo ....................................................... C.2. Redireccionar a verificao de actualizao .......................................................... C.3. Configurar a varivel de ambiente SVN_ASP_DOT_NET_HACK .............................. C.4. Desactivar entradas do menu de contexto ............................................................ D. Automatizar o TortoiseSVN ........................................................................................ D.1. Comandos TortoiseSVN ................................................................................... D.2. Comandos TortoiseIDiff ................................................................................... E. Referncia Cruzada da Interface de Linha de Comandos ................................................... E.1. Convenes e Regras Bsicas ............................................................................ E.2. Comandos TortoiseSVN ................................................................................... E.2.1. Checkout ............................................................................................. E.2.2. Actualizar ............................................................................................ E.2.3. Actualizar para Reviso ......................................................................... E.2.4. Submeter ............................................................................................. E.2.5. Comparar ............................................................................................ E.2.6. Mostrar Registo .................................................................................... E.2.7. Verificar Modificaes .......................................................................... E.2.8. Grfico de Revises .............................................................................. E.2.9. Navegador de Repositrio ...................................................................... E.2.10. Editar Conflitos .................................................................................. E.2.11. Resolvido ..........................................................................................

151 154 155 159 163 163 165 165 166 166 166 167 168 171 171 172 175 176 176 176 176 177 177 177 177 177 178 178 178 178 179 179 180 180 180 180 181 181 181 182 182 184 184 187 189 189 189 189 189 190 190 190 191 191 191 191 192 192

vi

TortoiseSVN

E.2.12. Alterar nome ...................................................................................... E.2.13. Remover ............................................................................................ E.2.14. Reverter ............................................................................................ E.2.15. Limpar .............................................................................................. E.2.16. Obter "Lock" ...................................................................................... E.2.17. Libertar "Lock" ................................................................................... E.2.18. Ramo/Etiqueta .................................................................................... E.2.19. Trocar ............................................................................................... E.2.20. Integrar ............................................................................................. E.2.21. Exportar ............................................................................................ E.2.22. Reposicionar ...................................................................................... E.2.23. Criar Repositrio Aqui ......................................................................... E.2.24. Adicionar ........................................................................................... E.2.25. Importar ............................................................................................ E.2.26. Responsabilizar ................................................................................... E.2.27. Addicionar list de tems a ignorar ........................................................ E.2.28. Criar Correco .................................................................................. E.2.29. Aplicar Correco ............................................................................... F. Detalhes de Implementao ......................................................................................... F.1. Sobreposio de cones .................................................................................... G. Protegendo o Svnserve ao usar o SSH ........................................................................... G.1. Configurao de um Servidor Linux ................................................................... G.2. Configurar um Servidor Windows ...................................................................... G.3. Ferramentas de cliente SSH para uso com o TortoiseSVN ...................................... G.4. Criao de certificados OpenSSH ...................................................................... G.4.1. Criar chaves com o ssh-keygen ............................................................... G.4.2. Criar chaves usando o PuTTYgen ............................................................ G.5. Testar com o PuTTY ....................................................................................... G.6. Testar SSH com o TortoiseSVN ........................................................................ G.7. Variantes da Configurao do SSH .................................................................... Glossrio ...................................................................................................................... ndice Remissivo ...........................................................................................................

192 192 192 192 192 193 193 193 193 193 194 194 194 194 194 194 194 194 195 195 197 197 197 198 198 198 198 198 199 200 202 206

vii

Lista de Figuras
2.1. Um sistema tpico Cliente/Servidor ................................................................................ 5 2.2. O Problema a Evitar .................................................................................................... 6 2.3. A Soluo Bloquear-Modificar-Desbloquear .................................................................... 7 2.4. A soluo Copiar-Modificar-Integrar .............................................................................. 8 2.5. ...Continuao do Copiar-Modificar-Integrar .................................................................... 9 2.6. O Sistema de Ficheiros do Repositrio .......................................................................... 11 2.7. O Repositrio ........................................................................................................... 13 3.1. O menu TortoiseSVN para pastas no versionadas .......................................................... 16 4.1. O explorador mostrando os cones sobrepostos ............................................................... 37 4.2. Menu de Contexto de uma pasta sob controlo de verses. ................................................. 38 4.3. Menu de ficheiro do Explorador para um atalho numa pasta versionada. .............................. 39 4.4. Menu arrastar com o boto direito para uma pasta sob controlo de verses. ........................... 40 4.5. Caixa de dilogo de autenticao ................................................................................. 41 4.6. Caixa de dilogo Importar .......................................................................................... 42 4.7. A caixa de dilogo Checkout ...................................................................................... 44 4.8. A Caixa de Dilogo Submeter ..................................................................................... 47 4.9. A Verificao de Sintaxe na Caixa de Dilogo Submeter .................................................. 50 4.10. A caixa de dialogo de Progresso, mostrando a submisso em progresso .............................. 51 4.11. Caixa de dilogo de progresso mostrando uma actualizao finalizada. .............................. 52 4.12. O explorador mostrando os cones sobrepostos .............................................................. 58 4.13. Verificar Modificaes ............................................................................................. 60 4.14. Caixa de dilogo Submeter com Listas de Alteraes ..................................................... 63 4.15. A Caixa de Dilogo Registo de Reviso ...................................................................... 65 4.16. O Painel de Topo da Caixa de Dilogo Registo de Revises com Menu de Contexto ............. 66 4.17. Menu de Contexto do Painel Superior para 2 revises seleccionadas .................................. 68 4.18. O Painel de fundo da Caixa de Dilogo Registo com o Menu de Contexto .......................... 69 4.19. A Caixa de Dilogo Registo Mostra Rasto das Revises de Integrao ............................... 72 4.20. Histograma de Submisses-por-Autor .......................................................................... 74 4.21. Grfico de queijo Submisses-por-Autor ...................................................................... 75 4.22. Grfico de Submisses-por-data ................................................................................. 76 4.23. Caixa de dilogo Colocar-se em Fora de Linha ............................................................. 77 4.24. A Caixa de Dilogo Comparar Revises ...................................................................... 80 4.25. O leitor de diferenas de imagem ............................................................................... 81 4.26. Menu de contexto do Explorador para ficheiros no versionados ....................................... 83 4.27. Menu arrastar com o boto direito para uma pasta sob controlo de verses. ......................... 84 4.28. Menu de contexto do Explorador para ficheiros no versionados ....................................... 85 4.29. Menu de contexto do Explorador para ficheiros versionados ............................................ 87 4.30. Caixa de Dilogo Reverter ........................................................................................ 90 4.31. Pgina de propriedades do explorador, aba do Subversion ............................................... 92 4.32. Pgina de propriedades do Subversion ......................................................................... 93 4.33. Adicionando propriedades ......................................................................................... 94 4.34. A Caixa de Dilogo de Ramificar/Etiquetar ................................................................ 101 4.35. A Caixa de Dilogo Trocar ...................................................................................... 103 4.36. O Assistente de Integrao - Seleciona o Intervalo de Revises ....................................... 105 4.37. O Assistente de Integrao - Integrao para Reintegrar ................................................ 107 4.38. O Assistente de Integrao - Integrao de rvores ...................................................... 108 4.39. A Caixa de Dilogo Conflitos de Integrao ............................................................... 111 4.40. Caixa de Dilogo de reintegrao de Integrao ........................................................... 112 4.41. A Caixa de Dilogo Bloquear .................................................................................. 114 4.42. A Caixa de Dilogo Verificar Alteraes .................................................................... 115 4.43. A caixa de dilogo de Criar Correco ...................................................................... 116 4.44. A Caixa de Dilogo de Anotar/Responsabilizar ........................................................... 118 4.45. TortoiseBlame ....................................................................................................... 119 4.46. O Navegador de Repositrio .................................................................................... 121 4.47. O Grfico de Revises ............................................................................................ 123

viii

TortoiseSVN

4.48. A Caixa de Dilogo Exportar-do-URL ....................................................................... 4.49. A Caixa de Dilogo Reposicionar ............................................................................. 4.50. Caixa de dilogo de exemplo da consulta ao gestor de problemas .................................... 4.51. A Caixa de Dilogo Preferncias, Pgina Geral ........................................................... 4.52. A Caixa de Dilogo Preferncias, Pgina Menu de Contexto .......................................... 4.53. A Caixa de Dilogo Preferncias, Pgina Dilogos 1 .................................................... 4.54. A Caixa de Dilogo Preferncias, Pgina Dilogos 2 .................................................... 4.55. A Caixa de Dilogo Preferncias, Pgina de Cores ....................................................... 4.56. A Caixa de Dilogo Preferncias, Pgina Grfico de Revises ........................................ 4.57. A Caixa de Dilogo preferncias,Pgina Cores do Grfico de Revises ............................. 4.58. A Caixa de Dilogo Preferncias, Pgina Sobreposio de cones .................................... 4.59. A Caixa de Dilogo preferncias, Pgina Conjunto de cones ......................................... 4.60. A Caixa de Dilogo Preferncias, Pgina de Rede ........................................................ 4.61. A Caixa de Dilogo Preferncias, Pgina Visualizador de Comparao ............................. 4.62. A Caixa de Dilogo Preferncias, Caixa de Dilogo Comparar/Integrar Avanados ............. 4.63. A Caixa de Dilogo, Pgina de Dados Guardados ........................................................ 4.64. A Caixa de Dilogo Preferncias, Pgina Cache de Registo ............................................ 4.65. A Caixa de Dilogo Preferncias, Estatsticas da Cache de Registo .................................. 4.66. A Caixa de Dilogo Preferncias, Pgina Scripts de Gancho .......................................... 4.67. A Caixa de Dilogo Preferncias, Configurar Scripts de Gancho ..................................... 4.68. A Caixa de Dilogo Preferncias, Pgina Integrao com Controlador de Problemas ........... 4.69. A Caixa de Dilogo Preferncias, Pgina do TortoiseBlame ........................................... C.1. A Caixa de Dilogo Actualizao ..............................................................................

128 129 134 136 138 139 141 142 143 144 146 149 150 151 153 154 156 158 159 160 162 163 181

ix

Lista de Tabelas
2.1. URLs de Acesso ao Repositrio .................................................................................. 12 3.1. Configuraes do httpd.conf do Apache .................................................................. 29 5.1. Lista de opes de linha de comando disponveis .......................................................... 166 5.2. Mtodos COM/automao suportados .......................................................................... 168 C.1. Entradas de menu e seus valores ................................................................................ 182 D.1. Lista de comandos e opes disponveis ...................................................................... 185 D.2. Lista de opes disponveis ...................................................................................... 187

Prefcio

Trabalhas numa equipa? Has it ever happened that you were working on a file, and someone else was working on the same file at the same time? Did you lose your changes to that file because of that? Have you ever saved a file, and then wanted to revert the changes you made? Have you ever wished you could see what a file looked like some time ago? Have you ever found a bug in your project and wanted to know when that bug got into your files? If you answered yes to one of these questions, then TortoiseSVN is for you! Just read on to find out how TortoiseSVN can help you in your work. It's not that difficult.

1. Audincia
This book is written for computer literate folk who want to use Subversion to manage their data, but are uncomfortable using the command line client to do so. Since TortoiseSVN is a windows shell extension it's assumed that the user is familiar with the windows explorer and knows how to use it.

2. Guia de Leitura
This Prefcio explains a little about the TortoiseSVN project, the community of people who work on it, and the licensing conditions for using it and distributing it. The Captulo 1, Introduo explains what TortoiseSVN is, what it does, where it comes from and the basics for installing it on your PC. No Captulo 2, Conceitos Bsicos de Controlo de Verses ns damos uma curta introduo ao sistema de controle de verses Subversion que est na base do TortoiseSVN. Esta emprestada da documentao do projecto do Subversion, e explica as diferentes abordagens ao controlo de verses e como funciona o Subversion. O capitulo no Captulo 3, O Repositrio explica como instalar um repositrio local, que til para testar o Subversion e o TortoiseSVN usando um s PC. Tambm explica um pouco sobre a administrao do repositrio, que tambm relevante para os repositrios localizados num servidor. Existe tambm uma seco em como instalar um servidor, se precisares de um. O Captulo 4, Guia de Uso Dirio o captulo mais importante, j que explica as principais funcionalidades do TortoiseSVN e como us-las. Toma a forma de um tutorial, partindo assim do checkout de uma cpia de trabalho, modific-la, submeter as tuas alteraes, etc. Ento avana-se para tpicos mais avanados. O Captulo 5, O Programa SubWCRev um programa separado e includo com o TortoiseSVN, que pode extrair informao a partir da tua cpia de trabalho e escrev-la num ficheiro. Isto til para incluir informao de construo (build) nos teus projectos. A seco Apndice B, Como Farei Para... responde a algumas questes mais comuns, sobre a execuo de tarefas que no esto explicitamente cobertas noutros lados. A seco no Apndice D, Automatizar o TortoiseSVN explica como podem ser chamadas a partir da linha de comandos as caixas de dilogo do Interface grfico (GUI) do TortoiseSVN. Isto til para scripting, onde ainda podes necessitar de interaco com o utilizador.

xi

Prefcio

O Apndice E, Referncia Cruzada da Interface de Linha de Comandos d uma correlao entre os comandos do TortoiseSVN e os seus equivalentes no cliente de linha de comandos do Subversion svn.exe.

3. O TortoiseSVN grtis!
TortoiseSVN is free. You don't have to pay to use it, and you can use it any way you want. It is developed under the GNU General Public License (GPL). TortoiseSVN is an Open Source project. That means you have full read access to the source code of this program. You can browse it on this link http://code.google.com/p/tortoisesvn/source/browse/. You will be prompted to enter username and password. The username is guest, and the password must be left blank. The most recent version (where we're currently working) is located under /trunk/, and the released versions are located under /tags/.

4. Comunidade
Both TortoiseSVN and Subversion are developed by a community of people who are working on those projects. They come from different countries all over the world and work together to create wonderful programs.

5. Agradecimentos
Tim Kemp por ter fundado o projecto TortoiseSVN Stefan Kng for the hard work to get TortoiseSVN to what it is now Lbbe Onken pelos cones maravilhosos, logo, caa ao erro, traduo e gesto das tradues Simon Large for helping with the documentation and bug hunting O livro sobre Subversion pela excelente introduo a Subversion e ao captulo 2 que copiamos aqui O projecto de Estilo da Tigris por algums dos estilos reutilizados nesta documentao Os nossos contribuintes for the patches, bug reports and new ideas, and for helping others by answering questions on our mailing list. Os nossos doadores por muitas horas de prazer com a musica que nos enviaram

6. Terminologia utilizada neste documento


Para tornar mais fcil a leitura dos documentos, os nomes de todos os crans e Menus do TortoiseSVN esto escritos com um tipo de letra diferente. Por exemplo a Caixa de Dilogo Registo. O menu escolhido indicado com uma seta. TortoiseSVN Mostrar Registo significa: selecciona Mostrar Registo a partir do menu de contexto TortoiseSVN. Onde aparece um menu de contexto local, no interior de uma das caixas de dilogo do TortoiseSVN, ele mostrado do seguinte modo: Menu Contexto Guardar como ...

xii

Prefcio

Os botes do interface de utilizador so indicados da seguinte maneira: Premir OK para continuar. Aces do Utilizador so indicadas com fonte a negrito. Alt+A: premir a tecla Alt no teu teclado e enquanto a primes, prime tambm a tecla A. Arrasto-direito: premir o boto direito do rato e enquanto o primes arrasta os itens para a nova localizao. A sada do sistema e a entrada do teclado tambm indicado com um tipo de letra diferente.

Importante
As notas importantes esto marcadas com um cone.

Dica
Dicas que te facilitam a vida.

Cuidado
Lugares onde preciso cuidado com o que fazes.

Ateno
Where extreme care has to be taken, data corruption or other nasty things may occur if these warnings are ignored.

xiii

Captulo 1. Introduo
O controlo de verses a arte de gerir modificaes na informao. Desde h muito, tem sido uma ferramenta crtica para os programadores que usualmente efectuam pequenas alteraes no software e, desfazem ou confirmam algumas dessas alteraes no dia seguinte. Imaginem uma equipa desses desenvolvedores a trabalhar concorrentemente - e at talvez em simultneo nos mesmos ficheiros! - e podes ver o porqu da necessidade de um bom sistema para gerir o caos potencial.

1.1. O que o TortoiseSVN?


TortoiseSVN is a free open-source client for the Subversion version control system. That is, TortoiseSVN manages files and directories over time. Files are stored in a central repository. The repository is much 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 a sort of time machine. Alguns sistemas de controlo de verses so tambm sistemas de software configuration management (SCM). Estes sistemas so especificamente desenhados para gerir arvores de cdigo fonte e tm muitas funcionalidades que so especficas ao desenvolvimento de software; como compreender nativamente as linguagens de programao, ou fornecerem ferramentas para construir (build) software. O Subversion no entanto no um desses sistemas; um sistema genrico que pode ser utilizado para gerir qualquer coleco de ficheiros, incluindo os de cdigo fonte.

1.2. A histria do TortoiseSVN


In 2002, Tim Kemp found that Subversion was a very good version control system, but it lacked a good GUI client. The idea for a Subversion client as a Windows shell integration was inspired by the similar client for CVS named TortoiseCVS. Tim studied the source code of TortoiseCVS and used it as a base for TortoiseSVN. He then started the project, registered the domain tortoisesvn.org and put the source code online. During that time, Stefan Kng was looking for a good and free version control system and found Subversion and the source for TortoiseSVN. Since TortoiseSVN was still not ready for use then he joined the project and started programming. Soon he rewrote most of the existing code and started adding commands and features, up to a point where nothing of the original code remained. As Subversion became more stable it attracted more and more users who also started using TortoiseSVN as their Subversion client. The user base grew quickly (and is still growing every day). That's when Lbbe Onken offered to help out with some nice icons and a logo for TortoiseSVN. And he takes care of the website and manages the translation.

1.3. Funcionalidades do TortoiseSVN


O que torna o TortoiseSVN um bom cliente Subversion? Aqui vai uma pequena lista de funcionalidades: Integrao na "shell" TortoiseSVN integrates seamlessly into the Windows shell (i.e. the explorer). This means you can keep working with the tools you're already familiar with. And you do not have to change into a different application each time you need functions of the version control! And you are not even forced to use the Windows Explorer. TortoiseSVN's context menus work in many other file managers, and in the File/Open dialog which is common to most standard Windows applications. You should, however, bear in mind that TortoiseSVN is intentionally developed as extension for the Windows Explorer. Thus it is possible that in other applications the integration is not as complete and e.g. the icon overlays may not be shown.

Introduo

Soberposio de cones O estado de cada ficheiro e pasta versionada ndicado atravs de pequenos cones sobrepostos. Desta maneira possvel visualizar de imediato o estado da tua cpia de trabalho. Accesso fcil aos comandos do Subversion Toldos os comandos do Subervision esto disponveis atravs do menu de contexto do explorador. O TortoiseSVN adiciona aqui o seu sub-menu. Sendo o TortoiseSVN um cliente do Subversion, gostaramos tambm de mostrar algumas das funcionalidades especficas do Subversion: Versionamento de Pastas O CVS s segue o histrico de ficheiros individuais, mas o Subversion mplementa um sistema virtual de ficheiros versionados que segue as alteraes em todo o sistema de ficheiros ao longo do tempo. Ficheiros e pastas so versionadas. Como resultado, existem comandos reais do lado do cliente de, mover e copiar que actuam em ficheiros e pastas. Submisses atmicas Uma submisso para o repositrio ou executada por completo ou no o de todo. Este comportamento permite aos desenvolvedores construir e submeter alteraes para o repositrio como blocos lgicos. Metadata versionada Cada ficheiro ou pasta possuem um conjunto invisvel de propriedades agarrados a si. Poders ento inventar e armazenar qualquer conjunto arbitrrio de pares chave/valor que desejes. Propriedades so versionadas ao longo do tempo tal como os contedos dos ficheiros. Escolha de camadas de rede O Subversion tem uma noo abstracta do acesso ao repositrio, tornando fcil para as pessoas a implementao de novos mecanismos de rede. O servidor de rede avanado do Subversion um mdulo para o servidor web Apache, que fala uma variante do protocolo HTTP, chamado WebDAV/DeltaV. Isto d ao Subversion uma grande vantagem em estabilidade e interoperabilidade e fornece vrias funcionalidades chave gratuitamente: autenticao, autorizao, compresso em linha e navegao de repositrio, por exemplo. Um processo de servidor Subversion mais pequeno e autnomo tambm providenciado. Este servidor fala um protocolo customizado que pode ser facilmente tunelizado atravs de ssh. Processamento consistente de dados O Subervision exprime as diferenas nos ficheiros usando uma algoritmo de diferencial binrio, que funciona de modo igual tanto para ficheiros de texto (legveis para humanos) e ficheiros binrios (ilegveis para humanos). Ambos os tipos de ficheiros esto armazenados de igual modo, e comprimidos, no repositrio e as diferenas so transmitidas em ambas as direces atravs da rede. Ramificao e etiquetao eficiente O custo de ramificao e etiquetao no precisa de ser proporcional dimenso do projecto. O Subversion cria ramos e etiquetas atravs da simples cpia do projecto utilizando um mecanismo semelhante a um hard-link. Sendo assim, estas operaes necessitam de apenas de uma pequena e constante fraco de tempo , necessitando de muito pouco espao no repositrio. Hackabilidade O Subversion no tem bagagem histrica; est implementado como uma coleco de bibliotecas partilhadas em C com APIs bem definidas. Isto torna o Subversion extremamente manutenvel e usvel por outras aplicaes e linguagens.

1.4. Instalando o TortoiseSVN


1.4.1. Requesitos de sistema
TortoiseSVN runs on Windows 2000 SP2, Windows XP or higher. Windows 98, Windows ME and Windows NT4 are no longer supported since TortoiseSVN 1.2.0, but you can still download the older versions if you really need them.

Introduo

If you encounter any problems during or after installing TortoiseSVN please refer to Apndice A, Questes Mais Frequentes (FAQ) first.

1.4.2. Instalao
TortoiseSVN comes with an easy to use installer. Double click on the installer file and follow the instructions. The installer will take care of the rest.

Importante
Necessitas de previlgios de administrador para instalar o TortoiseSVN.

1.4.3. Pacotes de Linguas


O interface grfico do TortoiseSVN tem sido traduzido em muitoas e variadas lnguas, sendo ento possvel descarregar um pacote de lnguas que sirva as tuas necessidades. Tu podes encontrar os pacotes de lnguas no nosso translation status pgina de ponto de situao da traduo [http://tortoisesvn.net/ translation_status]. Se no existir um pacote de lingua ainda disponvel porque no juntares-te equipa e submeteres a tua prpria traduo ;-) Cada pacote de lngua est empacotado como um instalador com extenso .exe. Apenas precisas de correr o ficheiro de instalao e seguir as instrues. Da prxima vez que reiniciares o computador, a traduo estar disponvel.

1.4.4. Corretor Ortogrfico


O TortoiseSVN nclui um corretor ortogrfico que permite verificar as messagens de log de submisso. Isto de utilidade especial se a lngua do projecto no a lngua nativa. O verificador ortogrfico usa os mesmos ficheiros de dicionrio que o OpenOffice [http://openoffice.org] e Mozilla [http://mozilla.org]. O instalador instala automticamente os dicionrios de Ingls UK e US. Se quiseres outras lnguas, a opo mais simples instalar um dos pacotes de lnguas do TortoiseSVN. Este ir instalar os ficheiros de dicionrio apropriados bem como o interface local do TortoiseSVN. Da prxima vez que reiniciares o computadoe, o dicionrio estar tambem disponvel. Ou poders instalar os dicionrios manualmente. Se tens o OpenOffice ou Mozilla instalado, podes copiar esses dicionrios, que esto localizados nas pastas de instalao dessas aplicaes. De outro modo, necessitars de descarregar os ficheiros de dicionrio necessrios a partir de http:// wiki.services.openoffice.org/wiki/Dictionaries Aps obteres os ficheiros de dicionrio, provavelmente necessitars de renome-los para que os ficheiros s tenham os cdigos de localizao no nome. Exemplo: en_US.aff en_US.dic Ento copia-os apenas para a sub-pasta bin da pasta de instalao do TortoiseSVN. Normalmente esta ser C:\Program Files\TortoiseSVN\bin. No entanto se no quiseres lixo na subpasta bin poders colocar os teus ficheiros de correo ortogrfica na pasta C:\Program Files \TortoiseSVN\Languages. Se essa pasta no existe, ters de a criar primeiro. Da prxima vez que iniciares o TortoiseSVN o corrector ortogrfica estar disponvel. Se quiseres instalar mltiplos dicionrios, o TortoiseSVN utiliza estas regras para seleccionar o dicionrio em uso.

Introduo

1. Verificar o parametro de configurao tsvn:projectlanguage. Ver a seco Seco 4.17, Configuraes de Projecto para mais informaes sobre configurao das propriedades do projecto 2. Se no seleccionada nenhuma lngua para o projecto, ou essa lngua no est instalada, tente por favor a lngua local do Windows. 3. Se a configurao local do Windows no funciona, esperimente a lngua Base, i.e. de_CH (AlemoSuio) cair por defeito para de_DE (German). 4. Se nenhuma das abordagens anteriores funcionou, ento a lngua por defeito ser o Ingls, que est ncluido na instalao standard.

Captulo 2. Conceitos Bsicos de Controlo de Verses


Este captulo uma verso ligeiramente modificada do mesmo captulo no livro do Subversion. Uma verso em linha do livro do Subversion pode ser encontrada aqui: http://svnbook.red-bean.com/. Este captulo uma introduo curta e casual ao Subversion. Se ests a iniciar-te no controlo de verses, este captulo mesmo para ti. Ns vamos comear com um discusso dos conceitos gerais de controlo de verses, abordar ideias especficas por detrs do Subversion, e mostrar alguns exemplos simples do uso do Subversion. Mesmo que os exemplos deste captulo mostrem pessoas a partilhar coleces de cdigo fonte de programas, tem em mente que o Subversion pode gerir qualquer tipo de coleces de ficheiros - no est limitado a ajudar os programadores de computadores.

2.1. O Repositrio
O Subversion um sistema centralizado para partilha de informao. No seu cerne est o repository, que um armazm central de dados. O repositrio armazena informao na forma de uma firstterm>rvore de ficheiros

Figura 2.1. Um sistema tpico Cliente/Servidor


Ento porque ser isto interessante? At agora isto parece-se com a definio de um servidor de ficheiros tpico. E de facto, o repositrio uma espcie de servidor de ficheiros, mas no da sua raa normal. O que torna o repositrio do Subversion especial que ele lembra-se de qualquer alterao que lhe tenha sido alguma vez escrita: todas as alteraes a qualquer ficheiro, e mesmo alteraes na prpria rvore de pastas, tal como adicionar, remover, e remodelar ficheiros e pastas. Quando um cliente l dados do repositrio, ele normalmente v s a ltima verso da rvore do sistema de ficheiros. Mas o cliente tambm tem a possibilidade de ver estados prvios do sistema de ficheiros. Por exemplo, um cliente efectuar perguntas de histrico, tais como o que que esta pasta continha na ltima Quarta-feira?, ou Quem foi a ltima pessoa e modificar este ficheiro, e que alteraes foram efectuadas? Essas so o tipo de questes que esto no corao de qualquer sistema de controlo de verses: sistemas que so desenhados para recordar e guardar alteraes em dados ao longo do tempo.

2.2. Modelos de Controlo de Verses


Todos os sistemas de controlo de verses tm de resolver um problema fundamental: como ir o sistema permitir aos utilizadores partilhar informao, evitando ao mesmo tempo que pisem, por acidente, os

Conceitos Bsicos de Controlo de Verses

ps uns dos outros? muito fcil os utilizadores escreverem acidentalmente por cima das alteraes de outros utilizadores no repositrio.

2.2.1. O Problema da Partilha de Ficheiros


Considera o seguinte cenrio: supem que temos dois colegas, Harry e Sally. Cada um decide editar o mesmo ficheiro do repositrio, ao mesmo tempo. Se o Harry guardar primeiro as suas alteraes no repositrio, possvel que (momentos depois) a Sally possa as substituir com a sua verso do ficheiro. Enquanto que a verso do Harry no se perder definitivamente (porque o sistema recorda-se de cada alterao), qualquer alterao feita pelo Harry no estar presente na nova verso do ficheiro da Sally porque, para comear, ela nunca viu as alteraes do Harry. O trabalho do Harry estar efectivamente perdido - ou pelo menos ausente da ltima verso do ficheiro - e provavelmente por acidente. Esta definitivamente uma situao que queremos evitar!

Figura 2.2. O Problema a Evitar 2.2.2. A Soluo Bloquear-Modificar-Desbloquear


Muitos sistemas de controlo de verses usam o modelo bloquear-modificar-desbloquear para resolver este problema, o que uma soluo muito simples. Em tal sistema, o repositrio apenas permite que uma pessoa de cada vez possa modificar um ficheiro. Primeiro o Harry tem de bloquear o ficheiro, antes de poder editar o ficheiro. Bloquear um ficheiro um pouco como requisitar um livro da biblioteca; se o Harry tem o ficheiro bloqueado, ento a Sally no pode efectuar alteraes nele. Se eia tentar bloquear o ficheiro, o repositrio ir-lhe- negar o pedido. Tudo o que ela pode fazer apenas ler o ficheiro, e esperar que o Harry termine as suas alteraes e liberte o bloqueio. Aps o Harry desbloquear o ficheiro, termina a sua vez, e agora a Sally pode ter a sua vez ao bloquear e editar o ficheiro.

Conceitos Bsicos de Controlo de Verses

Figura 2.3. A Soluo Bloquear-Modificar-Desbloquear


O problema com o modelo bloquear-modificar-desbloquear que um pouco restritivo, e torna-se muitas vezes um bloqueio para os utilizadores: Bloquear pode causar problemas administrativos. Por vezes o Harry ir bloquear um ficheiro e esquecer-se disso. Enquanto, porque a Sally est ainda espera para editar o ficheiro, tem as mos atadas. Ento o Harry vai de frias. Agora a Sally tem de se dirigir ao administrador para este libertar o bloqueio do Harry. A situao acaba por causar um grande e desnecessrio atraso e tempo perdido. Bloquear pode causar serializao desnecessria. E se o Harry estiver a editar o incio de um ficheiro de texto, e a Sally simplesmente quiser editar o final do mesmo ficheiro? Essas alteraes no se sobreporiam de todo. Eles poderiam facilmente editar o ficheiro simultaneamente, e nenhum grande mal adviria da, assumindo que as alteraes seriam propriamente integradas em conjunto. No h nenhuma necessidade deles recorrerem a turnos nesta situao. Bloquear pode criar um falso sentido de segurana. Imagina que o Harry bloqueia e edita o ficheiro A, enquanto a Sally simultaneamente bloqueia e edita o ficheiro B. Mas supem que A e B dependem um do outro, e as alteraes feitas a cada um deles so semanticamente incompatveis. De repente A e B j no funcionam juntos. O sistema de bloqueio foi impotente na preveno deste problema - mas no entanto forneceu um falso sentimento de segurana. fcil para o Harry e para a Sally imaginar que ao bloquear os ficheiros, cada um estar a iniciar uma tarefa segura e isolada, o que por sua vez os inibe de discutir de antemo as suas alteraes incompatveis.

Conceitos Bsicos de Controlo de Verses

2.2.3. A soluo Copiar-Modificar-Integrar


O Subversion, CVS e outros sistemas de controlo de verses usam o modelo copiar-modificar-integrar como alternativa ao bloqueio. Neste modelo cada utilizador cliente l o repositrio e cria uma cpia de trabalho pessoal do ficheiro ou projecto. Os utilizadores ento trabalham em paralelo, modificando as suas cpias privadas. Finalmente, as cpias privadas so integradas conjuntamente numa verso final. O sistema de controlo de verses assiste frequentemente a integrao, mas cabe ao humano ser o responsvel ltimo por garantir que este acontea correctamente. Eis um exemplo. Digamos que o Harry e a Sally criaram cada um, cpias de trabalho do mesmo projecto, copiadas do repositrio. Eles trabalharo concorrentemente e efectuaram alteraes no mesmo ficheiro A, em suas cpias. A Sally guarda as suas alteraes no repositrio, primeiro. Ento o Harry tenta guardar as suas alteraes mais tarde o repositrio informa-o que o seu ficheiro A est desactualizado. Noutras palavras, o ficheiro A do repositrio foi de algum modo alterado desde a ltima vez que o copiaste. Ento o Harry pede ao seu cliente para integrar quaisquer novas alteraes do repositrio na sua cpia de trabalho do ficheiro A. H probabilidades que as alteraes da Sally no se sobreponham com as suas; pelo que uma vez que ambos os conjuntos de alteraes estejam integrados, ele guardar a sua cpia de trabalho de volta para o repositrio.

Figura 2.4. A soluo Copiar-Modificar-Integrar

Conceitos Bsicos de Controlo de Verses

Figura 2.5. ...Continuao do Copiar-Modificar-Integrar

Mas se as alteraes da Sally se sobrepuserem as do Harry? E depois? Esta situao chamada de conflito, e no normalmente um grande problema. Quando o Harry pede ao seu cliente para integrar as ltimas alteraes do repositrio para a sua cpia de trabalho, a sua cpia do ficheiro A e de alguma maneira sinalizada como estando em conflito: poderemos observar ambos os conjuntos de alteraes, e escolher manualmente entre elas. Ter em ateno que o software no pode resolver automaticamente os conflitos: s os humanos so capazes de compreender e efectuar as necessrias escolhas inteligentes. Uma vez que o Harry tenha resolvido manualmente a sobreposio das alteraes (talvez ao discutir o conflito com a Sally), ele pode salvaguardar com segurana o ficheiro integrado de volta para o repositrio. O modelo copiar-modificar-integrar pode soar um pouco catico, mas na prtica funciona de um modo muito fluido. Os utilizadores podem trabalhar em paralelo, nunca esperando uns pelos outros. Quando trabalham nos mesmos ficheiros, acontece que a, a maior parte das suas alteraes concorrentes no se sobrepem; conflitos so raros. E a quantidade de tempo levada a resolver conflitos muito inferior ao tempo perdido com o sistema de bloqueio No final tudo se resume a um factor critico: comunicao com o utilizador. Quando os utilizadores no comunicam bem, aumentam os conflitos sintcticos e semnticos. Nenhum sistema pode forar os utilizadores a comunicar na perfeio, e nenhum sistema pode detectar conflitos semnticos. Portanto no existe vantagens em ser iludido por uma falsa promessa de que o sistema de bloqueio ir evitar conflitos; na prtica os sistemas bloqueantes parecem inibir mais a produtividade que qualquer outra coisa. Existe uma situao particular onde o modelo bloquear-modificar-desbloquear funciona melhor, que quando tens ficheiros no integrveis. Por exemplo, se o teu repositrio contm algumas imagens, e duas

Conceitos Bsicos de Controlo de Verses

pessoas alteram a imagem ao mesmo tempo, no existe forma de integrar essas alteraes. Ou o Harry ou a Sally iro perder as suas alteraes.

2.2.4. O que faz o Subversion?


O Subversion usa por defeito a soluo copiar-modificar-integrar, e em muitos casos, isto ser tudo o que alguma vez irs precisar. No entanto, tal como na verso 1.2, o Subversion tambm suporta o bloqueio de ficheiros, pelo que se tiveres ficheiros no integrveis, ou simplesmente, fores forado pela administrao a usar uma poltica de bloqueio, o Subversion poder ainda te fornecer as funcionalidades de que necessitas.

2.3. O Subversion em Aco


2.3.1. Cpias de Trabalho.
Tu j ouviste falar em cpias de trabalho; agora vamos demonstrar como o cliente Subversion as cria e usa. Uma cpia de trabalho do Subversion uma normal rvore de pastas no teu sistema local contendo uma coleco de ficheiros. Tu podes editar esses ficheiros como desejares, e no caso de serem ficheiros de cdigo fonte, poders compilar o teu programa a partir deles da forma habitual. A tua cpia de trabalho a tua rea de trabalho privada: o Subversion nunca ir incorporar alteraes de outras pessoas, nem tornar as tuas alteraes disponveis a outros, at tu explicitamente lhe indicares para o fazer. Aps efectuares algumas alteraes nos ficheiros da tua cpia de trabalho, e verificares que elas esto correctas, o Subversion ir-te- fornecer comandos para publicares as tuas alteraes para as outras pessoas que trabalham contigo no projecto (escrevendo para o repositrio). Se outras pessoas publicarem as suas prprias alteraes, o Subversion fornece-te comandos para integrar essas alteraes na tua cpia de trabalho (ao ler do repositrio). A cpia de trabalho tambm contm alguns ficheiros extra, criados e mantidos pelo Subversion para ajud-lo a executar esses comandos. Em particular, cada pasta na tua cpia de trabalho contm uma subpasta chamada .svn, tambm conhecida como a pasta administrativa da cpia de trabalho. Os ficheiros em cada pasta administrativa ajudam o Subversion a reconhecer quais os ficheiros que contm alteraes no publicadas, e quais os ficheiros que esto desactualizados em relao ao trabalho dos outros. Um repositrio tpico do Subversion armazena com frequncia os ficheiros (ou cdigo fonte) de vrios projectos; normalmente, cada projecto uma subpasta no sistema de ficheiros do repositrio. Nesta configurao, a cpia de trabalho do utilizador corresponde normalmente a uma sub-rvore em particular do repositrio. Por exemplo, supem que tens um repositrio que contm dois projectos de software.

10

Conceitos Bsicos de Controlo de Verses

Figura 2.6. O Sistema de Ficheiros do Repositrio


Noutras palavras, a pasta raiz do repositrio ter duas subpastas: paint e calc. Para obteres uma cpia de trabalho, ters de efectuar checkout nalgumas pastas do repositrio. (O termo emphasis>checkout Supem que tu efectuas alteraes no button.c. Visto que a pasta .svn lembra-se da data das modificaes do ficheiro e do seu contedo original, pode assim o Subversion saber se alteraste o ficheiro. No entanto o Subversion no tornar as tuas alteraes pblicas at explicitamente tu lhe disseres para o fazer. O acto de publicar as tuas alteraes mais usualmente conhecido por submeter (ou checking in) as alteraes para o repositrio. Para publicar as tuas alteraes para outros, podes usar o comando submeter do Subversion. Agora as tuas alteraes no button.c foram submetidas para o repositrio; se outro utilizador efectuar um checkout de uma cpia de trabalho do /calc, ir ver as tuas alteraes na ltima verso do ficheiro. Supem que tens um colaborador, Sally, que efectuou checkout a uma cpia de trabalho do /calc ao mesmo tempo que tu. Quando tu submeteres a tua alterao ao button.c, a cpia de trabalho da Sally ir ficar inalterada; o Subversion s modifica as cpias de trabalho a pedido do utilizador. Para actualizar o seu projecto, a Sally pode pedir ao Subversion para actualizar a sua cpia de trabalho, usando o comando actualizar do Subversion. Isto ir incorporar as tuas alteraes na sua cpia de trabalho, tal como quaisquer outras que tenham sido submetidas desde que a criou (checkout). Note-se que a Sally no precisou de especificar quais os ficheiros a actualizar; o Subversion usa a informao na pasta .svn, e informao posterior no repositrio, para decidir que ficheiros precisam de ser actualizados.

11

Conceitos Bsicos de Controlo de Verses

2.3.2. URLs do Repositrio


Os repositrios do Subversion podem ser acedidos atravs de vrios mtodos diferentes - no disco local, ou atravs de vrios protocolos de rede. No entanto, a localizao do repositrio ser sempre um URL. O esquema do URL indica o mtodo de acesso: Esquema file:// http:// https:// svn:// svn+ssh:// Mtodo de Acesso Acesso directo ao repositrio, numa unidade de rede ou local. Acesso atravs do protocolo WebDAV a um servidor Apache consciente do Subversion. O mesmo que http://, mas com encriptao SSL. Acesso TCP/IP no autorizado, via um protocolo personalizado, a um servidor svnserve. Acesso TCP/IP autenticado e encriptado, atravs de protocolo personalizado a um servidor svnserve.

Tabela 2.1. URLs de Acesso ao Repositrio


Na maioria dos casos, os URLs do Subversion usam a sintaxe padro, permitindo a especificao de nomes de servidor e nmeros de porto, como parte do URL. O mtodo de acesso file:// normalmente usado para acessos locais, embora possa ser usado em caminhos UNC para um hospedeiro de rede. Portanto o URL toma a forma de file://hostname/path/to/repos. Para a mquina local, a parcela do URL hostname pode ser localhost ou ausente. Por esta razo os caminhos locais aparecem normalmente com trs barras, file:///path/to/repos. Igualmente, os utilizadores do esquema file:// nas plataformas Windows, iro precisar de usar uma sintaxe padro no oficial para aceder aos repositrios que esto na mesma mquina, mas numa unidade diferente da unidade de trabalho do utilizador. Qualquer uma da duas seguintes sintaxes de caminhos URL iro funcionar aqui, X a unidade onde reside o repositrio:

file:///X:/path/to/repos ... file:///X|/path/to/repos ... Observa que o URL usa barras comuns, mesmo que a forma nativa de um caminho (sem-URL) no Windows utilize barras invertidas. Podes aceder com seguranca a um repositrio FSFS atravs de uma partilha de rede, mas no poders aceder desta forma a um repositrio BDB.

Ateno
No cries ou acedas a um repositrio Berkeley DB numa partilha de rede. Ele no poder existir num sistema de ficheiros remoto. Nem mesmo se tiveres a unidade de rede mapeada com uma letra de unidade. Se tentares usar o Berkeley DB numa partilha de rede, os resultados sero imprevisveis - poders observar de imediato erros misteriosos, ou poder levar-te meses at descobrires que a tua base de dados do repositrio est subtilmente corrompida.

2.3.3. Revises
Uma operao svn submeter pode publicar alteraes de qualquer nmero de ficheiros e pastas, como uma transaco atmica. Na tua cpia de trabalho, tu podes alterar o contedo dos ficheiros, criar,

12

Conceitos Bsicos de Controlo de Verses

remover, alterar o nome e copiar ficheiros e pastas, e ento submeter o conjunto completo de alteraes como uma unidade. No repositrio, cada submisso tratada como uma transaco atmica: ou todas as alteraes da submisso ocorrem, ou nenhuma ocorrer. O Subversion mantm a sua atomicidade em caso de estoiro do programa, problemas de rede, ou outras aces dos utilizadores. Cada vez que o repositrio aceita uma submisso, este cria um novo estado da rvore do sistema de ficheiros chamado reviso. A cada reviso atribudo um nmero natural, uma unidade acima da reviso prvia. A reviso inicial de um repositrio recm-criado zero, e consiste em nada mais que uma pasta raiz vazia. Uma maneira agradvel de visualizar o repositrio como uma srie de rvores. Imagina um array de nmeros de reviso, a comear no 0, alinhados da esquerda para a direita. Cada nmero de reviso tem uma rvore de reviso por baixo, e cada rvore uma fotografia do aspecto do repositrio aps cada submisso.

Figura 2.7. O Repositrio


Nmeros de Reviso Globais Ao contrrio de muitos outros sistemas de controlo de verses, os nmeros de reviso do Subversion aplicam-se a rvores completas e no a ficheiros individuais. Cada nmero de reviso selecciona uma rvore inteira, um estado particular do repositrio aps alguma alterao submetida. Outra maneira de pensar sobre isso que, a reviso N representa o estado do sistema de ficheiros do repositrio aps o N submisso. Quando um utilizador do Subversion fala sobre a "reviso 5 do foo.c'', o que ele realmente quer dizer , "foo.c como ele estava na reviso 5 do repositrio". Observa que em geral as revises N e M de um ficheiro no precisam necessariamente de diferir! importante observar que as cpias de trabalho nem sempre correspondem a um nica reviso do repositrio; Elas podem conter ficheiros de vrias revises diferentes. Por exemplo, supe que efectuas o checkout de um repositrio para uma cpia de trabalho, cuja reviso mais recente 4:

13

Conceitos Bsicos de Controlo de Verses

calc/Makefile:4 integer.c:4 button.c:4 Neste momento, esta cpia de trabalho corresponde exactamente reviso 4 do repositrio. No entanto, supe que fizeste uma alterao ao button.c, e submetes essa alterao. Assumindo que no foram efectuadas outras submisses, a tua submisso ir criar a reviso 5, e a tua cpia de trabalho ir ficar assim:

calc/Makefile:4 integer.c:4 button.c:5 Supe que, neste momento, a Sally submete uma alterao ao integer.c, criando a reviso 6. Se usares o svn actualizar para actualizares a tua cpia de trabalho, ela ir ficar do seguinte modo:

calc/Makefile:6 integer.c:6 button.c:6 As alteraes da Sally ao integer.c iro aparecer na tua cpia de trabalho e a tua alterao no button.c ainda estar presente. Neste exemplo, o texto do Makefile ser identico nas revises 4,5,6 mas o Subversion ir marcar a tua cpia de trabalho do Makefile com a reviso 6, para indicar que esta ainda a corrente. Ento, aps uma actualizao de limpeza no topo da tua cpia de trabalho, esta ir corresponder a exactamente uma reviso do repositrio.

2.3.4. Como as Cpias de Trabalho Seguem o Repositrio


Para cada ficheiro na pasta de trabalho, o Subversion guarda duas partes essenciais de informao na rea administrativa .svn/: em que reviso baseada o teu ficheiro de trabalho (esta chamada a reviso de trabalho do ficheiro), e uma etiqueta temporal que grava quando foi actualizada, pelo repositrio, a cpia local pela ltima vez. Dada esta informao, comunicando com o repositrio, o Subversion pode dizer em qual dos seguintes quatro estados est o ficheiro de trabalho: Inalterado, e actual O ficheiro est inalterado na pasta de trabalho, e nenhuma alterao a esse ficheiro foi submetida no repositrio, desde a reviso de trabalho. O submeter o ficheiro no far nada, e uma actualizao ao mesmo tambm nada far. Modificado localmente, e actual O ficheiro foi alterado na pasta de trabalho, e nenhuma alterao a esse ficheiro foi submetida para no repositrio desde a sua reviso base. Existem alteraes locais que no foram ainda submetidas para o repositrio, pelo que submeter o ficheiro ir ter sucesso na publicao das tuas alteraes, e um actualizar do ficheiro no ir fazer nada. Inalterado, e desactualizado O ficheiro no foi alterado na pasta de trabalho, mas foi alterado no repositrio. O ficheiro dever eventualmente ser actualizado, para o tornar actual com a reviso pblica. O submeter do ficheiro no ir fazer nada, e um actualizar do ficheiro ir trazer as ltimas alteraes para a tua cpia de trabalho. Modificado localmente, e desactualizado O ficheiro foi alterado na pasta de trabalho e no repositrio. O submeter do ficheiro ir falhar com o erro desactualizado. O ficheiro dever ser primeiro actualizado; o comando actualizar ir tentar integrar as alteraes pblicas com as alteraes locais. Se o Subversion no conseguir completar

14

Conceitos Bsicos de Controlo de Verses

automaticamente a integrao, de um modo plausvel, ir deixar para o utilizador a resoluo do conflito.

2.4. Resumo
Neste captulo cobrimos um nmero de conceitos fundamentais do Subversion: Introduzimos as noes de repositrio central, cpia de trabalho do cliente, e o array de rvores de reviso do repositrio. Vimos alguns exemplos simples em como dois colaboradores podem usar o Subversion para publicar e receber alteraes um do outro, usando o modelo "copiar-modificar-integrar. Falmos um pouco sobre o modo como o Subversion segue e gere a informao na cpia de trabalho.

15

Captulo 3. O Repositrio
Independentemente do protocolo que usas para aceder aos teus repositrios, precisas sempre de criar pelo menos um. Isto pode ser feito com a linha de comandos do Subversion ou com o TortoiseSVN. Se ainda no criaste um repositrio SVN, est a altura para o fazer.

3.1. Criao do Repositrio


Podes criar um repositrio com o formato FSFS ou com o mais antigo Berkeley Database (BDB). O formato FSFS geralmente mais rpido e facil de administrar, e funciona em partilhas de rede e com o Windows98 sem problemas. O formato BDB j foi considerado mais estvel, simplesmente porque estava em uso mais tempo, mas desde que o FSFS tem estado em uso no campo por vrios anos, esse argumento agora um pouco fraco. Consulta Choosing a Data Store [http://svnbook.red-bean.com/ en/1.5/svn.reposadmin.planning.html#svn.reposadmin.basics.backends] no livro do Subversion, para mais informaes.

3.1.1. Criar um Repositrio com o Cliente de Linha de Comandos


1. Cria uma pasta vazia com o nome SVN (e.g. D:\SVN\), que ser usada como raiz para todos os teus repositrios. 2. Cria outra pasta MyNewRepository dentro da D:\SVN\. 3. Abre a linha de comandos (ou caixa do DOS), muda para a D:\SVN\ e digita svnadmin create --fs-type bdb MyNewRepository or svnadmin create --fs-type fsfs MyNewRepository Agora tens um novo repositrio localizado em D:\SVN\MyNewRepository.

3.1.2. Criar O Repositrio Com o TortoiseSVN

Figura 3.1. O menu TortoiseSVN para pastas no versionadas


1. Abre o explorador do Windows 2. Cria uma nova pasta e chama-a, e.g. SVNRepository

16

O Repositrio

3. Clica com o boto direito na pasta recm-criada e selecciona TortoiseSVN Criar repositrio aqui.... ento criado o repositrio dentro da nova pasta. No edites esses ficheiros manualmente!!!. Se obtiveres algum erro, tem a certeza que essa pasta vazia e no est protegida contra escrita.

Dica
O TortoiseSVN no oferece mais a opo para criar repositrios BDB, mesmo que tu ainda uses a linha de comandos para os criar. Os repositrios FSFS so na generalidade mais fceis para tu os manteres, o que tambm nos torna mais fcil manter o TortoiseSVN, devido a problemas de compatibilidade entre diferentes verses do BDB. Future versions of TortoiseSVN will not support file:// access to BDB repositories due to these compatibility issues, although it will of course always support this repository format when accessed via a server through the svn://, http:// or https:// protocols. For this reason, we strongly recommend that any new repository which must be accessed using file:// protocol is created as FSFS. claro que ns tambm recomendamos que tu no uses, de modo algum, o acesso file:// para alm do uso para testes locais. Usar um servidor muito mais seguro e mais confivel para todos os usos, excepto o desenvolvimento a solo.

3.1.3. Acesso Local ao Repositrio


Para aceder ao teu repositrio local, precisas do caminho para essa pasta. Lembra-te que o Subversion est espera que todos os caminhos estejam na forma file:///C:/SVNRepository/. Observa o uso de barras por todo o lado. Para aceder a um repositrio localizado numa partilha de rede, podes usar o mapeamento de unidades, ou podes usar um caminho UNC. Para caminhos UNC a forma file://ServerName/path/to/ repos/. Observa que s existem aqui 2 barras dianteiras. Antes do SVN 1.2, os caminhos UNC tinham de ser especificados numa forma mais obscura, file:/// \ServerName/path/to/repos. Esta forma ainda suportada, mas no recomendada.

Ateno
No criar ou aceder a um repositrio Berkeley DB numa partilha de rede. Ele no pode existir num sistema de ficheiros remoto. Nem mesmo se tu tens uma unidade de rede mapeada numa letra de unidade. Se tentares usar um Berkeley DB numa partilha de rede, os resultados sero inesperados - tu poders ver de imediato erros misteriosos, ou podero passar meses antes de descobrires que a tua base de dados do teu repositrio est subtilmente corrompida.

3.1.4. Aceder ao Repositrio numa Partilha de Rede


Embora em teoria possvel por um repositrio FSFS numa partilha de rede, e ter mltiplos utilizadores a aced-lo usando o protocolo file://, mas isto no definitivamente recomendvel. Em primeiro lugar, tu ests a dar a cada utilizador o acesso directo ao repositrio, pelo que qualquer utilizador pode acidentalmente apagar todo o repositrio ou inutiliz-lo de alguma forma. Em segundo lugar, nem todos os protocolos de partilha de ficheiros em rede suportam o bloqueio que o Subversion requer, pelo que podes encontrar o teu repositrio corrompido. Poder no acontecer de imediato, mas um dia dois utilizadores tentaro aceder ao repositrio ao mesmo tempo.

17

O Repositrio

Em terceiro lugar, as permisses dos ficheiros tem de ser configuradas como esto. Poders, no entanto, quase dar a volta a isso numa partilha Windows nativa, mas ser particularmente difcil no SAMBA. O acesso file:// dirigido para acesso local e de utilizador nico, em particular para testes e depurao de problemas. Quando tu queres partilhar o repositrio, precisars realmente de instalar correctamente um servidor, e no to difcil como pensas. Consulta o Seco 3.5, Aceder ao Repositrio para guias orientadoras na escolha e instalao de um servidor.

3.1.5. Estrutura do Repositrio


Antes de tu importares os teus dados para o repositrio, devers primeiro pensar em como o queres organizar. Se tu usares uma das estruturas recomendadas, mais tarde ters a tudo muito mais facilitado. Existem alguns mtodos padro e recomendados de organizar o repositrio. A maioria das pessoas a pasta trunk para guardar a linha principal de desenvolvimento, uma pasta ramos para conter as cpias de ramos, e a pasta etiquetas para guardas as cpias etiquetas. Se o repositrio tiver s um projecto, ento frequentemente as pessoas criaram essas pastas de nvel de topo:

/trunk /ramos /etiquetas Se o repositrio conter vrios projectos, as pessoas normalmente indexaro a sua estrutura por ramo:

/trunk/paint /trunk/calc /ramos/paint /ramos/calc /etiquetas/paint /etiquetas/calc ...ou por projecto:

/paint/trunk /paint/ramos /paint/etiquetas /calc/trunk /calc/ramos /calc/etiquetas Indexar por projecto faz sentido, se os projectos no esto intimamente relacionados, e cada um obtido individualmente por checkout. Para projectos relacionados onde poders querer efectuar o checkout de todos os projectos de uma s vez, ou onde os projectos esto todos ligados num nico pacote de distribuio. normalmente melhor indexar por ramo. Deste modo tu podes ter um trunk para efectuar checkout e as relaes entre subprojectos so mais facilmente visvel. Se adoptares por uma abordagem de um nvel de topo /trunk /tags /branches, no necessrio referir que ters de copiar o trunk inteiro para cada ramo e etiqueta, e de algum modo esta estrutura oferece a maior flexibilidade. Para projectos no relacionados, poders preferir o uso de repositrios separados. Quando submetes as alteraes, o nmero de reviso do repositrio inteiro que muda, e no o nmero de reviso do projecto. Ter 2 projectos no relacionados a partilhar o repositrio, pode significar grandes falhas nos nmeros de revises. Os projectos Subversion e TortoiseSVN aparecem no mesmo endereo de hospedeiro, mas esto completamente separados, permitindo desenvolvimentos separados, e sem confuso sobre nmeros de construo.

18

O Repositrio

Est claro que s livre para ignorar essas estruturas comuns. Tu podes criar qualquer gnero de variao, e o que funcionar melhor para ti e para a tua equipa. Lembra-te que o que escolheres no ser um comprometimento permanente. Tu podes reorganizar, em qualquer altura, o teu repositrio. Porque ramos e etiquetas so pastas comuns, o TortoiseSVN pode mover ou alterar o seu nome, quando assim o desejares. Trocar de uma estrutura para outra s uma questo de executar uma srie de movimentos do lado do servidor. Se no gostares do modo como as coisas esto organizadas no repositrio, poders manipular as pastas a teu modo. Ento, se ainda no criaste a estrutura de pastas bsica dentro do teu repositrio, devers faze-lo agora. Existem duas maneiras para o obteres. Se queres simplesmente criar a estrutura /trunk /tags / branches, tu podes usar para isso o navegador de repositrio, para criar as trs pastas (em trs submisses separadas). Se queres criar uma hierarquia mais profunda, ento mais simples criar primeiro a estrutura de pastas em disco e import-la numa simples submisso, assim: 1. cria uma nova pasta vazia no teu disco rgido 2. cria a estrutura de pastas de nvel de topo que desejas, dentro dessa pasta - no ponhas l ainda nenhum ficheiro! 3. import this structure into the repository via a right click on the folder and selecting TortoiseSVN Import... This will import your temp folder into the repository root to create the basic repository layout. Tem em conta que o nome da pasta que ests a importar no aparecer no repositrio, s o seu contedo. Por exemplo, cria a seguinte estrutura de pastas: C:\Temp\New\trunk C:\Temp\New\ramos C:\Temp\New\etiquetas Importa o C:\Temp\New para a raiz do repositrio, que ento ter o seguinte aspecto: /trunk /ramos /etiquetas

3.2. Cpia de Segurana do Repositrio


Qualquer que seja o tipo de repositrio que uses de importncia vital manter cpias de segurana regulares, e que tambm as verifiques. Se o servidor falhar poders ter acesso a uma verso recente dos teus ficheiros, mas sem o repositrio, todo o teu histrico ser perdido para sempre. O mtodo mais simples (mas no recomendado) copiar apenas a pasta do repositrio para um meio de reserva. No entanto, tens de ter a certeza absoluta que no existe nenhum processo a aceder aos dados. Neste contexto, acesso significa qualquer tipo de acesso. Um repositrio BDB escrito mesmo quando a operao parece apenas requerer leitura, como obter o estado. Se o teu repositrio estiver a ser acedido de qualquer modo, durante a cpia (navegador web aberto, WebSVN, etc.), a cpia de segurana ficar inutilizada. O mtodo recomendado correr svnadmin hotcopy path/to/repository path/to/backup --clean-logs para criar uma cpia, de maneira segura, do teu repositrio. Ento efectua a cpia de segurana da cpia. A opo --clean-logs no necessria, mas remove quaisquer ficheiros de registo redundantes, quando efectuas a cpia de segurana de um repositrio BDB, o que pode poupar algum espao.

19

O Repositrio

A ferramenta svnadmin automaticamente instalada quando tu instalas o cliente de linha de comandos do Subversion. Se ests a instalar as ferramentas de linha de comandos num PC Windows, o melhor mtodo descarregar a verso com instalador Windows. comprimido de modo mais eficiente do que a verso .zip, pelo que a descarga mais pequena, e toma conta da configurao dos caminhos por ti. Tu podes descarregar a ltima verso do cliente de linha de comandos do Subversion a partir de http:// subversion.apache.org/getting.html.

3.3. Scripts de gancho de servidor


Um script de gancho um programa disparado por algum evento no servidor, como a criao de uma nova reviso ou a modificao de uma propriedade no versionada. A cada gancho dada informao suficiente para poder distinguir qual o evento, o alvo(s) da operao, e o nome de utilizador da pessoa que disparou o evento. Dependendo do produto dos ganchos ou estado de retorno, o programa gancho pode continua a aco, par-la, ou suspend-la de algum modo. Consulta ao captulo Hook Scripts [http://svnbook.redbean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks] no livro do Subversion para todos os detalhes sobre os ganchos que esto implementados. Esses scripts de gancho so executados pelo servidor que hospeda o repositrio. O TortoiseSVN tambm permite-te configurar scripts de gancho de cliente, que so executados localmente devido a certos eventos. Consultar Seco 4.30.8, Scripts de Gancho do Lado do Cliente para mais informaes. Amostras de scripts de gancho podem ser encontrados na pasta hooks do repositrio. Essas amostras de scritps so adequados para servidores Unix/Linux, mas precisam de ser modificados se o teu servidor Windows. O gancho pode ser um ficheiro batch ou um executvel. A amostra abaixo mostra um ficheiro batch que poder ser usado para implementar um gancho pre-revprop-change.

rem Only allow log messages to be changed. if "%4" == "svn:log" exit 0 echo Property '%4' cannot be changed >&2 exit 1 Podes observar que tudo o que for enviado para o stdout descartado. Se tu queres que uma mensagem aparea na caixa de dilogo Rejeio de Submisso, devers envi-la para o stderr. Num ficheiro batch isto obtido atravs do uso de >&2

3.4. Ligaes de Checkout


Se quiseres tornar o teu repositrio Subversion disponvel para outros, poders querer incluir uma ligao para ele a partir do teu stio web. Uma maneira de tornar isto mais acessvel incluir uma ligao de checkout para outros utilizadores TortoiseSVN. Quando instalas o TortoiseSVN, este regista um novo protocolo tsvn:. Quando o utilizador do TortoiseSVN clica em tal ligao, uma caixa de dilogo de checkout ir-se- abrir automaticamente, com o URL do repositrio j preenchido. Para inclures tal ligao na rua prpria pgina de html, necessitas de adiciona o seguinte cdigo:

<a href="tsvn:http://project.domain.org/svn/trunk"> </a> claro que ter melhor aspecto se inclures uma imagem adequada. Poders usar o logo TortoiseSVN [http://tortoisesvn.tigris.org/images/TortoiseCheckout.png] ou podes providnciar a tua prpria imagem.

<a href="tsvn:http://project.domain.org/svn/trunk">

20

O Repositrio

<img src=TortoiseCheckout.png></a> Tambm podes fazer com que a ligao aponte para uma reviso especfica, por exemplo

<a href="tsvn:http://project.domain.org/svn/trunk?100"> </a>

3.5. Aceder ao Repositrio


Para usar o TortoiseSVN (ou qualquer outro cliente Subversion) necessitas de um local para os repositrios. Podes armazen-los localmente e aceder a eles usando o protocolo file://, ou podes coloc-los num servidor e aceder a eles com os protocolos literal>http:// Se estiveres a usar um servio publico de alojamento como o Google Code [http://code.google.com/ hosting/] ou o teu servidor j foi configurado por algum, ento no precisas de fazer mais nada. Segue directamente para Captulo 4, Guia de Uso Dirio. Se no tens um servidor e trabalhas a solo, ou se ests a avaliar o Subversion e o TortoiseSVN isoladamente, ento os repositrios locais sero, provavelmente, a tua melhor escolha. Cria apenas um repositrio no teu PC, como descrito anteriormente em Captulo 3, O Repositrio. Podes saltar o resto deste captulo e ir directamente para o Captulo 4, Guia de Uso Dirio para descobrires como comear a us-lo. Se estavas a pensar em instalares um repositrio multi-utilizador numa partilha de rede, pensa outra vez. Consulta Seco 3.1.4, Aceder ao Repositrio numa Partilha de Rede para descobrires porque que ns pensamos que uma m ideia. Instalar um servidor no to difcil como pensas, e dar-te- mais fiabilidade e provavelmente tambm velocidade. AS prximas seces so um guia passo-a-passo em como instalar tal servidor numa mquina Windows. claro que tambm podes instalar o servidor numa mquina Linux, mas isso est para alm do mbito deste guia. Mais informao sobre as opes do servidor Subversion, e em como escolher a melhor arquitectura para a tua situao, podem ser encontradas no livro do Subversion, em Server Configuration [http:// svnbook.red-bean.com/en/1.5/svn.serverconfig.html].

3.6. Servidor Baseado em Svnserve


3.6.1. Introduo
O Subversion inclui o Svnserve - um servidor ligeiro e independente que usa um protocolo personalizado sobre uma vulgar ligao TCP/IP. ideal para instalaes pequenas, ou onde no pode ser usado um servidor Apache completo. Na maioria dos casos o svnserve mais fcil de instalar e corre mais rpido que um servidor baseado em Apache, apesar de que no ter algumas das funcionalidades avanadas. E agora que o suporte SASL est includo tambm mais fcil torn-lo seguro.

3.6.2. Instalar o svnserve


1. Obter a ltima verso do Subversion a partir de http://subversion.apache.org/getting.html. Ou em alternativa obter um instalador pr-embalado a partir do site CollabNet em http://www.collab.net/ downloads/subversion. O instalador ir instalar o svnserve como um servio Windows, e ir tambm incluir algumas das ferramentas que necessitars se fores usar o SASL por razes de segurana. 2. Se j tens uma verso do Subversion instalada, e o svnserve est a correr, necessitars de o parar antes de continuares. 3. Corre o instalador do Subversion. Se estiveres a correr o instalador no teu servidor (o que recomendado) podes saltar o passo 4.

21

O Repositrio

4. Abre o explorador do Windows, vai para a pasta de instalao do Subversion (normalmente C: \Program Files\Subversion) e na pasta bin, encontra os ficheiros svnserve.exe, intl3_svn.dll, libapr.dll, libapriconv.dll, libapriutil.dll, libdb*.dll, libeay32.dll e ssleay32.dll - copiar esses ficheiros, ou copia apenas toda a pasta bin para uma pasta no teu servidor, e.g. c:\svnserve

3.6.3. Executar o svnserver


Agora que o svnserve est instalado, precisas de o correr no teu servidor. A abordagem mais simples correr o seguinte a partir da shell do DOS, ou criar um atalho do Windows:

svnserve.exe --daemon o svnserve ir arrancar espera de pedidos na porta 3690. O parmetro --daemon indica ao svnserve para correr como um processo daemon, para que exista sempre at ser terminado manualmente. Se ainda no criaste um repositrio, segue as instrues dadas com a configurao do servidor Apache Seco 3.7.4, Configurao. Para testar se o svnserve est a funcionar, usa o TortoiseSVN Naveguador de repositrio para visualizares o repositrio. Assumindo que o teu repositrio est localizado em c:\repos\TestRepo, e o teu servidor chamase localhost, introduz:

svn://localhost/repos/TestRepo quando fores solicitado pelo navegador de repositrio. Podes tambm aumentar a segurana e poupar tempo a introduzir URLs com o svnserve usando o parmetro --root para indicares a localizao raiz e restringir o acesso a determinada pasta no servidor:

svnserve.exe --daemon --root drive:\path\to\repository\root Usando o teste prvio como guia, o svnserve ir agora correr como:

svnserve.exe --daemon --root c:\repos E no TortoiseSVN o nosso URL do navegador de repositrio est agora encurtado para:

svn://localhost/TestRepo Observa que o parmetro --root tambm preciso no caso de o teu repositrio estar localizado numa partio ou unidade diferente, da localizao do svnserve no teu servidor. O svnserve ir servir um nmero qualquer de repositrios. Coloca-os apenas sobre a pasta raiz que acabaste de definir, a acede a eles usando um URL relativo a essa raiz.

Ateno
No cries ou acedas a um repositrio Berkeley DB numa partilha de rede. Ele no poder existir num sistema de ficheiros remoto. Nem mesmo se tiveres a unidade de rede mapeada com uma letra de unidade. Se tentares usar o Berkeley DB numa partilha de rede, os

22

O Repositrio

resultados sero imprevisveis - poders observar de imediato erros misteriosos, ou poder levar-te meses at descobrires que a tua base de dados do repositrio est subtilmente corrompida.

3.6.3.1. Executar o svnserve como um Servio


Correr o svnserve como utilizador no normalmente a melhor abordagem. Isso significa ter um utilizador ligado no teu servidor, e lembra-lo de o voltar a arrancar aps um reboot. A melhor abordagem correr o svnserve como um servio Windows. A partir do Subversion 1.4, o svnserve pode ser instalado como um servio Windows nativo. To install svnserve as a native windows service, execute the following command all on one line to create a service which is automatically started when windows starts.

sc create svnserve binpath= "c:\svnserve\svnserve.exe --service --root c:\repos" displayname= "Subversion" depend= tcpip start= auto If any of the paths include spaces, you have to use (escaped) quotes around the path, like this:

sc create svnserve binpath= " \"C:\Program Files\Subversion\bin\svnserve.exe\" --service --root c:\repos" displayname= "Subversion" depend= tcpip start= auto You can also add a description after creating the service. This will show up in the Windows Services Manager.

sc description svnserve "Subversion server (svnserve)" Observa o formato de linha, no usual, usado pelo sc. Nos pares chave= valor no devem existir espaos entre a chave e o =, mas dever existir um espao antes do valor.

Dica
A Microsoft agora recomenda que os servios corram sobre uma conta Servio Local ou Servio de Rede. Consulta o The Services and Service Accounts Security Planning Guide [http://www.microsoft.com/technet/security/topics/serversecurity/serviceaccount/ default.mspx]. Para criar o servio sob uma conta Servio Local, anexa o seguinte ao exemplo acima citado.

obj= "NT AUTHORITY\LocalService" Tem ateno que ters de dar conta de Servio Local, direitos de acesso apropriados para o Subversion e para os teus repositrios, tal como para qualquer aplicao que seja usada por qualquer script de gancho. O grupo integrado para este propsito chama-se "LOCAL SERVICE". Uma vez que tenhas instalado o servio, necessitars de ir ao gestor de servios para o arrancar (s desta vez; ele ir arrancar automaticamente quando o servidor reiniciar). Para informao mais detalhada, consulta Windows Service Support for Svnserve [http://svn.collab.net/ repos/svn/trunk/notes/windows-service.txt].

23

O Repositrio

Se instalaste uma verso anterior do svnserve, usando o empacotador SVNService, e agora desejas usar em alternativa o suporte nativo, necessitars de, des-registar como um servio, o empacotador (lembrate de parar primeiro o servio!). Usa simplesmente o comando:

svnservice -remove para remover a entrada do servio do registo.

3.6.4. Autenticao Bsica com o svnserve


A instalao por padro do svnserve fornece acesso apenas de leitura annima. Isso significa que podes usar um URL svn:// para efectuar checkout e actualizar, ou usar o navegador-de-repositrio no TortoiseSVN para visualizar o repositrio, mas no poders submeter quaisquer alteraes. Para activares o acesso de escrita ao repositrio, necessitas de editar o ficheiro conf/svnserve.conf na pasta do teu repositrio. Este ficheiro controla a configurao do daemon svnserve e tambm contm documentao til. Podes activa a escrita annima configurando simplesmente:

[general] anon-access = write No entanto no sabers quem efectuou as alteraes no repositrio, j que a propriedade svn:author estar vazia. Tambm no poders controlar quem efectua alteraes no repositrio. Esta uma configurao arriscada! Uma maneira de ultrapassar isto criar uma base de dados de palavras-chave:

[general] anon-access = none auth-access = write password-db = userfile Onde userfile um ficheiro que existe na mesma pasta do svnserve.conf. Este ficheiro pode estar em qualquer parte do teu sistema de ficheiros (til para quano tens multiplos repositrios que requerem os mesmos direitos de acesso) e pode ser refernciado usando um caminho absoluto, ou um caminho relativo pasta conf. Se incluires um caminho este deve ser escrito do seguinte modo /the/ unix/way. Usar \ ou letras de unidades no ir funcionar. O userfile dever ter a seguinte estrutura:

[users] username = password ... Este exemplo ir negar todo o acesso a utilizadores no autenticados (annimos), e ir dar acesso leituraescrita a os utilizadores listados em userfile.

Dica
Se mantiveres mltiplos repositrios utilizando a mesma base de dados de palavraschave, o uso de um domnio de autenticao ir facilitar a vida dos utilizadores, j que o TortoiseSVN pode efectuar cache das tuas credenciais, para que s tenhas de as introduzir uma vez. Mais informaes poderam ser encontradas no livro do Subversion, mais especificamente nas seces Create a 'users' file and realm [http://svnbook.red-bean.com/ en/1.5/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.auth.users] and Client

24

O Repositrio

Credentials Caching [http://svnbook.red-bean.com/en/1.5/ svn.serverconfig.netmodel.html#svn.serverconfig.netmodel.credcache]

3.6.5. Segurana Melhorada com SASL


3.6.5.1. O que o SASL?
O Cyrus Simple Authentication and Security Layer um software open source escrito na Universidade Carnegie Mellon. Adiciona funcionalidades de autenticao genrica e encriptao a qualquer protocolo de rede, e a partir do Subversion 1.5, ambos o servidor svnserve e o cliente TortoiseSVN sabem utilizar esta biblioteca. Para uma discusso mais completa sobre as opes disponveis, devers olhar para o livro do Subversion na seco Using svnserve with SASL [http://svnbook.red-bean.com/en/1.5/ svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.sasl]. Se ests apenas a pensar numa forma simples de utilizar uma autenticao segura e encriptada num servidor Windows, para que o teu repositrio possa ser acedido na grande e m Internet, continua a ler.

3.6.5.2. Autenticao SASL


Para activares mecanismos SASL especficos no servidor necessitars de trs coisas. Primeiro, criar uma seco [sasl] no ficheiro svnserve.conf dos teus repositrios, com este par chave-valor:

use-sasl = true Segundo, criar um ficheiro chamado svn.conf numa localizao conveniente - tipicamente na pasta onde est instalado o Subversion. Terceiro, criar duas novas entradas no registo para dizer ao SASL onde procurar as coisas. Cria uma chave de registo chamada [HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library] e coloa dois novos valores string l dentro: o SearchPath configurado com o caminho da pasta contendo os plug-ins sasl*.dll (normalmente na pasta de instalao do Subversion), e o ConfFile configurado com a pasta contendo o ficheiro svn.conf. Se usares o instalador CollabNet , essas chaves j tero sido instaladas por ti. Edita o ficheiro svn.conf para que contenha o seguinte:

pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: DIGEST-MD5 sasldb_path: C:\TortoiseSVN\sasldb A ltima linha mostra a localizao da base de dados de autenticao, que um ficheiro chamado sasldb. Este poder ir para qualquer localizao, mas uma escolha conveniente ser o caminho pai do repositrio. Tem a certeza que o servio svnserve tem acesso de leitura para este ficheiro. Se o svnserve j est a correr, necessitars de o reiniciar para garantir que l a configurao actualizada. Agora que est tudo configurado, tudo o que precisas de criar alguns utilizadores e palavras-chave. Para o fazeres necessitars do programa saslpasswd2. Se usares o instalador CollabNet esse programa estar na pasta install. Usa um comando parecido com este:

saslpasswd2 -c -f C:\TortoiseSVN\sasldb -u realm username O parmetro -f d-te a localizao da base de dados, o realm dever ter o mesmo valor que definiste no ficheiro svnserve.conf dos teus repositrios, e o username ser exactamente aquilo que ests espera. Observa que no realm no permitido ter espaos.

25

O Repositrio

Tu podes listar os nomes de utilizadores (usernames ) armazenados na base de dados usando o programa sasldblistusers2.

3.6.5.3. Encriptao SASL


Para activar ou desactivar diferentes nveis de encriptao, tu podes configurar dois valores no ficheiro svnserve.conf do teu repositrio: [sasl] use-sasl = true min-encryption = 128 max-encryption = 256 As variveis min-encryption e max-encryption controlam o nvel de encriptao requerida pelo servidor. Para desactivar completamente a encriptao, coloca ambos os valores a 0. Para activar a simples soma de verificao de dados (i.e., para prevenir a adulterao de dados e garantir a sua integridade sem recurso encriptao), coloca ambos os valores a 1. Se desejas permitir (mas no obrigar) a encriptao, coloca o valor mnimo a 0 e o valor mximo a um qualquer bit-length. Para requisitares incondicionalmente a encriptao, coloca em ambos os valores nmeros maiores que 1. No nosso exemplo prvio, ns requeremos que os clientes tivessem uma encriptao mnima de 128-bits, mas no mais que 256-bits.

3.6.6. Autenticao com svn+ssh


Outra forma de autenticar utilizadores num servidor baseado em svnserve, usar o secure shell (SSH) para criar um tnel. No to simples como configurar o SASL, mas poder ser til em alguns casos. Com esta abordagem o scnserve no ir correr como um processo daemon, mas em alternativa a shell segura ir arranc-lo por ti, correndo-o como utilizador autenticado SSH. Para o activares necessitas de um daemon de shell no teu servidor. Um mtodo bsico para configurares teu servidor dado em Apndice G, Protegendo o Svnserve ao usar o SSH. Podes encontrar outros tpicos SSH no interior da FAQ, procurando por SSH. Mais informaes sobre o svnserve podem ser encontradas em Version Control with Subversion [http:// svnbook.red-bean.com].

3.6.7. Autorizao com o svnserve baseada em Caminhos


A partir do Subversion 1.3, o svnserve suporta o mesmo esquema de autorizao mod_authz_svn baseado em caminhos que est disponvel com o servidor Apache. Precisas de editar o ficheiro conf/ svnserve.conf na pasta do teu repositrio, e adicionar uma linha indicando o teu ficheiro de autorizao. [general] authz-db = authz Aqui, o authz um ficheiro que criaste para definir as permisses de acesso. Podes usar um ficheiro separado para cada repositrio, ou poders usar o mesmo ficheiro para vrios repositrios. Consulta Seco 3.7.6, Autorizao Baseada-em-Caminhos para uma descrio do formato do ficheiro.

3.7. Servidor Baseado em Apache


3.7.1. Introduo
A instalao para o Subversion mais flexvel de todas a baseada e Apache. Apesar de um pouco mais complicada de configurar, oferece no entanto mais benefcios que as outras:

26

O Repositrio

WebDAV O servidor Subversion baseado em Apache usa o protocolo WebDAV, que tambm suporta por muitos outros programas. Tu podes, por exemplo, montar um repositrio como uma pasta Web no explorador do Windows e aceder a ela como outra qualquer pasta do sistema de ficheiros. Navegar no Repositrio Podes apontar o teu navegador de internet para o URL do teu repositrio e navegar nos seus contedos, sem teres instalado um cliente Subversion. Isto d acesso aos teus dados a um crculo mais abrangente de utilizadores. Autenticao Podes usar qualquer tipo de autenticao que o Apache suporte, incluindo SSPI e LDAP. Segurana Visto que o Apache muito estvel e seguro, tu automaticamente obters a mesma segurana para o teu repositrio. Isto inclui encriptao SSL.

3.7.2. Instalar o Apache


O primeiro pr-requisito para instalar o Apache um computador com o Windows 2000, Windows XP +SP1, Windows 2003, Vista ou Server 2008.

Ateno
Tem em ateno que o Windows XP, sem o service pack 1, ir adulterar os dados de rede e com isso corromper o teu repositrio! 1. Descarrega a ltima verso do servidor web Apache a partir de http://httpd.apache.org/download.cgi. Tem a certeza que descarrregas a verso 2.2.x - a verso 1.3.xx no funcionar! O instalador msi para o Apache pode ser encontrado ao clicares em other files, e navegares para binaries/win32. Poders querer escolher o ficheiro msi apache-2.2.x-win32-x86openssl-0.9.x.msi (o que inclui o OpenSSL). 2. Uma vez que tenhas o instalador Apache2, podes efectuar duplo clique sobre ele, e ento sers guiado atravs do processo de instalao. Tem a certeza que inseres o URL-servidor correctamente (se no tiveres um nome DNS para o teu servidor, insere apenas o seu endereo-IP). Eu recomendo instalar o Apache para Todos os Utilizadores, no Porto 80, como um Servio. Nota: se j tens o IIS ou outro programa a correr que esteja escuta no porto 80, poder causar a falha da instalao. Se tal acontecer, vai pasta do programas, \Apache Group\Apache2\conf e localiza o ficheiro httpd.conf. Edita-o para que o Listen 80 seja alterado para um porto livre, e.g. Listen 81. Ento reinicia a instalao - desta vez dever concluir sem problemas. 3. Agora testa se o teu servidor web Apache est a correr correctamente, apontando o teu navegador de internet para http://localhost/ - um stio web pr-configurado dever aparecer.

Cuidado
Se decidires instalar o Apache como um servio, tem ateno que por defeito este ir correr com uma conta de sistema local. Ser uma prtica mais segura para ti criar uma conta separada para o Apache correr. Tem a certeza que a conta em que o Apache est a correr, tem uma entrada explcita na lista de controlo de acessos s pastas dos repositrios (clica com o boto direito na pasta | propriedades | segurana), com acesso total. De outro modo, os utilizadores no podero submeter as suas alteraes. Mesmo que o Apache corra como sistema local, irs necessitar na mesma de tal entrada (que ser neste caso a conta SYSTEM).

27

O Repositrio

Se o Apache no tiver esta permisso configurada, os teus utilizadores iro obter mensagens de erro de Acesso negado, que iro aparecer no registo de erro do Apache como error 500.

3.7.3. Instalar o Subversion


1. Descarrega a ltima verso dos binrios Win32 do Subversion para o Apache. Tem a certeza que obtns a verso correcta para integrares com a tua verso do Apache, de outro modo obters uma mensagem de erro obscura, quando tentares reiniciar. Se tens o Apache 2.2.x vai a http://subversion.tigris.org/ servlets/ProjectDocumentList?folderID=8100. 2. Corre o instalador do Subversion e segue as instrues. Se o instalador do Subversion reconhece que tens o Apache instalado, ento est praticamente concludo. Se no encontra o servidor Apache, ento tens de efectuar passos adicionais. 3. Usando o explorador do Windows, vai pasta de instalao do Subversion (usualmente c:\programas\Subversion) e procura os ficheiros /httpd/mod_dav_svn.so e mod_authz_svn.so. Copia esses ficheiros para a pasta de mdulos do Apache ( normalmente c: \programas\apache group\apache2\modules ). 4. Copia o ficheiro /bin/libdb*.dll e o /bin/intl3_svn.dll da pasta de instalao do Subversion para a pasta bin do Apache. 5. Edita o ficheiro de configuraes do Apache (normalmente C:\Programas\Apache Group \Apache2\conf\httpd.conf) com um editor de texto como o Notepad, e efectua as seguintes alteraes: Descomenta (remove a marca '#' ) das seguintes linhas: #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so Adiciona as duas seguintes linhas no fim da seco LoadModule. LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so

3.7.4. Configurao
Agora j instalaste o Apache e o Subversion, mas o Apache ainda no sabe lidar com os clientes do Subversion, como o TortoiseSVN. Para fazeres com que o Apache conhea o URL que ir ser usado para os repositrios do Subversion, ters de editar o ficheiro de configurao do Apache (normalmente localizado em c:\programas\apache group\apache2\conf\httpd.conf) com um qualquer editor de texto com o (e.g. Notepad): 1. No final do ficheiro de configurao, adiciona as duas seguintes linhas:: <Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\SVN #SVNIndexXSLT "/svnindex.xsl" AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile

28

O Repositrio

Require valid-user </Location> Estas configuram o Apache para que todos todos os repositrios Subversion estejam fisicamente localizados debaixo da pasta D:\SVN. Os repositrios so servidos para o mundo exterior a partir do URL: http://MyServer/svn/ . O acesso restricto a utilizadores/palavras-passe listadas no ficheiro passwd. 2. Para criar o ficheiro passwd, abre outra vez a linha de comandos (caixa-do-DOS) e vai para a pasta apache2 ( normalmente em c:\programas\apache group\apache2) e cria o ficheiro ao introduzires bin\htpasswd -c passwd <username> Isto ir criar um ficheiro com o nome passwd que ser usado para autenticao. Utilizadores adicionais podem ser adicionados com bin\htpasswd passwd <username> 3. Reinicia novamente o servio Apache. 4. Aponta o teu navegador de internet para http://MyServer/svn/MyNewRepository (onde MyNewRepository o nome do repositrio Subversion que criaste anteriormente). Se tudo correu bem, devers ser solicitato com o nome de utilizador e palavra passe, ento poders ver os contedos do teu repositrio.

Uma explicao curta do que acabaste de introduzir: Configurao <Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\SVN SVNIndexXSLT svnindex.xsl" AuthType Basic AuthName repositories" Explicao significa que os repositrios Subversion esto disponveis a partir do URL http://MyServer/svn/ indica ao Apache qual o mdulo que ser responsvel por servir esse URL - Neste caso o mdulo Subversion. A partir da verso 1.3 do Subversion, esta directiva permite listar todos os repositrios disponveis sob SVNParentPath. indica ao Subversion para procurar por repositrios sob D:\SVN "/ Usado para tornar mais bonita a navegao com um navegador de internet. para activar a autenticao bsica, i.e. Utilizador/Palavra-passe "Subversion usada como informao, quando aparece uma caixa de dilogo, a dizer ao utilizador qual o propsito da autenticao especifica qual o ficheiro de palavra-passe a utilizar para a autenticao. Localizao do ficheiro de Acessos, a caminhos no interior do repositrio Subversion. indica que s os utilizadores que introduziram o utilizador/palavrapasse correctas, esto autirizados a aceder ao URL

AuthUserFile passwd AuthzSVNAccessFile Require valid-user

Tabela 3.1. Configuraes do httpd.conf do Apache


Mas s um exemplo. Existem muitas mais possibilidades do que podes fazer com o servidor web Apache.

29

O Repositrio

Se quiseres que o teu repositrio tenha acesso de leitura para toda a gente, mas s permita acesso de escrita para utilizadores especficos, podes alterar a linha

Require valid-user to

<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> Ao utilizar um ficheiro passwd limitas a concedes o acesso a todos os teus repositrios como uma unidade. Se quiseres mais controlo sobre quais os utilizadores que tem acesso a cada pasta, dentro do repositrio, podes descomentar a linha

#AuthzSVNAccessFile svnaccessfile e criar um ficheiro de acesso ao Subversion. O Apache ir garantir que s os utilizadores vlidos podero aceder tua localizao /svn, e ir ento enviar o nome de utilizador ao mdulo AuthzSVNAccessFile do Subversion, para que este possa garantir um acesso mais granular, baseado nas regras listadas no ficheiro de acesso do Subversion. Observa que os caminhos so especificados ou como repos:path ou simplesmente path. Se no especificares um repositrio em particular, essa regra ir-se- aplicar a todos os repositrios sob SVNParentPath. O formato do ficheiro de polticas-de-autorizao usada por mod_authz_svn descrita em Seco 3.7.6, Autorizao Baseada-em-Caminhos Para tornar a navegao do repositrio mais bonita, utilizando um navegador de internet, descomenta a linha

#SVNIndexXSLT "/svnindex.xsl" e coloca os ficheiros svnindex.xsl, svnindex.css e menucheckout.ico na tua pasta raiz dos documentos (normalmente C:/Program Files/Apache Group/Apache2/htdocs). A pasta est configurada com a directiva DocumentRoot, no teu ficheiro de configurao do Apache. Tu podes obter esses trs ficheiros directamente do nosso repositrio fonte, em http:// tortoisesvn.googlecode.com/svn/trunk/contrib/svnindex. (Seco 3, O TortoiseSVN grtis! explica como aceder ao repositrio fonte do TortoiseSVN). O ficheiro XSL do repositrio do TortoiseSVN tem um bom chamariz: se navegares no repositrio com o teu navegador web, ento cada pasta do teu repositrio mostrar um cone direita. Se clicares nesse cone, a caixa de dilogo do TortoiseSVN checkout ir-se- iniciar para este URL.

3.7.5. Repositrios Mltiplos


Se utilizas a directiva SVNParentPath, ento no ters de alterar o ficheiro de configurao do Apache de cada vez que adicionares um novo repositrio Subversion. Simplesmente cria o novo repositrio na mesma localizao do primeiro repositrio e est concludo! Na minha empresa, eu tenho acesso directo a essa pasta especfica no servidor via SMB (acesso normal ao sistema de ficheiros Windows). Ento eu crio apenas uma nova pasta a, corro o comando TortoiseSVN Criar repositrio aqui... do TortoiseSVN, e o novo projecto tem agora um lar... Se ests a usar o Subversion 1.3 ou superior, podes usar a directiva SVNListParentPath on para permitir ao Apache produzir uma listagem de todos os projectos disponveis, se apontares o teu navegador web ao caminho pai, em vez de a um repositrio especfico.

30

O Repositrio

3.7.6. Autorizao Baseada-em-Caminhos


O mdulo mod_authz_svn permite um controlo mais fino das permisses de acesso baseadas nos nomes dos utilizadores e nos caminhos do repositrio. Isto est disponvel com o servidor Apache, e desde o Subversion 1.3 est tambm disponvel com o svnserve. Um ficheiro de exemplo teria o seguinte aspecto: [groups] admin = john, kate devteam1 = john, rachel, sally devteam2 = kate, peter, mark docs = bob, jane, mike training = zak # Regra de acesso, por defeito, para TODOS os repositorios # Todos podem ler, admins podem escrever, Dan German est excluido. [/] * = r @admin = rw dangerman = # Permite total acesso dos programadores aos repos do seu projecto [proj1:/] @devteam1 = rw [proj2:/] @devteam2 = rw [bigproj:/] @devteam1 = rw @devteam2 = rw trevor = rw # Da acesso de escrita a ao pessoal dos docs a todas as pastas de docs [/trunk/doc] @docs = rw # D aos estagiarios acesso de escrita apenas ao repositorio de treino [TrainingRepos:/] @training = rw Observa que verificar cada caminho pode ser uma operao cara, em particular no caso do registo de reviso. O servidor verifica cada caminho alterado em cada reviso, e verifica se est disponvel para leitura, o que pode ser consumidor de tempo em revises que afectam um grande nmero de ficheiros. Autenticao e autorizao so dois processos separados. SE o utilizador deseja ter acesso a um caminho do repositrio, ter de conhecer ambos, os requisitos usuais de autenticao e os requisitos de autorizao para aceder ao ficheiro.

3.7.7. Autenticao Com um Domnio Windows


Como poders ter notado, necessitars de criar uma entrada utilizador/palavra-chave no ficheiro passwd, para cada utilizador em separado. E se (por razes de segurana) quiseres que os teus utilizadores modifiquem periodicamente as suas palavras-passe, ters de efectua manualmente a alterao. Mas existe uma soluo para esse problema - pelo menos se ests a aceder ao repositrio a partir da LAN com um controlador de domnio Windows: mod_auth_sspi! O mdulo SSPI original foi oferecido pela Syneapps, incluindo o cdigo-fonte. Mas o desenvolvimento foi ento cancelado. No entanto no desesperes, pois a comunidade pegou nele e melhorou-o. Ele tem agora um novo lar, em SourceForge [http://sourceforge.net/projects/mod-auth-sspi/].

31

O Repositrio

Descarrega o mdulo que corresponde tua verso do Apache, e copia o ficheiro mod_auth_sspi.so para a pasta dos mdulos Apache. Edita o ficheiro de config. do Apache: adiciona a linha

LoadModule sspi_auth_module modules/mod_auth_sspi.so seco LoadModule. Tem a certeza que inseriste esta linha antes da linha

LoadModule auth_module modules/mod_auth.so Para fazer com que a localizao do Subversion use este tipo de autenticao, ters de alterar a linha

AuthType Basic para

AuthType SSPI , necessitas tambm de adicionar

SSPIAuth On SSPIAuthoritative On SSPIDomain <domaincontroller> SSPIOmitDomain on SSPIUsernameCase lower SSPIPerRequestAuth on SSPIOfferBasic On dentro do bloco <Location /svn>. Se no tiveres um controlador de domnio, deixa o nome do controlador de domnio como <domaincontroller>. Tem ateno que, se te autenticas utilizando o SSPI, no precisas mais ento da linha AuthUserFile para definir o ficheiro de palavra-passe. O Apache autentica ento o teu nome de utilizador e palavra passe com o domnio Windows. Necessitars de actualizar a tua lista de utilizadores no teu svnaccessfile para refernciar tambm o DOMAIN\username.

Importante
A autenticao SSPI s est activada para ligaes SSL seguras (https). Se s ests a usar ligaes http normais para o teu servidor, isto no ir funcionar. Para activar o SSL no teu servidor, consulta o captulo: Seco 3.7.9, Proteger o servidor com SSL

Dica
Os ficheiros AuthzSVNAccessFile do Subversion so sensveis a maiusculas e minusculas, em relao aos nomes de utilizadores (JUser diferente de juser). No mundo Microsoft, os domnios Windows e os nomes de utilizador no so sensveis a maisculas e minsculas. Mesmo assim alguns administradores de redes gostam de criar contas de utilizadores em CamelCase (e.g. JUser). 32

O Repositrio

Esta diferena pode-te trair ao usar a autenticao SSPI como domnio do Windows e os nomes dos utilizadores so passados ao Subversion tal como o utilizador os digita na prompt. O Internet Explorer passa com frequncia automaticamente o nome de utilizador para o Apache, usando a altura de letra com que foi criada a conta. O resultado final que poders necessitar de pelo menos duas entradas no teu AuthzSVNAccessFile para cada utilizador -- uma entrada em letra minscula e uma entrada com a mesma altura de letra com que o Explorador passa para o Apache. Tambm irs necessitar de formar os teus utilizadores para tambm digitar as suas credenciais usando um tipo de letra minscula, ao aceder aos repositrios via TortoiseSVN. Os registos de Erro e Acesso do Apache so os teus melhores amigos a decifrar problemas como estes, tal como te iro ajudar a determinar a string do nome do utilizador passada para o mdulo AuthzSVNAccessFile Subversion. Poders necessitar de experimentar com o formato exacto da string do utilizador no svnaccessfile (e.g. DOMAIN\user vs. DOMAIN//user) para conseguires por tudo a funcionar.

3.7.8. Mltiplas Fontes de Autenticao


tambm possvel ter mais do que uma fonte de autenticao para o teu repositrio Subversion. Para o fazeres, necessitas fazer com que cada tipo de autenticao seja no-autorizada, para que o Apache verifique nas mltiplas fontes por uma correspondncia utilizador/palavra-passe. Um cenrio comum o uso de autenticao por domnio Windows e por um ficheiro passwd, para que possas providenciar acesso a utilizadores fora do domnio Windows. Para activar a autenticao a ambos, domnio Windows e ficheiro passwd, adiciona as seguintes entradas dentro do bloco <Location> do teu ficheiro de config do Apache: AuthBasicAuthoritative Off SSPIAuthoritative Off Aqui est um exemplo de um ficheiro de configurao do Apache completo para a autenticao combinada, domnio Windows e ficheiro passwd: <Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\SVN AuthName "Subversion repositories" AuthzSVNAccessFile svnaccessfile.txt # NT Domain Logins. AuthType SSPI SSPIAuth On SSPIAuthoritative Off SSPIDomain <domaincontroller> SSPIOfferBasic On # Htpasswd Logins. AuthType Basic AuthBasicAuthoritative Off AuthUserFile passwd Require valid-user

33

O Repositrio

</Location>

3.7.9. Proteger o servidor com SSL


Mesmo que o Apache 2.2.x tenha suporte OpenSSL, este no est activado por defeito. Necessitars de o activar manualmente. 1. No ficheiro de config do Apache, descomenta as linhas:

#LoadModule ssl_module modules/mod_ssl.so e no fundo

#Include conf/extra/httpd-ssl.conf ento altera a linha (numa s linha)

SSLMutex "file:C:/Program Files/Apache Software Foundation/\ Apache2.2/logs/ssl_mutex" para

SSLMutex default 2. A seguir necessitas de criar um certificado SSL. Para o fazeres abre a linha de comandos (caixa-DOS) e muda para a pasta Apache (e.g. C:\program files\apache group\apache2) ento digita o seguinte comando:

bin\openssl req -config conf\openssl.cnf -new -out my-server.csr Ir-te- ser solicitada uma frase-passe. Por favor, no utilizes palavras simples mas sim frases completas, e.g. uma parte de um poema. Quanto mais longa a frase, melhor. Tambm ters de introduzir o URL do teu servidor. Todas as outras questes so opcionais, mas recomendamos que tambm as preenchas. Normalmente o ficheiro privkey.pem criado automaticamente, mas se no o for, necessitas de digitar o seguinte comando para ger-lo:

bin\openssl genrsa -out conf\privkey.pem 2048 Next type the commands

bin\openssl rsa -in conf\privkey.pem -out conf\server.key and (on one line)

bin\openssl req -new -key conf\server.key -out conf\server.csr \ -config conf\openssl.cnf and then (on one line)

34

O Repositrio

bin\openssl x509 -in conf\server.csr -out conf\server.crt -req -signkey conf\server.key -days 4000 This will create a certificate which will expire in 4000 days. And finally enter (on one line):

bin\openssl x509 -in conf\server.cert -out conf\server.der.crt -outform DER These commands created some files in the Apache conf folder (server.der.crt, server.csr, server.key, .rnd, privkey.pem, server.cert). 3. Reinicia o servio Apache 4. Aponta o teu navegador para https://servername/svn/project ...

SSL e o Internet Explorer


Se ests a proteger o teu servidor com SSL num domnio Windows, irs descobrir que j no consegues navegar no repositrio com o Internet Explorer. No te preocupes - isto s porque o Internet Explorer no se consegue autenticar. Outros navegadores no tm esse problema, tal como o TortoiseSVN e qualquer outro cliente Subversion, que ainda assim conseguiro se autenticar. Se ainda assim queres usar o Internet Explorer para navegar no repositrio, poders: Definir uma directiva <Location /path> separada no ficheiro de conf do Apache, e adiciona SSPIBasicPreferred On. Isto ir permitir ao Internet Explorer se autenticar de novo, mas entretanto os outros navegadores e o Subversion no se conseguiro autenticar para essa localizao. Oferece tambm a navegao com autenticao no encriptada (sem SSL). Estranhamente o IE no tem quaisquer problemas a autenticar-se, se a ligao no est protegida com SSL. Na configurao "padro" do SSL, existe normalmente a seguinte afirmao no host SSL virtual do Apache :

SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 Existem (existiam?) boas razes para esta configurao, consulta http://www.modssl.org/ docs/2.8/ssl_faq.html#ToC49 Mas se quiseres autenticao NTLM ters de usar keepalive. Se descomentares todo o SetEnvIf devers conseguir autenticar o IE com autenticao Windows sobre SSL para o Apache no Win32 incluindo o mod_auth_sspi.

Forando o acesso SSL


Quando configuraste o SSL para tornar o teu repositrio mais seguro, quererias desactivar o acesso por via normal no-SSL (http), e s permitir o acesso https. Para o fazeres ters de adicionar uma outra directiva ao bloco <Location> do Subversion: SSLRequireSSL. Um exemplo do bloco <Location> teria o seguinte aspecto:

35

O Repositrio

<Location /svn> DAV svn SVNParentPath D:\SVN SSLRequireSSL AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location>

3.7.10. Usando certificador cliente com hospedeiros SSL virtuais.


Enviado para a lista de correio do TortoiseSVN pelo Nigel Green. Obrigado! Em algumas configuraes do servidor poders necessitar de configurar um nico servidor com dois hospedeiros SSL virtuais. O primeiro para acesso web pblico, sem requisitos de certificado de cliente. O segundo mais seguro, correndo o servidor Subversion com o certificado de cliente obrigatrio. Adicionando a directiva SSLVerifyClient Optional seco per-server da configurao do Apache (i.e. fora de qualquer bloco VirtualHost e Directory), fora o Apache a requisitar um Certificado cliente, na negociao SSL inicial. Devido a um bug no mod_ssl essencial que o certificado seja pedido neste ponto, j que no funcionar se a ligao SSL for pr-negociada. A soluo adicionar a seguinte directiva pasta hospedeiro virtual que desejas bloquear para o Subversion:

SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS" Esta directiva garante acesso pasta s se o certificado cliente foi recebido e verificado com sucesso. To summarise, the relevant lines of the Apache configuration are:

SSLVerifyClient Optional ### Virtual host configuration for the PUBLIC host ### (not requiring a certificate) <VirtualHost 127.0.0.1:443> <Directory "pathtopublicfileroot"> </Directory> </VirtualHost> ### Virtual host configuration for SUBVERSION ### (requiring a client certificate) <VirtualHost 127.0.0.1:443> <Directory "subversion host root path"> SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS" </Directory> <Location /svn> DAV svn SVNParentPath /pathtorepository </Location> </VirtualHost>

36

Captulo 4. Guia de Uso Dirio


Este documento descreve a utilizao diria do cliente TortoiseSVN. No uma introduo aos sistemas de controlo de verses nem uma introduo ao Subversion (SVN), mais um local a que podes recorrer quando tens uma ideia do que pretendes mas no te lembras como o fazer. Se necessitas de uma introduo ao controlo de verses com o Subversion, ento ns recomendamos a leitura do fantstico livro: Version Control with Subversion [http://svnbook.red-bean.com/]. Este documento tambm estar continuamente em actualizao, tal como o Tortoise e o Subversion. Se encontrares algumas falhas, relata-os por favor s mailing lists para que possamos actualizar a documentao. Alguns dos screenshots no Guia de Uso Dirio (GUD) podero no reflectir a verso corrente do software. Perdoem-nos por esse facto, pois estamos a trabalhar no TortoiseSVN no nossos tempos livres. De modo a conseguir o mximo proveito do Guia de Uso Dirio: Devers ter o TortoiseSVN j instalado. Devers estar familiarizado com os sistemas de controlo de verses. Devers conhecer os fundamentos do Subversion. Devers ter o servidor configurado e/ou ter acesso a um repositrio do Subversion.

4.1. Comeando
4.1.1. Sobreposio de cones

Figura 4.1. O explorador mostrando os cones sobrepostos


Uma das funcionalidades mais visveis do TortoiseSVN so os cones sobrepostos que aparecem nos ficheiros na tua cpia de trabalho. Estes do-te uma vista geral dos ficheiros que foram modificados. Consultar Seco 4.7.1, Sobreposio de cones para saber mais sobre o que cada cone sobreposto representa.

4.1.2. Menus de Contexto

37

Guia de Uso Dirio

Figura 4.2. Menu de Contexto de uma pasta sob controlo de verses.


Todos os comandos do TortoiseSVN so invocados a partir do menu de contexto no explorador do Windows. A maioria esto directamente visveis quando clicas com o boto direito numa pasta ou ficheiro. A lista de comandos disponveis dependem do caso de se tratar de uma pasta ou um ficheiro, ou se o ficheiro pai se encontra sob controlo de verses, ou no. Podes tambm ver o menu do TortoiseSVN como uma parte do menu ficheiro do Explorador.

Dica
Alguns comandos que so utilizados muito raramente, esto disponiveis apenas no menu de contexto extendido. Para mostrar o menu de contexto extendido, manter premida a tecla Shift enquanto clicas com o boto direito do rato. Em alguns casos vers vrias entradas TortoiseSVN, o que no representa um bug!

38

Guia de Uso Dirio

Figura 4.3. Menu de ficheiro do Explorador para um atalho numa pasta versionada.
Neste exemplo est um atalho no versionado dentro de uma pasta versionada, e no menu ficheiro do Explorador esto trs entradas para o TortoiseSVN. Uma para a pasta, outra para o atalho em si e a terceira para o objecto para o qual o atalho aponta. Para ajudar a distinguir entre eles, os cones tm um indicador no canto inferior direito, para distinguir se a entrada de menu para um ficheiro, pasta ou atalho para mltiplos itens seleccionados. Se usas o Windows 2000 vers que os menus de contexto sero mostrados como texto simples, sem os menus de cones mostrados acima. Estamos conscientes de que em verses anteriores isto estava a funcionar, mas a Microsoft alterou a forma como os seus handlers de cones funcionam no Vista, forando-nos a utilizar um mtodo diferente de visualizao que infelizmente j no funcionam para o Windows 2000.

4.1.3. Arrastar e Largar

39

Guia de Uso Dirio

Figura 4.4. Menu arrastar com o boto direito para uma pasta sob controlo de verses.
Outros comandos esto disponveis como opes de arrasto quando arrastas com o boto direito ficheiros ou pastas para uma nova localizao dentro da cpia de trabalho, ou quando arrastas com o boto direito um ficheiro no versionado ou uma pasta para outra pasta sob o controlo de verses.

4.1.4. Atalhos comuns


Algumas operaes comuns tm atalhos no Windows, mas no aparecem em botes ou menus. Se no consegues descobrir como fazer alguma coisa bvia, como refrescar uma vista, v aqui. F1 Ajuda, claro. F5 Refrescar a vista corrente. Esta provavelmente o comando de tecla nica mais til. Por exemplo ... No Explorador, os cones sobrepostos da tua cpia de trabalho sero actualizados (refrescados). Na caixa de dilogo submeter, a cpia de trabalho ser reanalisada de modo a verificar o que precisa de ser submetido. Na caixa de dilogo Mensagens de Registo, o repositrio ser contactado de novo para verificar as alteraes mais recentes. Ctrl-A Seleccionar todos. Poder ser utilizado em caso de receberes uma mensagem de erro quiseres copiar e colar para um email. Usa Ctrl-A para seleccionar a mensagem de erro e... Ctrl-C ... Copiar o texto seleccionado.

4.1.5. Autenticao
Se o repositrio a que tentas aceder est protegido por palavra-passe, uma caixa de dilogo de autenticao ir surgir.

40

Guia de Uso Dirio

Figura 4.5. Caixa de dilogo de autenticao


Introduzir o teu nome de utilizador e palavra-passe. A caixa de verificao ir fazer com que o TortoiseSVN guarde as credenciais na pasta por defeito do Subversion: %APPDATA%\Subversion \auth em trs subpastas: svn.simple contains credentials for basic authentication (username/password). svn.ssl.server contm os certificados SSL de servidor. svn.username contm as credenciais para autenticao apenas por utilizador (sem necessidade de palavra-passe). Se quiseres limpar a cache de autenticao para todos os servidores, poders faze-lo a partir da pgina Saved Data da caixa de dilogo de definies do TortoiseSVN. Esse boto ir limpar todos os dados de autenticao guardados nas pastas auth do Subversion, tal como quaisquer dados de autenticao guardados no registo por verses anteriores do TortoiseSVN. Ver Seco 4.30.6, Preferncias de Dados Guardados. Algumas pessoas gostam que os dados de autenticao sejam apagados quando terminam a sesso no Windows, ou quando desligam o computador. A maneira de obter isso atravs do uso de um script que apague a pasta %APPDATA%\Subversion\auth, ou seja @echo off rmdir /s /q "%APPDATA%\Subversion\auth" Poders obter uma descrio de como instalar tal script em windows-help-central.com [http:// www.windows-help-central.com/windows-shutdown-script.html]. Para mais informaes em como configurar o teu servidor em autenticao e controlo de acessos, consulta Seco 3.5, Aceder ao Repositrio

4.1.6. Maxiizando Janelas


Muitas das caixas de dilogos do TortoiseSVN tm muita informao para visualizar, pelo que normalmente til maximizar s a altura ou largura, em vez de maximizar para preencher o ecran. Como convenincia existem atalhos para este caso no boto Maximizar. Utilizar o boto do meio do rato para maximizar verticalmente e o do direito do rato para maximizar horizontalmente

4.2. Importando Dados Para Um Repositrio


4.2.1. Importar

41

Guia de Uso Dirio

If you are importing into an existing repository which already contains some projects, then the repository structure will already have been decided. If are importing data into a new repository then it is worth taking the time to think about how it will be organised. Read Seco 3.1.5, Estrutura do Repositrio for further advice. Esta seco descreve o comando import do Subversion, que desenhado para importar uma hierarquia de pastas para um repositrio de uma vez s. Apesar de executar o trabalho, possui no entanto algumas limitaes: No existe modo de seleccionar ficheiros e pastas a incluir, tal como utilizar as configuraes do padro global para ignorar arquivos. A pasta importada no se torna uma cpia de trabalho. Ters de efectuar um SVN exportar para copiar os ficheiros de volta do servidor. fcil importar a pasta de nvel errado para o repositrio. Por essas razes recomendamos que no use em definitivo o comando import, mas antes, siga o mtodo de dois passos descrito em Seco 4.2.2, Importar no local. Mas como ests aqui, eis como funciona o import bsico... Antes de importares o teu projecto para o repositrio devers: 1. Remover todos os ficheiros que no so precisos para construir o projecto (ficheiros temporrios, ficheiros gerados pelo compilador, por exemplo, *.obj, binrios compilados, ...) 2. Organizar os ficheiros em pastas e subpastas. Apesar de ser possvel renomear/remover os ficheiros mais tarde, altamente recomendado estruturar correctamente o teu projecto antes de o importar! Agora seleccionar a pasta de topo da estrutura de pastas do teu projecto no windows explorer e, clica c/ o boto direito para abrir o menu de contexto. Selecciona o comando TortoiseSVN Importar... que mostrar a caixa de dilogo:

Figura 4.6. Caixa de dilogo Importar


Nesta caixa de dilogo ters de introduzir o URL da localizao do repositrio, no qual queres importar o teu projecto. importante ter a noo que a pasta local, que ests a importar, no aparecer ela prpria no repositrio, s o seu contedo. Por exemplo, se tens uma estrutura:

42

Guia de Uso Dirio

C:\Projects\Widget\source C:\Projects\Widget\doc C:\Projects\Widget\images e importas C:\Projects\Widget em http://mydomain.com/svn/trunk, ento poders ter a supresa de descobrir que as tuas subpastas vo direitas para trunk em vez de estarem na subpasta Widget. Ters de especificar a subpasta como parte do URL, http://mydomain.com/svn/ trunk/Widget-X. De notar que o comando importar ir criar as subpastas automaticamente no repositrio, caso elas no existam. A mensagem de importar utilizada como mensagem de registo. Por defeito, ficheiros e pastas que correspondem aos padres globais para ignorar arquivos no so importados. Para substituir este comportamento, poders usar a caixa de verificao Incluir arquivos ignorados. Consultar em Seco 4.30.1, Preferncias Gerais, para mais informaes em como introduzir um padro de arquivos a ignorar. Assim que premires OK TortoiseSVN importa a arvore de pastas completa, ncluindo todos ficheiros, para o repositrio. O projecto est agora armazenado, sob controlo de verses, no repositrio. Note-se que a pasta que importaste NO est sob controlo de verses. Para obter uma cpia de trabalhocom controle de verses, necessitars de efectuar um SVN Exportar da verso que acabaste de importar. Ou l, para descobrir como importar uma pasta no local.

4.2.2. Importar no local


Assumindo que j tens um repositrio e queres adicionar uma pasta sua estrutura, segue estes passos: 1. Usa o navegador de repositrio para criar uma nova pasta de projecto, directamente no repositrio. 2. SVN exporta a nova pasta acima da pasta que queres importar. Irs receber um aviso que a pasta local no est vazia. Agora tens uma pasta de topo versionada com contedo no versionado. 3. Usa TortoiseSVN Adicionarmenuitem> nesta pasta versionada para adicionar algum ou todo o seu contesvn:ignore em pastas e fazer qualquer outra alteraSubmete a pasta de topo,e ter

4.2.3. Ficheiros Especiais


s vezes necessrio ter um ficheiro sob o controlo de verses que contm dados especficos, isto , tens um ficheiro que cada desenvolvedor/utilizador necessita modificar para satisfazer o seu/sua configurao. Mas o versionamento de tal ficheiro difcil porque, cada utilizador iria, a todo o momento, submeter as suas alteraes ao repositrio. Em alguns casos sugerimos o uso de ficheiros template. Cria um ficheiro que contm os dados que os teus desenvolvedores precisam, adiciona este ficheiro ao controlo de verses e deixa os desenvolvedores exportar este ficheiro. Ento, cada desenvolvedor tem que fazer uma cpia desse ficheiro e renomear essa cpia. Aps isto, modificar a cpia j no um problema. Como um exemplo, podes olhar para o script de construo do TortoiseSVN. Ele chama um ficheiro chamado TortoiseVars.bat que no existe no repositrio, s o ficheiro TortoiseVars.tmpl. O TortoiseVars.tmpl um ficheiro template que cada desenvolvedor tem de criar uma cpia de, e renome-lo para TortoiseVars.bat. No interior desse ficheiro, adicionmos comentrios para que os utilizadores vejam quais as linhas que tm de editar e mudar de acordo com a sua configurao, de forma a faze-la funcionar. Ento, para no perturbar os utilizadores, ns adicionmos tambm o ficheiro TortoiseVars.bat lista de arquivos a ignorar do sua pasta me, i.e colocmos esse ficheiro na propriedade svn:ignore. Deste modo no aparecer como ficheiro no versionado a cada submisso.

43

Guia de Uso Dirio

4.3. SVN Exportar Para Uma Cpia de Trabalho


Para obter uma cpia de trabalho necessitas de efectuar primeiro um SVN Exportar de um repositrio. Seleccionar uma pasta no explorador do windows onde queres colocar a tua cpia de trabalho. Clicar com o boto direito para aparecer o menu de contexto, e selecciona o comando TortoiseSVN SVN Exportar..., que mostrar a seguinte caixa de dilogo:

Figura 4.7. A caixa de dilogo Checkout


Se introduzires um nome de pasta que ainda no existe, uma pasta com esse nome ser criada.

4.3.1. Profundidade do Checkout


Podes escolher a profundidade que queres SVN Exportar, o que te permite especificar a profundidaded da recursividade nas pastas filho. Se quiseres apenas algumas seces de uma grande rvore, podes fazer SVN Exportar apenas da pasta de topo e depois actualizar recursivamente pastas seleccionadas. Totalmente recursiva Efectuar checkout a rvore inteira, incluindo todas as pastas filho e subpastas. filhos directos, incluindo pastas Efectuar checkout a pasta especficada, incluindo todos os ficheiros e pastas filho, mas no povoar as pastas filho. S ficheiros filho Efectuar checkout a pasta especficada, incluindo todos os ficheiros mas no efectuar checkout qualquer pasta filho. S este item Efectuar checkout s a pasta. No povoa-la com ficheiros ou pastas filho. Cpia de trabalho Reter a profundidade especificada na cpia de trabalho. Esta opo no usada na caixa de dilogo do SVN exportar, mas a opo por defeito para todas as outras caixas de dilogo que tm a configurao de profundidade.

44

Guia de Uso Dirio

Excluir Usado para reduzir a cpia de trabalho, depois de a pasta j ter sido povoada. Esta opo s est disponvel na caixa de dilogo Actualizar para a reviso. Se SVN exportares para uma cpia de trabalho parcial (i.e, escolhendo outra opo para alm da totalmente recursiva relativamente profundidade de exportao), poders resgatar subpastas adicionais, utilizando o navegador do repositrio (Seco 4.24, O Navegador de Repositrio) ou a caixa de dilogo verificar modificaes (Seco 4.7.3, Estado Remoto e Local). No navegador de repositrio, clicar com o boto direito na pasta SVN exportada e usar o TortoiseSVN Navegador de Repositrio para mostrar o navegador de repositrio. Seleccionar a subpasta que gostarias de adicionar tua cpia de trabalho e utilizar, Context menu Actualizar item para reviso.... Esse menu s ser visvel, se o item seleccionado ainda no existir na tua cpia de trabalho mas o item pai j exista. Na caixa de dilogo verificar alteraes, clicar primeiro no boto Verificar repositrio. A caixa de dilogo mostrar todos os ficheiros e pastas que esto no repositrio, mas no foram exportadas como, adicionada remotamente. Clicar com o boto direito na pasta(s) que gostarias de adicionar tua cpia de trabalho e, usa Menu de contexto Actualizar. Esta funcionalidade muito til quando s queres SVN exportar partes de uma rvore grande, mas desejas a convenincia de actualizar uma s cpia de trabalho. Supem que tens uma grande rvore rvore que tem as subpastas Project01 at Project99, e s queres SVN exportar Project03, Project25 e Project76/SubProj. Utiliza estes passos: 1. SVN exportar a pasta pai com a profundidade S este item. Agora tens uma pasta de topo vazia. 2. Seleccionar a nova pasta e usar TortoiseSVN Navegador de repositrio para visualizar o contedo do repositrio. 3. Clicar com o boto direito no Project03 e Menu contexto Actualizar item para reviso.... Mantm as configuraes por defeito e clica em OK. Agora tens essa pasta totalmente povoada. Repetir o mesmo processo para o Project25. 4. Navegar para o Project76/SubProj e fazer o mesmo. Desta vez verifica que a pasta Project76 no tem contedo excepo do SubProj, que por s est totalmente povoada. O Subversion criou as pastas intermedirias por ti, mas sem as povoar.

Modificando a profundidade da cpia de trabalho


Uma vez que tenhas SVN exportado uma cpia de trabalho, com uma profundidade particular, poders modificar a mesma mais tarde para obter maior ou menor contedo utilizando Context menu Actualizar item para reviso....

Usando um servidor mais antigo


Servidores anteriores verso 1.5, no compreendem o pedido de profundidade da cpia de trabalho no lidando com eficincia com os pedidos. O comando continuar a funcionar, mas um servidor antigo poder enviar todos os dados, deixando o cliente filtrar o que no precisa o que poder gerar muito trfico de rede. Se possvel devers actualizar o teu servidor para a verso 1.5. Se o projecto contiver referncias a projectos externos, que no pretendas SVN exportar ao mesmo tempo, usa a caixa de verificao Omitir externos

45

Guia de Uso Dirio

Importante
Se Omitir externos est verificada, ou se desejas aumentar o valor de profundidade, tens de efectuar actualizaes cpia de trabalho utilizando TortoiseSVN Actualizar para reviso... em vez de TortoiseSVN Actualizar. A actualizao padro ir incluir todos os externos e manter a profundidade existente. recomendado que SVN exportes s at parcela trunk da rvore de pastas. Se especificares o caminho pai da arvore de pastas no URL poders acabar com um disco rgido cheiro, visto que, ters uma cpia inteira da rvore do repositrio inclindo cada ramo e etiqueta do teu projecto!

Exportando
Por vezes querers criar uma cpia local sem nenhumas das pastas .svn, i.e. criar uma tarball zipada do teu cdigo fonte. L Seco 4.26, Exportar uma Cpia de Trabalho do Subversion para descobrires como o fazer.

4.4. Submetendo as tuas alteraes para o Repositrio


Enviar as alteraes que fizeste, na tua cpia de trabalho, conhecida como submeter as alteraes. Mas antes de as submeteres, tens de ter a certeza que a tua cpia de trabalho se encontra actualizada. Poders usar directamente TortoiseSVN Actualizar ou usar primeiro TortoiseSVN Verificar alteraes, para ver que ficheiros foram alterados localmente ou no servidor.

4.4.1. A Caixa de Dilogo Submeter


Se a tua cpia de trabalho se encontra actualizada e no existem conflitos, ento ests em condies para submeter as tuas alteraes. Seleccionar os ficheiros e/ou pastas que queres submeter e, TortoiseSVN Submeter....

46

Guia de Uso Dirio

Figura 4.8. A Caixa de Dilogo Submeter


A caixa de dilogo submeter mostra-te cada ficheiro alterado, incluindo os adicionados, apagados e no versionados. Se no queres que um ficheiro alterado seja submetido, limpa a caixa de verificao desse ficheiro. Se quiseres adicionar um ficheiro no versionado, ento verifica esse ficheiro, para o adicionar submisso. Itens que foram comutados para um repositrio diferente so tambm indicados com o uso do marcador (s). Poders ter comutado algo enquanto trabalhavas num ramo, e esquecido de comutar de novo para o trunk. Isto um sinal de aviso!

Submeter ficheiros ou pastas?


Quando submetes ficheiros, a caixa de dilogo de submeter mostrar s os ficheiros seleccionados. Quando submetes uma pasta, a caixa de dilogo submeter ir seleccionar os ficheiros alterados automaticamente. Se te esqueceres de um novo ficheiro criado ao submeter a pasta, ele ser encontrado. Submetendo a pasta no significa que todos os ficheiros sero marcados como alterados; Apenas significa que ser feito mais trabalho por ti, facilitando-te a vida.

47

Guia de Uso Dirio

Se alteraste ficheiros que foram includos a partir de um repositrio diferente, usando svn:externals, essas alteraes no podero ser includas na mesma submisso atmica. Um smbolo de aviso, por baixo do ficheiro, dir-te- se isto aconteceu. Uma etiqueta de dica explicar que esses ficheiros externos tm de ser submetidos separadamente.

Muitos ficheiro no versionados na caixa de submisso


Se sentires que a caixa de dilogo de submisso mostra muitos ficheiros no versionados (e.g. gerados pelo compilador ou backups do editor), existem vrias maneiras para lidar com esta situao. Poders: Adicionar o ficheiro (ou uma extenso de carcter de substituio) lista de ficheiros a excluir, na pgina de configuraes. Isto ir afectar todas as cpias de trabalho que tens. Adicionar o ficheiro lista svn:ignore usando TortoiseSVN Apaga e adiciona lista de ignorados. Isto s afectar a pasta onde foi alterada a propriedade svn:ignore. Usando a Caixa de Dilogo de Propriedades SVN, poders alterar a propriedade svn:ignore para a pasta. Ler Seco 4.13, Ignorando Ficheiros E Pastas para mais informao. O Duplo clique na caixa de dilogo submeter, em qualquer ficheiro alterado, ir lanar a ferramenta externa diff para mostrar as tuas alteraes. O menu de contexto ir dar-te mais opes, como pode ser visto no screenshot. Poders tambm arrastar ficheiros daqui para outra aplicao, como um editor de texto ou um IDE. Poders seleccionar ou desseleccionar items clicando na caixa de verificao esquerda do item. Para pastas poders usar Shift-Seleccionar para tornar essa aco recursiva. As colunas mostradas no painel de fundo so customizveis. Se clicares com o boto direito em qualquer cabealho de coluna vers um menu de contexto, que te permitir seleccionar quais as colunas que sero mostradas. Poders tambm alterar a largura da coluna utilizando um indicador de arrasto, que aparecer quando moveres o rato sobre os limites da coluna. Estas customizaes so conservadas para que as vejas os mesmos cabealhos da prxima vez. Por defeito ao submeteres as tuas alteraes, so libertados automaticamente quaisquer bloqueios que tiveres sobre ficheiros aps o sucesso da submisso. Se desejares mater esses bloqueios tem a certeza que a caixa de verificao Manter bloqueios. Por defeito o estado dessa caixa de verificao retirada a partir da opo no_unlock, no ficheiro de configurao do Subversion. Ler Seco 4.30.1, Preferncias Gerais para mais informaes em como editar o ficheiro de configurao do Subversion.

Arrastar e Largar
Podes arrastar ficheiros de qualquer provenincia para a caixa de dilogo Submeter desde que, as cpias de trabalho estejam exportadas a partir do mesmo repositrio. Por exemplo, tu podes ter uma gigantesca cpia de trabalho, com vrias janelas de explorador abertas para visualizar distantes pastas na hierarquia. Se desejas evitar submeter a partir da pasta de topo (com uma pesquisa lenta da pasta em procura por alteraes), podes abrir a caixa de dilogo de submeter para uma pasta e arrastar itens de outras janelas, para os assim incluir na mesma submisso atmica. Podes arrastar, para a caixa de dilogo de submeter, ficheiros no versionados que residem na cpia de trabalho e eles sero adicionados automaticamente ao SVN.

48

Guia de Uso Dirio

Reparando Alteraes de Nome Externas


Por vezes, alterado o nome de alguns ficheiros fora do Subversion e, eles so mostrados na lista de ficheiros como um em falta e outro ficheiro no versionado. Para evitar perder o histrico necessitas de notificar o Subversion a cerca da ligao. Simplesmente selecciona o de nome antigo(em falta) e o de novo nome (no versionado) e para emparelhar os dois ficheiros como uma alterao de nome usa Context Menu Reparar Movimento

4.4.2. Listas de Alteraes


A caixa de dilogo de submisso suporta a funcionalidade listas de alteraes, para ajudar a agrupar ficheiros. Sabes mais acerca desta funcionalidade em Seco 4.8, Listas de Alteraes.

4.4.3. Excluir itens da lista a Submeter


Por vezes, tens ficheiros versionados que so alterados frequentemente mas que no desejas submeter. Por vezes isso indica uma falha no processo de construo - porque so estes ficheiros versionados? devias ter usado ficheiros template? Mas por vezes inevitvel. A razo clssica a mudana, pelo IDE, da marca temporal do ficheiro de projecto, de cada vez que o constris. O ficheiro de projecto tem de ser versionado pois inclui todas as configuraes de construo, mas no entanto no precisa de ser submetido s porque a sua marca temporal foi alterada. Para ajudar em casos estranhos como este, temos reservada uma lista de alteraes chamada ignoreon-commit. Qualquer ficheiro adicionado a esta lista de alteraes ser automaticamente no seleccionada na caixa de dilogo de submisso. Poders ainda submeter as alteraes mas, ters de as seleccionar manualmente na caixa de dilogo de submisso.

4.4.4. Mensagens de Registo de Submeter


Tem a certeza de, inserir uma mensagem de registo que descreve as alteraes que vais submeter. Isto irte- ajudar a visualizar o que aconteceu e quando, enquanto navegas atravs das mensagens de registo do projecto, numa data posterior. A mensagem pode longa ou breve, conforme o desejares; muitos projectos tm guias para o que dever ser includo, a linguagem a usar, e por vezes at um formato rgido. Podes aplicar um formato simples s tuas mensagens de registo, usando uma conveno similar usada nos emails. Para aplicar estilo ao texto usar; *text* para negrito, _text_ para sublinhado, e ^text^ para itlico.

49

Guia de Uso Dirio

Figura 4.9. A Verificao de Sintaxe na Caixa de Dilogo Submeter


O TortoiseSVN inclui um verificador de sintaxe que te ajuda a conseguir obter mensagens de registo bem escritas. Este ir sobressair qualquer palavra mal escrita. Usa o menu de contexto para aceder s correces sugeridas. claro que ele no conhece todos os termos tcnicos que utilizas, podendo aparecer como erros termos correctamente escritos. No te preocupes, poders os adicionar ao teu dicionrio pessoal, usando o menu de contexto. A janela de mensagem de registo tambm inclui a funcionalidade de auto concluso de nomes de ficheiros e funes. Esta funcionalidade usa expresses regulares para extrair os nomes de funes e classes, a partir dos ficheiros (de texto) que ests a submeter tal como os nomes dos ficheiros em si. Se a palavra que ests a escrever condiz com qualquer entrada na lista (depois de escreveres pelo menos 3 caracteres, ou premido Ctrl+Space), uma lista de termos aparecer para te permitir seleccionar o nome completo. As expresses regulares fornecidas com o TortoiseSVN esto armazenadas na pasta bin da instalao do TortoiseSVN. Podes tambm definir as tuas prprias regexes e armazena-las em %APPDATA%\TortoiseSVN\autolist.txt. Est claro que a tua auto lista privada no ser reescrita quando actualizas a tua instalao do TortoiseSVN. Se no ests familiarizado com expresses regulares, d uma vista de olhos na introduo em http://pt.wikipedia.org/wiki/Expresso_regular [http:// en.wikipedia.org/wiki/Regular_expression], e o tutorial e documentao online em http://www.regularexpressions.info/.

50

Guia de Uso Dirio

Podes reutilizar mensagens inseridas previamente. clica apenas em Mensagens recentes para ver a lista de algumas das ltimas mensagens que inseriste, nesta cpia de trabalho. O nmero de mensagens guardadas pode ser customizvel na caixa de dilogo de configurao do TortoiseSVN. Podes limpar todas a mensagens de registo de submisso armazenadas na pgina Dados Guardados de configuraes do TortoiseSVN, ou poders limpar mensagens individuais a partir da caixa de registo Mensagens recentes usando a tecla Delete. Se queres incluir, na mensagem de registo, os caminhos seleccionados, podes usar no controlo de edio o comando Context Menu de Contexto Colar lista de nomes de arquivos. Outra maneira para inserir caminhos na mensagem de registo simplesmente, arrastar os ficheiros da lista de ficheiros para o controlo de edio.

Propriedades de Pastas Especiais


Existem vrias propriedades de pastas especiais que podem ser usadas para dar mais controlo sobre a formatao das mensagens de registo de formatao, e a lngua usada para o mdulo de verificao ortogrfico. Ler Seco 4.17, Configuraes de Projecto para mais informao.

Integrao com Ferramentas de Controlo de Problemas


Se activaste o sistema de controlo de problemas, podes introduzir um ou mais Problemas na caixa de texto ID-Problema / Nr-Assunto:. Mltiplos assuntos devem ser separados por vrgulas. Em alternativa, se estiveres a usar o suporte para controlo de problemas baseado em regex, adiciona apenas as tuas referncias de assunto como parte da mensagem de registo. Sabe mais em Seco 4.28, Integrao com Sistemas de controlo de problemas/ Gestores de Problemas.

4.4.5. Progresso do Submeter


Aps premir o OK, aparece a caixa de dilogo que mostra o progresso da submisso.

Figura 4.10. A caixa de dialogo de Progresso, mostrando a submisso em progresso


A caixa de dilogo de progresso usa um cdigo de cores para evidenciar as aces de submisso Azul Submetendo uma alterao.

51

Guia de Uso Dirio

Roxo Submetendo uma nova adio. Vermelho escuro Submetendo uma substituio ou apagamento. Preto Todos os outros itens. Este o esquema de cores por defeito, mas podes alterar essas cores usando a caixa de dilogo configuraes. Ler Seco 4.30.1.4, Preferncias de cor do TortoiseSVN para mais informao.

4.5. Actualizar a Tua Cpia de Trabalho Com Alteraes de Outros

Figura 4.11. Caixa de dilogo de progresso mostrando uma actualizao finalizada.


Periodicamente, devers garantir que as alteraes feitas por outros so incorporadas na tua cpia de trabalho local. O processo de obter as alteraes do servidor para a cpia local conhecido como actualizando. Actualizao pode ser feita em ficheiros isolados, um conjunto de ficheiros seleccionados, recursivamente numa estrutura de hierarquia de pastas. Para actualizar selecciona os ficheiros e/ou pastas que desejas, clica com o boto direito e selecciona TortoiseSVN Actualizar no menu de contexto do explorador. Uma janela aparecer mostrando o progresso da actualizao, enquanto ela decorre. As alteraes feitas por outros sero fundidas com os teus ficheiros, mantendo quaisquer alteraes que tenhas feito nos mesmos. O repositrio no afectado pela actualizao. A caixa de dilogo de progresso usa um cdigo de cores para evidnciar diferentes aces de actualizao Roxo Novo item adicionado tua CT. Vermelho escuro Item redundante apagado da tua CT, ou um item em falta substitudo na tua CT. Verde Alteraes do repositrio fundidas com sucesso, com tuas alteraes locais. Vermelho brilhante Alteraes do repositrio fundidas com as alteraes locais, resultando em conflitos que necessrio resolver.

52

Guia de Uso Dirio

Preto Item no alterado, na tua CT, actualizado com uma nova verso do repositrio. Este o esquema de cores por defeito, mas podes alterar essas cores usando a caixa de dilogo configuraes. Ler Seco 4.30.1.4, Preferncias de cor do TortoiseSVN para mais informao. Se tiveres alguns conflitos durante uma actualizao (o que pode acontecer se outros alterarem as mesmas linhas nos mesmos ficheiros que tu alteraste, e essas alteraes no condizerem), ento a caixa de dilogo mostra esses conflitos a vermelho. Podes efectuar clicar duplo clique nessas linhas para iniciar a ferramenta externa de fuso, para resolver esses conflitos. Quando a actualizao est concluda a caixa de dilogo de progresso mostra, debaixo da lista de ficheiros, o resumo do nmeros de itens actualizados, adicionados, apagados, em conflito, etc. Esta informao de sumrio pode ser copiada para o clipboard usando Ctrl+C. O comando de Actualizao padro no tem opes e apenas actualiza a tua cpia de trabalho para a reviso HEAD do repositrio, que o caso de utilizao mais comum. Se quiseres mais controlo sobre o processo de actualizao devers usar em alternativa TortoiseSVN Atualizar para reviso.... Este te permite actualizar a tua cpia de trabalho para uma reviso especfica, e no s para a mais recente. Supem que a tua cpia de trabalho est na reviso 100, mas tu queres que reflicta o estado que tinha na reviso 50 - ento simplesmente actualiza para a reviso 50. Na mesma caixa de dilogo tambm podes escolher a profundidade a que deve ser actualizada a pasta corrente. Os termos usados esto descritos em Seco 4.3.1, Profundidade do Checkout. A profundidade por defeito Cpia de trabalho, que preserva a configurao de profundidade existente. Podes tambm escolher se deves ignorar qualquer projecto externo, na actualizao (i.e. projectos referenciados usando svn:externals).

Cuidado
Se actualizas um ficheiro ou uma pasta para uma reviso especfica no devers efectuar alteraes nos mesmos. Obters mensagens de erro desactualizado quando tentares submete-las! Se quiseres desfazer as alteraes efectuadas num ficheiro ou comear de novo a partir de uma reviso anterior, podes rebobinar para uma reviso anterior a partir da caixa de dilogo de registo de revises. D uma vista de olhos em Seco B.4, Reverter (Anular) revises no repositrio para mais instrues e mtodos alternativos. Atualizar para reviso pode ocasionalmente ser til para ver qual o aspecto que tinha o teu projecto num ponto anterior da sua histria. Mas na generalidade, actualizar ficheiros individuais para uma verso anterior no uma boa ideia, pelo que deixa a tua cpia de trabalho num estado inconsistente. Se o ficheiro que ests a actualizar mudou de nome, poders constatar que o mesmo desaparece da tua cpia de trabalho porque, nenhum ficheiro com esse nome existia na reviso anterior. Deves tambm constatar que o item mostrar uma sobreposio verde normal, pelo que ser indistinguvel dos ficheiros que esto actualizados. Se queres simplesmente uma cpia local de uma verso antiga de um ficheiro melhor utilizar, a partir da caixa de dilogo do registo, o comando Menu ContextoGuardar reviso em...

Mltiplos Ficheiros/Pastas
Se seleccionares mltiplos ficheiro e pastas no explorador e ento seleccionares Actualizar, todos esses ficheiros/pastas so actualizados um por um. O TortoiseSVN garante que todos os ficheiros/pastas que so do mesmo repositrio so actualizados exactamente para a mesma reviso! Mesmo que entre essas actualizaes outra submisso ocorra.

Ficheiro Local J Existe


Por vezes quando tentas actualizar, a actualizao falha com a mensagem que diz que j existe um ficheiro local com o mesmo nome. Isto tipicamente ocorre quando o Subversion

53

Guia de Uso Dirio

tenta SVN exportar um ficheiro versionado recentemente e, descobre que um ficheiro, no versionado, com o mesmo nome j existe na pasta de trabalho. O Subversion nunca reescreve um ficheiro no versionado - pode conter algo importante em que ests a trabalhar e que por coincidncia, tem o mesmo nome que outro programador utilizou para o seu ficheiro submetido recentemente. Se obtiveres esta mensagem de erro, a soluo simplesmente renomear o ficheiro local no versionado. Aps a concluso da actualizao podes verificar se o ficheiro renomeado ainda necessrio. Se continuares a obter mensagens de erro, usa ento TortoiseSVN Verificar alteraes para listares todos os ficheiros com problemas. Desta maneira poders trat-los todos de uma vez s.

4.6. Resolvendo Conflitos


De vez quando irs obter um conflito quando actualizares/fundires os teus ficheiros a partir do repositrio, ou quando trocares a tua cpia de trabalho para um URL diferente. Existem dois tipos de conflitos: conflitos de ficheiro Um conflito de ficheiro ocorre quando dois (ou mais) programadores alteraram o mesmo punhado de linhas do ficheiro. conflitos de rvore Um conflito de rvore ocorre quando um programador move/renomeia/apaga um ficheiro ou pasta, que outro programador tambm moveu/renomeou/apagou ou apenas modificou.

4.6.1. Conflitos de Ficheiro


A file conflict occurs when two or more developers have changed the same few lines of a file. As Subversion knows nothing of your project, it leaves resolving the conflicts to the developers. Whenever a conflict is reported, you should open the file in question, and search for lines starting with the string <<<<<<<. The conflicting area is marked like this: <<<<<<< filename your changes ======= code merged from repository >>>>>>> revision Also, for every conflicted file Subversion places three additional files in your directory: filename.ext.mine This is the file that was theEste o teu ficheiro como existia na cpia de trabalho antes de a teres actualizado - Isto , sem marcadores de conflito. Este ficheiro tem as tuas ltimas alteraes a mais nada. filename.ext.rOLDREV Este o ficheiro que foi a reviso BASE antes de actualizares a cpia de trabalho. Isto , o ficheiro que tu SVN exportaste antes de efectuares as tuas ltimas alteraes. filename.ext.rNEWREV Este o ficheiro que o teu cliente Subversion acabou de receber do servidor, quando actualizaste a tua cpia de trabalho. Este ficheiro corresponde reviso HEAD do repositrio. Podes ento lanar uma ferramenta externa de fuso/editor de conflitos com TortoiseSVN Editar Conflitos ou podes usar qualquer outro editor para resolver o conflito manualmente. Deves decidir a aparncia do cdigo, efectuar as alteraes necessrias e guardar o ficheiro.

54

Guia de Uso Dirio

Posteriormente executa o comando TortoiseSVN Resolvido e submete as tuas modificaes para o repositrio. Toma nota que o comando Resolvido, na realidade, no resolve o conflito. Apenas remove os ficheiros filename.ext.mine and filename.ext.r*, para te permitir submeter as tuas alteraes. Se tens conflitos com os teus ficheiros binrios, o Subversion no tenta fundir os ficheiros. O ficheiro local permanece intocvel (exactamente como o alteraste) e obtens os ficheiros filename.ext.r*. Se queres descartar as tuas alteraes e manter a verso do repositrio, usa o comando Reverter. Se queres manter a tua verso e reescrever a verso do repositrio, usa o comando Resolvido e submete a tua verso. Podes usar o comando Resolvido para ficheiros mltiplos, se clicares na pasta pai e seleccionares TortoiseSVN Resolvido... Isto ir mostrar a caixa de dilogo listando todos os ficheiros em conflito nessa pasta, e podes seleccionar quais queres marcar como resolvidos.

4.6.2. Conflitos de rvore


Um conflito de rvore ocorre quando, um programador moveu/renomeou/apagou um ficheiro ou pasta que outro programador tambm moveu/renomeou/apagou ou apenas modificou. Existem muitas e variadas situaes que podem gerar um conflito de rvore, e todas elas requerem diferentes passos para a sua resoluo. Quando no Subversion, um ficheiro apagado localmente esse ficheiro tambm apagado no sistema de ficheiros local e, mesmo que este seja parte de um conflito de rvore no poder mostrar um cone de conflito sobreposto, e tu no poders clicar nele com o boto direito do rato para resolver o conflito. Usa ento a caixa de dilogo Verificar alteraes para aceder opo Editar conflito. O TortoiseSVN pode ajudar a encontrar o stio correcto para fundir as alteraes mas, poder ser necessrio trabalho adicional para resolver os conflitos. Lembra-te que aps a actualizao a reviso BASE de trabalho ir conter sempre a reviso de cada item como estava no repositrio, na altura da actualizao. Se reverteres uma alterao aps a actualizao esta voltar ao estado do repositrio e no, verso que estava quando comeaste a efectuar as tuas alteraes locais.

4.6.2.1. Apagar localmente, editar aps actualizar


1. O programador A modifica Foo.c e submete-o para o repositrio 2. O programador B simultaneamente move na sua cpia de trabalho Foo.c para Bar.c, ou simplesmente apagou Foo.c, ou a sua pasta pai. Uma actualizao na cpia de trabalho do programador B resulta num conflito de rvore: Foo.c foi apagado da cpia de trabalho, mas foi marcado como um conflito de rvore. Se o conflito resultou de, uma mudana de nome em vez de um apagar ento, o Bar.c marcado como adicionado mas no contm as modificaes do programador A. O programador B tem de escolher se vai manter as alteraes do Programador A. No caso de uma mudana no nome do ficheiro, ele pode fundir as alteraes com o Foo.c no ficheiro renomeado Bar.c. Para simples apagamentos de ficheiros e pastas, ele pode escolher manter o item com as alteraes do Programador A e descartar o item apagado. Ou, ao colocar o conflito como resolvido, sem efectuar mais nenhuma aco, descarta efectivamente as alteraes do Programador A. A caixa de dilogo de edio de conflitos oferece-se para fundir as alteraes, se conseguir encontrar o ficheiro original do renomeado Bar.c. Dependendo onde a actualizao foi invocada, poder no ser possvel encontrar o ficheiro fonte.

4.6.2.2. Edio local, apagar aps actualizar


1. O Programador A move Foo.c para Bar.c e submete-o para o repositrio. 2. O Programador B modifica na sua cpia de trabalho Foo.c.

55

Guia de Uso Dirio

Ou em caso de mover uma pasta... 1. O Programador A move a pasta pai FooFolder para BarFolder e submete-o para o repositrio. 2. O Programador B modifica na sua cpia de trabalho Foo.c. Uma actualizao da cpia de trabalho pelo programador B, resulta num conflito de rvore. Para um conflito de ficheiro simples: Bar.c adicionado cpia de trabalho como um ficheiro normal. Foo.c marcado como adicionado (com histria) e adquire um conflito de rvore. Para um conflito de pasta: BarFolder adicionado cpia de trabalho como uma pasta normal. FooFolder marcado como adicionado (com histria) e adquire um conflito de rvore. Foo.c marcado como modificado. O programador B agora tem de decidir se quer manter a reorganizao do programador A e fundir as suas alteraes no ficheiro correspondente na nova estrutura, ou simplesmente reverter as alteraes de A e manter o ficheiro local. Para fundir as suas alteraes locais com a remodelao, o Programador B deve em primeiro lugar descobrir o ficheiro para o qual Foo.c foi renomeado/movido no repositrio. Isso pode ser feito usando a caixa de dilogo de registo. As alteraes devem ento ser fundidas manualmente j que no existe actualmente nenhum mtodo para automatizar ou mesmo simplificar este processo. Uma vez que as alteraes tenham sido portadas, o caminho em conflito fica redundante e pode ser apagado. Neste caso usa o boto Remover na caixa de dilogo de edio de conflito para efectuar a limpeza e, marcar o conflito como resolvido. Se o programador B entende que as alteraes de A esto erradas, ento deve escolher o boto Manter na caixa de dilogo de conflito. Isso marca o ficheiro/pasta em conflito como resolvido, mas as alteraes de A necessitam de ser removidas mo. Mais uma vez a caixa de dilogo de registo ir ajudar a verificar o que foi movido.

4.6.2.3. Apagar localmente, apagar aps actualizar


1. O Programador A move Foo.c para Bar.c e submete-o para o repositrio. 2. O Programador B move Foo.c para Bix.c Uma actualizao na cpia de trabalho do programador B resulta num conflito de rvore: Bix.c marcado como adicionado com histria. Bar.c adicionado cpia de trabalho com o estado 'normal'. Foo.c marcado como apagado e adquire um conflito de rvore. Para resolver este conflito, o Programador B tem de descobrir para que nome o ficheiro em conflito Foo.c renomeado/movido no repositrio. Isso pode ser feito recorrendo caixa de dilogo de registo. Ento o programador B tem de decidir qual o novo nome de ficheiro do ficheiro Foo.c deve manter o criado pelo programador A ou o nome criado pelo prprio. Depois de o programador B ter resolvido o conflito manualmente, o conflito de rvore tem de ser marcado como resolvido, com o boto na caixa de dilogo editor de conflito.

4.6.2.4. Desaparecido localmente, editar aps fuso


1. O Programador A trabalhando no trunk modifica ento Foo.c e submete-o para o repositrio.

56

Guia de Uso Dirio

2. O Programador B trabalhando no ramo move Foo.c para Bar.c e submete-o para o repositrio. A fuso das alteraes no trunk do programador A para o ramo, da cpia de trabalho, do programador B resulta num conflito de rvore: Bar.c j est na cpia de trabalho com o estado 'normal'. Foo.c marcado como desparecido, com um conflito de rvore. Para resolver este conflito, o Programador B tem de marcar o ficheiro como resolvido na caixa de dilogo do editor de conflito, que ir remove-lo da lista de conflitos. Ele ento tem de decidir se copia o ficheiro desaparecido Foo.c do repositrio para a cpia de trabalho, se funde as alteraes do Programador A no ficheiro Foo.c no renomeado Bar.c ou se ignora as alteraes ao marcar o conflito como resolvido e no fazendo mais nada. Tem em ateno que se copias o ficheiro desaparecido do repositrio e depois marcas como resolvido, a tua copia ser removida novamente. Tens de resolver primeiro o conflito.

4.6.2.5. Edio local, apagar aps fuso


1. O Programador A trabalhando no trunk move o Foo.c para Bar.c e submete-o para o repositrio 2. O Programador B trabalhando no ramo modifica o Foo.c e submete-o para o repositrio. Existe um caso equivalente para o movimento de pastas, mas no ainda detectado no Subversion 1.6 ... 1. O Programador A trabalhando no trunk move a pasta pai FooFolder para BarFolder e submeteo para o repositrio. 2. O Programador B trabalhando num ramo modifica Foo.c na sua cpia de trabalho A fuso das alteraes no trunk do programador A para o ramo, da cpia de trabalho, do programador B resulta num conflito de rvore: Bar.c marcado como adicionado. Foo.c marcado como modificado com um conflito de rvore. O programador B agora tem de decidir se quer manter a reorganizao do programador A e fundir as suas alteraes no ficheiro correspondente na nova estrutura, ou simplesmente reverter as alteraes de A e manter o ficheiro local. Para fundir as suas alteraes locais com a remodelao, o Programador B deve em primeiro lugar descobrir para que ficheiro o ficheiro em conflito Foo.c foi renomeado/movido no repositrio. Isto pode ser feito usando a caixa de dilogo do registo para a fonte da fuso. O editor de conflito apenas mostra o registo para a cpia de trabalho e no conhece qual o caminho que foi utilizado na fuso, pelo que ters de o descobrir por ti. As alteraes tm ento ser fundidas mo, visto no existir nenhuma maneira de automatizar ou mesmo simplificar este processo. Uma vez que as alteraes tiverem sido portadas, o caminho em conflito ser redundante e pode ser apagado. Neste caso usa o boto Remover na caixa de dilogo editor de conflito, para limpar e marcar o conflito como resolvido. Se o Programador B decide que as alteraes do A esto erradas, dever ento escolher o boto Manter na caixa de dilogo editor de conflito. Isto marca o ficheiro/pasta em conflito como resolvido, mas as alteraes do Programador A necessitam de ser removidas mo. De novo a caixa de dilogo registo, para a fonte da fuso ajuda a encontrar o rasto ao que foi movido.

4.6.2.6. Apagamento local, apagar aps fuso


1. O Programador A trabalhando no trunk move o Foo.c para Bar.c e submete-o para o repositrio 2. O Programador B trabalhando num ramo move o Foo.c para Bix.c e submete-o para o repositrio

57

Guia de Uso Dirio

A fuso das alteraes no trunk do programador A para o ramo, da cpia de trabalho, do programador B resulta num conflito de rvore: Bix.c marcado com o estado normal (no modificado). Bar.c marcado como adicionado com histria. Foo.c marcado como desaparecido e adquire um conflito de rvore. Para resolver este conflito o Programador B tem de descobrir para que ficheiro o ficheiro em conflito Foo.c foi renomeado/movido no repositrio. Isto pode ser feito usando a caixa de dilogo registo na fonte da fuso. O editor de conflito apenas mostra o registo para a cpia de trabalho, e no tem conhecimento qual o caminho que foi usado na fuso, ento tens de descobri-lo por ti. Ento o programador B tem de decidir qual o novo nome de ficheiro do ficheiro Foo.c deve manter o criado pelo programador A ou o nome criado pelo prprio. Depois de o programador B ter resolvido o conflito manualmente, o conflito de rvore tem de ser marcado como resolvido, com o boto na caixa de dilogo editor de conflito.

4.7. Obter informao de Estado


Enquanto ests a trabalhar na tua cpia de trabalho necessitas com frequncia de saber que ficheiros alteraste/adicionastes/removeste, ou mesmo que ficheiros foram alterados e submetidos por outros.

4.7.1. Sobreposio de cones

Figura 4.12. O explorador mostrando os cones sobrepostos


Agora que SVN exportaste uma cpia de trabalho de um repositrio Subversion, podes ver que os teus ficheiros com os cones alterados no explorador do Windows. Esta uma das razes porque o TortoiseSVN to popular. O TortoiseSVN adiciona a chamada sobreposio de cone a cada ficheiro e que se sobrepem ao cone original do mesmo. Dependendo do estado Subversion do ficheiro a sobreposio do cone ser diferente.

Uma cpia de trabalho exportada de fresco possui uma marca de verificao verde como sobreposio. Isto significa que o estado Subversion normal.

58

Guia de Uso Dirio

Assim que inicias a edio do ficheiro, o estado altera-se para modificado e o cone de sobreposio muda para um ponto de exclamao vermelho. Desse modo podes facilmente ver que ficheiros foram alterados desde a ltima vez que actualizaste a tua cpia de trabalho e necessitam ser submetidos.

Se durante uma actualizao ocorre um conflito o cone de sobreposio altera-se para um ponto de exclamao amarelo.

Se colocaste a propriedade svn:needs-lock num ficheiro, o Subversion marca esse ficheiro como apenas-de-leitura at obteres um bloqueio nesse mesmo ficheiro. Ficheiros como esses tm essa sobreposio para indicar que tens de obter um bloqueio antes de editares esse ficheiro.

Se mantiveres um bloqueio num ficheiro e o estado Subversion normal, esta sobreposio de cone lembra-te que deves libertar o bloqueio se no o ests a usar, para permitir que outros possam submeter as suas alteraes para o ficheiro.

Este cone mostra que alguns ficheiros ou pastas no interior da pasta corrente foram escalonados para serem apagados do controlo de verses ou que, um ficheiro sob o controlo de verses est desaparecido na pasta.

O sinal se soma diz-te que um ficheiro ou pasta foi escalonado para ser adicionado ao controlo de verses.

O sinal de barra diz que um ficheiro ou pasta ignorado para efeitos de controlo de verso. Esta sobreposio opcional.

Este cone mostra os ficheiros e pastas que no esto sob controle de verses, mas no foram ignorados. Esta sobreposio opcional. De facto, podes descobrir que nem todos esses cones so usados no teu sistema. Isto ocorre porque o nmero de sobreposies permitidas pelo Windows muito limitada e, se estiveres a utilizar uma verso antiga do TortoiseCVS, no existem suficientes slots para sobreposies disponveis. O TortoiseSVN tenta ser um Bom Cidado (TM) e limita o seu uso se sobreposies para tambm dar a oportunidade a outras aplicaes. Agora que existem por a mais clientes Tortoise (TortoiseCVS, TortoiseHG, ...) o limite de cones tornase um verdadeiro problema. Para dar a volta a isto, o projecto TortoiseSVN introduziu um conjunto de cones comuns e partilhados, carregados como uma DLL, que pode ser usada por todos os clientes Tortoise. Verifica no teu fornecedor de cliente para veres se isto j foi integrado :-) Para uma descrio de como as sobreposies de cones correspondem aos estados do Subversion e outros detalhes tecnicos, l Seco F.1, Sobreposio de cones.

4.7.2. Colunas TortoiseSVN no Explorador do Windows

59

Guia de Uso Dirio

A mesma informao que est disponvel a partir das sobreposies dos cones (e muito mais) pode ser visualizada, como colunas adicionais, na vista de detalhes do Explorador do Windows. Simplesmente clica com o boto direito em um dos cabealhos de uma coluna, escolhe Mais... a partir do menu de contexto. Uma caixa de dilogo ir aparecer, e poders especificar as colunas e a sua ordem que sero mostradas na Vista Detalhada. Rolar para baixo at aparecer entradas a comear por SVN. Marcar as que gostarias de visualizar e fecha a caixa de dilogo pressionando OK. As colunas sero anexadas direita das que mostradas correntemente. Podes reordena-las por arrasto e largar, para que satisfaam as tuas necessidades.

Importante
As colunas adicionais no Explorador do Windows no esto disponveis no Vista, visto que a Microsoft decidiu no permitir mais esse tipo de colunas para todos os ficheiros, mas s para tipos de ficheiros especficos.

Dica
Se queres que a disposio corrente seja visualizada em todas as tuas cpias de trabalho, deves querer usa-la como a tua vista por defeito.

4.7.3. Estado Remoto e Local

Figura 4.13. Verificar Modificaes


normalmente muito til conhecer que ficheiros foram alterados e tambm quais os ficheiros que foram alterados e submetidos por outros. Isto onde o comando TortoiseSVN Verificar alteraes... vem mo. Esta caixa de dilogo ir mostrar-te cada ficheiro que foi alterado de algum modo na tua cpia de trabalho, tal como qualquer ficheiro no versionado que l tiveres. Se clicares em Verificar repositrio podes ento tambm procurar por alteraes no repositrio. Desse modo podes verificar, antes de uma actualizao, se existe um possvel conflito. Podes tambm actualizar ficheiros seleccionados do repositrio, sem actualizar a pasta inteira. Por defeito o boto Verificar

60

Guia de Uso Dirio

repositrio s procura o estado remoto com a profundidade de exportao da cpia de trabalho. Se queres ver todos os ficheiros e pastas no repositrio, mesmos aqueles que no SVN exportaste, ento tens de premir continuamente a tecla Shift enquanto clicas no boto Verificar repositrio. A caixa de dilogo usa cdigo de cores para evidenciar o estado. Azul Itens modificados localmente. Roxo Itens adicionados. Itens que foram adicionados com histria tm um sinal + na coluna Estado do texto, e uma etiqueta mostra de onde foi o item copiado. Vermelho escuro Itens apagados ou desaparecidos. Verde Itens modificados localmente e no repositrio. As alteraes sero fundidas aquando da actualizao. Vermelho brilhante Itens modificados localmente e apagados no repositrio, ou modificados no repositrio e apagados localmente. Estes iro produzir conflitos na actualizao. Preto Itens no modificados e no versionados. Este o esquema de cores por defeito, mas podes alterar essas cores usando a caixa de dilogo configuraes. Ler Seco 4.30.1.4, Preferncias de cor do TortoiseSVN para mais informao. Itens que foram comutados para um repositrio diferente so tambm indicados com o uso do marcador (s). Poders ter comutado algo enquanto trabalhavas num ramo, e esquecido de comutar de novo para o trunk. Isto um sinal de aviso! A partir do menu de contexto da caixa de dilogo podes ver uma comparao das alteraes. Marca as alteraes locais que tu fizeste usando Context Menu Comparar com a Base. Marca as alteraes no repositrio feitas por outros usando Menu Contexto Mostrar diferenas como uma comparao unificada. Podes tambm reverter alteraes em ficheiro individuais. Se apagaste um ficheiro acidentalmente, ir aparecer como Desaparecido e podes usar Reverter para o recuperar. Ficheiros no versionados e ignorados podem ser enviados daqui para o cesto de reciclagem usando Menu Contexto Remover. Se quiseres remover permanentemente os ficheiros ( ignorando o cesto de reciclagem) mantm premido a tecla Shift enquanto clicas no Remover. Se quiseres examinar um ficheiro em detalhe, podes arrasta-lo para outra aplicao como um editor de texto ou um IDE. As colunas so costumizveis. Se clicares com o boto direito em qualquer cabealho de coluna vers um menu de contexto, que te permitir seleccionar quais as colunas a mostrar. Podes tambm alterar a largura da coluna usando o manpulo de arrasto que aparece quando moves o rato sobre o limite da coluna. Estas customizaes so preservados para que vejas os mesmos cabealhos da prxima vez. Se tiveres a trabalhar ao mesmo tempo em vrias tarefas, no relacionadas, podes tambm agrupar os ficheiros em listas de alteraes. Ler Seco 4.4.2, Listas de Alteraes para mais informao. No fundo da caixa de dilogo podes ver um sumrio do intervalo de revises do repositrio em uso na tua cpia de trabalho. Essas so as revises submetidas, no as revises de actualizadas; Estas representam o intervalo de revises onde esses ficheiros foram submetidas por ltimo, e no as revises a que foram actualizadas. De notarque o intervalo de revises mostrada s se aplica aos itens mostrados, e no,

61

Guia de Uso Dirio

totalidade da cpia de trabalho. Se queres ver essa informao para a totalidade da cpia de trabalho, deves verificar a caixa de verificao No modificado.

Dica
Se queres uma vista ampla da tua cpia de trabalho, i.e. mostrando todos os ficheiros e pastas em qualquer nvel da hierarquia de pastas, ento a caixa de dilogo Verificar alteraes a maneira mais fcil para o atingir. Verifica apenas a caixa de verificao No modificado para mostrar todos os ficheiros na tua cpia de trabalho.

Reparando Alteraes de Nome Externas


Por vezes, alterado o nome de alguns ficheiros fora do Subversion e, eles so mostrados na lista de ficheiros como um em falta e outro ficheiro no versionado. Para evitar perder o histrico necessitas de notificar o Subversion a cerca da ligao. Simplesmente selecciona o de nome antigo(em falta) e o de novo nome (no versionado) e para emparelhar os dois ficheiros como uma alterao de nome usa Context Menu Reparar Movimento

4.7.4. Vendo diferenas


Muitas vezes tu queres ver os teus ficheiros por dentro para observar o que alteraste. Podes conseguir isso ao seleccionar o ficheiro que foi alterado e, seleccionando Comparar a partir do menu de contexto do TortoiseSVN. Isso arranca o visualizador de comparaes externo, que ento ir comparar o ficheiro corrente com a cpia pura (reviso BASE), que foi armazenada depois da ltima exportao SVN ou actualizao.

Dica
Mesmo quando fora da cpia de trabalho ou, quando tens multiplas verses do ficheiro presentes, podes no entanto ainda mostrar comparaes: Selecciona dois ficheiros que queres comparar no explorador (e.g. usando o Ctrl e o rato) e escolhe Comparar a partir do menu de contexto do TortoiseSVN. O ficheiro clicado por ltimo (o que tem o focus, i.e. o rectangulo picotado) ser considerado o mais recente.

4.8. Listas de Alteraes


Num mundo ideal, apenas trabalharias numa nica coisa de cada vez, e a tua cpia de trabalho contm s um conjunto de mudanas lgicas. OK, devolta realidade. Costuma acontecer que tens de trabalhar em vrias, e no relacionadas, tarefas ao mesmo tempo, e quando olhas para a caixa de dilogo de submisso, todas as alteraes esto misturadas. A funcionalidade da lista de alteraes ajuda a agrupar os ficheiros, tornando mais fcil ver o que ests a fazer. Est claro que isto s funciona se as alteraes no se sobrepuserem. Se duas tarefas diferentes afectarem o mesmo ficheiro, no existe maneira de separar as alteraes.

Importante
A funcionalidade de lista de alteraes no TortoiseSVN, est s disponvel no Windows XP e superior, visto depender the uma capacidade da consola que no est presente no Windows 2000. Desculpa, mas o Win2k realmente velho, mas por favor no faas queixas. Podes ver ver as listas de alteraes em vrios locais, mas os mais importantes so a caixa de dilogo submeter e a caixa de dilogo verificar alteraes. Vamos comear pela caixa de dilogo verificar

62

Guia de Uso Dirio

alteraes, depois de teres trabalhado em vrias funcionalidades e muitos ficheiros. Quando primeiro abres a caixa de dilogo, todos os ficheiros alterados so listados em conjunto. Supem que queres organizar as coisas e agrupa-las de acordo com a funcionalidade. Selecciona um ou mais ficheiros e usa Context Menu Move para a lista de alteraes para adicionar um item lista de alteraes. Inicialmente no haver lista de alteraes, ento a primeira vez que fizeres esta operao, irs criar uma nova lista de alteraes. D-lhe um nome que descreva qual o objectivo do seu uso e clica OK. A caixa de dilogo ir-se- alterar para mostrar grupos de itens. Uma vez que tenhas criado uma lista de alteraes, podes arrastar e largar itens para dentro dela, a partir de outra lista de alteraes ou a partir do Explorador do Windows. Arrastando do Explorador pode ser til, pois permite-te adicionar itens lista de alteraes antes do ficheiro ser modificado. Podes fazer isso a partir da caixa de dilogo verificar-alteraes, mas apenas ao mostrar todos os ficheiros no modificados

Figura 4.14. Caixa de dilogo Submeter com Listas de Alteraes


Na caixa de dilogo submeter podes ver esses mesmos ficheiros agrupados por listas de alteraes. parte de dar uma indicao visual imediata dos grupos, podes tambm usar os cabealhos dos grupos para seleccionar quais os ficheiros a submeter. No XP h um menu de contexto quando clicas com o boto direito num cabealho de grupo, que te d a escolha para marcar ou desmarcar todas as entradas de grupo. No Vista, no entanto, o menu de contexto

63

Guia de Uso Dirio

no necessrio. Clica no cabealho de grupo para seleccionar todas as entradas, depois marca uma das entradas seleccionadas para os marcar a todos. O TortoiseSVN reserva um nome de lista de alteraes para o seu prprio uso, de nome ignore-oncommit. Esta usada para sinalizar ficheiros versionados que quase nunca queres submeter, mesmo que tenham alteraes. Esta funcionalidade descrita em Seco 4.4.3, Excluir itens da lista a Submeter. Quando submetes ficheiros pertencentes a uma lista de alteraes, deves esperar que no seja mais necessrio estar associado a uma lista. Ento por defeito, os ficheiros so removidos automaticamente ao submete-los. Se pretendes manter um ficheiro na sua lista de alteraes, usa a caixa de verificao Manter listas de alteraes no fundo da caixa de dilogo submeter.

Dica
Listas de alteraes so puramente uma funcionalidade local de cliente. Criar e remover lista de alteraes no afectar o repositrio, nem a cpia de trabalho de outros. Elas so simplesmente uma forma conveniente para organizares os teus ficheiros.

4.9. Caixa de Dilogo Registo de Revises


Para cada alterao que fazes e submetes, deves providenciar uma mensagem de registo para essa alterao Dessa maneira, podes mais tarde descobrir as alteraes que efectuaste e o porqu, e ters um registo detalhado para o teu processo de desenvolvimento. A Caixa de Dilogo de Registo de Revises recupera todas as mensagens de registo e mostra-tas. A visualizao dividida em 3 painis. O painel de topo mostra a lista de revises onde as alteraes ao ficheiro/pasta foram submetidas. Este sumrio inclu a data e tempo, a pessoa que submeteu a reviso e o incio da mensagem de registo. Linhas mostradas a azul indicam que algo foi copiado para esta linha de desenvolvimento (se calhar de um ramo). O painel do meio mostra a totalidade da mensagem de registo para a reviso seleccionada. O painel inferior mostra a lista de todos os ficheiros e pastas que foram alterados, como parte da reviso seleccionada. Mas faz mais que isso - providencia comandos de menu de contexto, que podes usar para obter ainda mais informao sobre a histria do projecto.

64

Guia de Uso Dirio

4.9.1. Invocando a Caixa de Dilogo Registo de Reviso

Figura 4.15. A Caixa de Dilogo Registo de Reviso


Existem vrios locais a partir dos quais podes mostrar a caixa de dilogo de Registo: A partir do submenu de contexto TortoiseSVN A partir da pgina de propriedades A partir da caixa de dilogo de Progresso, aps o fim de uma actualizao. Ento a caixa de dilogo de registo s mostrar as revises que foram alteradas, desde o tua ltima actualizao Se o repositrio no est disponvel, vers a caixa de dilogo Queres ficar fora de linha? descrita em Seco 4.9.10, Modo Fora de Linha.

4.9.2. Aces de Registo de Revises


O painel de topo tem uma coluna Aces contendo cones que sumarizam o que foi feito na reviso. Existem quatro diferentes cones, cada mostrada na sua coluna.

Se uma reviso modificou um ficheiro ou pasta, o cone modificado mostrado na primeira coluna.

Se a reviso adicionou um ficheiro ou pasta, o cone adicionado mostrado na segunda coluna.

65

Guia de Uso Dirio

Se a reviso removeu um ficheiro ou pasta, o cone removido mostrado na terceira coluna.

Se a reviso substituiu um ficheiro ou pasta, o cone substituido mostrado na quarta coluna.

4.9.3. Obtendo Informao Adicional

Figura 4.16. O Painel de Topo da Caixa de Dilogo Registo de Revises com Menu de Contexto
O painel de topo da caixa de dilogo de registo tem um menu de contexto que te permite aceder a muito mais informao. Algumas dessas entradas do menu s aparecem quando o registo mostrado para um ficheiro, e outras s quando o registo mostrado para uma pasta. Comparar com a cpia de trabalho Compara a reviso seleccionada com a tua cpia de trabalho. A ferramenta, por defeito, de Comparao o TortoiseMerge que fornecido com o TortoiseSVN. Se a caixa de dilogo de registo for para uma pasta, ento ir mostrar-te uma lista de ficheiros alterados e permitir-te- rever as alteraes feitas a cada ficheiro individualmente. Compara e responsabiliza com a BASE de trabalho Responsabiliza a reviso seleccionada e o ficheiro na tua BASE de trabalho, e compara os relatrios de responsabilidade usando a ferramenta de comparao visual. Ler Seco 4.23.2, Diferenas de responsabilidade para mais detalhes. (s ficheiros). Mostrar diferenas como uma comparao unificada V as alteraes feias na reviso seleccionada como uma comparao unificada (formato de correco GNU). Isto s mostra as diferenas com algumas linhas de contexto. mais difcil de ler que uma comparao visual de ficheiros, mas ir mostrar todas as alteraes do ficheiro num formato compacto.

66

Guia de Uso Dirio

Compara com a reviso prvia Compara a reviso seleccionada com a reviso prvia. Isto funciona de maneira similar comparao com a cpia de trabalho. Para pastas, esta opo mostrar primeiro a caixa de dilogo de ficheiros alterados, permitindo-te seleccionar os ficheiros a comparar. Compara e responsabiliza com a reviso anterior Mostra a caixa de dilogo de ficheiros alterados, permitindo-te seleccionar os ficheiros. Responsabiliza a reviso seleccionada e a reviso prvia, e compara os resultados usando a ferramenta de comparao. (s pastas). Guardar reviso em... Guarda a reviso seleccionada para um ficheiro, para que tenhas uma reviso antiga de esse ficheiro (s ficheiros). Abrir / Abrir com... Abrir o ficheiro seleccionado com o programa de leitura por defeito, para esse tipo de ficheiro, ou um programa tua escolha. (s ficheiros). Responsabilizar... Responsabiliza o ficheiro at reviso seleccionada (s ficheiros). Navegar repositrio Abre o navegador do repositrio, para examinar o ficheiro ou pasta seleccionada no repositrio, como era na reviso seleccionada. Criar ramo/etiqueta a partir da reviso Cria um ramo ou etiqueta a partir da reviso seleccionada. Isot util i.e. te esqueceres de criar uma etiqueta, e j submetes-te algumas alteraes que no eram supostas ir naquela entrega. Actualiza um item para uma reviso Actualiza a tua cpia de trabalho para a reviso seleccionada. til se queres que a tua cpia de trabalho que reflicta um tempo passado, ou se ainda houve submisses posteriores para o repositrio e tu queres actualizar a tua cpia de trabalho, um passo de cada vez. melhor actualizar toda a pasta na tua cpia de trabalho, no s um ficheiro, ou de outro modo a tua cpia ficaria inconsistente. Se queres desfazer permanentemente para uma reviso anterior, usa em substituio Reverter para esta reviso. Reverter para esta reviso Reverter para uma reviso anterior. Se efectuaste vrias alteraes e ento decides que queres realmente voltar para trs, para o estado em que estavam as coisas na reviso N, este o comando que precisas. As alteraes so desfeitas na tua cpia de trabalho, e este comando no afectar o repositrio at submeteres as alteraes. Tomar ateno que isto ir desfazer todas as alteraes efectuadas depois da reviso seleccionada, substituindo os ficheiros/pastas com uma reviso anterior. Se a tua cpia de trabalho est num estado no alterado, depois de efectuares esta operao, a tua cpia de trabalho ir-se- mostrar como alterada. Se j tens alteraes locais, este comando ir integrar as alteraes desfeitas na tua cpia de trabalho. O que est acontecer internamente que, o Subversion efectua uma integrao inversa de todas as alteraes feitas na reviso seleccionada, desfazendo o efeito de submisses prvias. Se depois de efectuares esta aco decides que queres desfazer o desfeito, e obteres a tua cpia de trabalho de volta para o seu estado no alterado, deves usar TortoiseSVN Reverter, a partir do Explorador do Windows, que ir descartar as modificaes locais efectuadas por esta aco de integrao inversa. Se queres simplesmente ver como um ficheiro ou pasta eram numa reviso anterior, usa em alternativa Actualizar para reviso ou Salvar reviso como....

67

Guia de Uso Dirio

Reverter alteraes desta reviso Desfazer alteraes que foram feitas na reviso seleccionada. As alteraes so desfeitas na tua cpia de trabalho, isto , esta operao no afecta de modo algum o repositrio! De notar que isto ir desfazer s as alteraes feitas nesta reviso; no substitui a tua cpia de trabalho com o ficheiro completo como estava nessa reviso. Isto muito til para desfazer uma alterao anterior, quando uma outra alterao no relacionada foi feita depois. Se a tua cpia de trabalho est num estado no alterado, depois de efectuares esta operao, a tua cpia de trabalho ir-se- mostrar como alterada. Se j tens alteraes locais, este comando ir integrar as alteraes desfeitas na tua cpia de trabalho. O que est a acontecer internamente que, o Subversion executa uma integrao inversa dessa nica reviso, desfazendo o seu efeito numa submisso anterior. Podes desfazer o desfeito como descrito acima em Reverter para esta reviso. Integrar reviso para... Integrar a reviso/revises seleccionada(s) numa cpia de trabalho diferente. Uma caixa de dilogo de seleco de pasta permite-te escolher a cpia de trabalho para onde integrar, mas depois disso no h caixa de dilogo de confirmao, nem a oportunidade para experimentar uma integrao de teste. uma boa ideia integrar para uma cpia de trabalho no modificada, para que possas reverter as alteraes caso no resulte! Isto uma funcionalidade til se queres integrar revises seleccionadas de um ramo para outro. Checkout... Fazer um SVN exportar de fresco, da pasta seleccionada na reviso seleccionada. Ir mostrar uma caixa de dilogo de modo a confirmares o URL e a reviso, e seleccionar uma localizao para o SVN exportar. Exportar... Exportar o ficheiro/pasta seleccionada na reviso seleccionada. Ir aparecer uma caixa de dilogo para confirmares o URL e a reviso, e seleccionares a localizao para exportar. Editar mensagem de autor/registo Edita a mensagem de registo ou o autor anexado mensagem de submisso prvia. Consulta Seco 4.9.7, Alterando a Mensagem de Registo e Autor para saberes como isto funciona Mostrar propriedades de reviso V e edita qualquer propriedade de reviso, no apenas a mensagem de registo e o autor. Consulte Seco 4.9.7, Alterando a Mensagem de Registo e Autor. Copiar para o clipboard Copia os detalhes do registo das revises seleccionadas para o clipboard. Isto ir copiar o nmero de reviso, autor, data, mensagem de registo e a lista de itens alterados para cada reviso. Pesquisar mensagens de registo... Pesquisar mensagens de registo com o texto que inseriste. feita a pesquisa das mensagens de registo que inseriste e tambm o sumrio de aces criada pelo Subversion (mostrado no painel inferior). A pesquisa no sensvel altura da letra.

Figura 4.17. Menu de Contexto do Painel Superior para 2 revises seleccionadas

68

Guia de Uso Dirio

Se seleccionares duas revises de uma vez (usando o modificador usual Ctrl), o menu de contexto muda e disponibiliza menos opes: Comparar revises Comparar duas revises seleccionadas usando uma ferramenta de comparao visual. A Ferramentade Comparao por defeito, o TortoiseMeerge que fornecida com o TortoiseSVN. Se seleccionares esta opco para uma pasta, uma caixa de dilogo posterior aparecer listando os ficheiros alterados e, oferecendo-te ainda mais opes de comparao. L mais sobre a caixa de dilogo Comparar Revises em Seco 4.10.3, Comparando Pastas. Responsabilizar revises Responsabiliza as duas revises e compara os relatrios de responsabilidade usando a ferramenta de comparao visual. Para mais detalhes l Seco 4.23.2, Diferenas de responsabilidade. Mostrar diferenas como comparao unificada V as diferenas entre as duas revises seleccionadas como um ficheiro de comparao unificada. Isto funciona para ficheiros e pastas. Copiar para o clipboard Copiar as mensagens de registo para o clipboard como descrito acima. Pesquisar mensagens de registo... Pesquisar mensagens de registo como descrito acima. Se seleccionares duas ou mais revises (usando os modificadores usuais Ctrl ou Shift), o menu de contexto ir incluir uma entrada para reverter todas as alteraes que foram feitas nas revises seleccionadas. Esta a maneira mais fcil para rebobinar um grupo de revises de uma vez s. Podes tambm escolher integrar as revises seleccionadas noutra cpia de trabalho, como descrito acima. Se todas as revises seleccionadas tm o mesmo autor, podes editar o autor de todas essas revises de uma vez s.

Figura 4.18. O Painel de fundo da Caixa de Dilogo Registo com o Menu de Contexto
O painel inferior da caixa de dilogo Registo tambm tem um menu de contexto, que te permite Mostrar alteraes Show changes made in the selected revision for the selected file. This context menu is only available for files shown as modified.

69

Guia de Uso Dirio

Responsabilizar alteraes Responsabilizar a reviso seleccionada e a reviso prvia para o ficheiro seleccionado, e compara os relatrios de responsabilidade usando uma ferramenta de comparao visual. Para mais detalhes ler Seco 4.23.2, Diferenas de responsabilidade. Mostrar como comparao unificada Mostrar as alteraes do ficheiro no formato comparao unificada. Este menu de contexto est s disponvel para ficheiros visiveis como modificado. Abrir / Abrir com... Abrir o ficheiro seleccionado com o leitor por defeito para esse tipo de ficheiro ou, com um programa tua escolha. Responsabilizar... Abre a caixa de dilogo Responsabilizar, permitindo-te responsabilizar at reviso seleccionada. Reverter alteraes desta reviso Reverter as alteraes feitas no ficheiro seleccionado nesta reviso. Mostrar propriedades Ver as propriedades Subversion para o item seleccionado. Mostrar registo Mostra o registo de reviso para o nico ficheiro seleccionado. Obter registos de integrao Mostrar o registo de reviso para o nico ficheiro seleccionado, incluindo as alteraes integradas. Descobre mais em Seco 4.9.6, Funcionalidades de Rastreamento de Integrao. Guardar reviso em... Guardar a reviso seleccionada num ficheiro para que tenhas uma verso antiga do mesmo.

Dica
Deves ter notado que por vezes referimo-nos s alteraes e outras vezes a diferenas. Qual a diferena? O Subversion usa nmeros de reviso para significar 2 coisas diferentes. A reviso, de modo geral, representa o estado do repositrio num dado ponto no tempo, mas pode tambm ser usado para representar o conjunto de alteraes que criou a reviso, e.g. Feito em r1234 significa que as alteraes submetidas na r1234 implementa a funcionalidade X. Para tornar mais claro qual o sentido que est a ser utilizado, usamos dois termos diferentes. Se seleccionares duas revises N e M, o menu de contexto ir oferecer a visualizao da diferena entre essas duas revises. Em termos Subversion isto diff -r M:N. Se seleccionares uma s reviso N, o menu de contexto ir oferecer a visualizao das alteraes feitas nessa reviso. Em termos Subversion isto diff -r N-1:N ou diff -c N. O painel inferior mostra os ficheiros alterados em todas as revises seleccionadas, ento o menu de contexto ir oferecer sempre a visualizao de alteraes.

4.9.4. Obtendo mais mensagens de registo


A caixa de dilogo de Registo no mostra sempre todas as alteraes jamais feitas por um nmero de razes: Para um grande repositrio podero existir centenas ou mesmo milhares de alteraes e, ir busca-las a todas pode demorar muito tempo. Normalmente s estars interessado nas alteraes mais recentes.

70

Guia de Uso Dirio

Por defeito, o nmero de mensagens de registo trazidas est limitada s 100, mas no entanto podes alterar esse valor no TortoiseSVN Preferncias (Seco 4.30.1.2, Preferncias das Caixas de Dilogo TortoiseSVN 1), Quando a caixa Parar ao copiar/alterar o nome est verificada, o Mostrar Registo ir parar no ponto onde o ficheiro ou pasta seleccionada foi copiado de outro ponto do repositrio. Isto pode ser til ao olhar para ramos (ou etiquetas), j que pra na raiz desse ramo, e d uma rpida indicao das alteraes feitas s nesse ramo. Normalmente tu querers deixar esta opo no verificada. O TortoiseSVN lembra-se do estado da caixa de verificao, respeitando desse modo a tua preferncia. Quando a caixa de dilogo Mostrar Registo invocada de dentro da caixa de dilogo de Integrar, esta caixa sempre verificada por defeito. Isto porque, integrar na maioria das vezes olhar para as alteraes em ramos e voltar para trs, e ir alm da raiz do ramo no far sentido nessa situao. De notar que o Subversion actualmente implementa o renomear com o par copiar/apagar, ento renomear um ficheiro ou pasta ir provocar, que a visualizao do registo pare se esta opo est verificada. Se queres ver mais mensagens de registo, clica Prximos 100 para trazer as prximas 100 mensagens de registo. Podes repetir este procedimento quantas vezes necessitares. Prximo a este boto est um boto multifunes que lembra a ltima opo para que o usaste. Clica na seta, para ver as outras opes disponveis. Usa Mostrar Intervalo... se queres ver um intervalo de revises especfica. A caixa de dilogo ir ento pedir-te para introduzir a reviso de incio e fim. Usa Mostrar Tudo se queres ver todas as mensagens de registo a partir da reviso HEAD de volta at reviso 1.

4.9.5. Reviso Actual da Cpia de Trabalho


Porque a caixa de dilogo de registo te mostra o registo a partir da HEAD, e no da reviso corrente da cpia de trabalho, acontece frequentemente que so mostradas mensagens de registo para contedo que ainda no foi actualizado, na tua cpia de trabalho. Para ajudar a tornar isto mais claro, a mensagem de submisso que corresponde reviso que tens na tua cpia de trabalho, mostrada a negrito. When you show the log for a folder the revision highlighted is the highest revision found anywhere within that folder, which requires a crawl of the working copy. This can be a slow operation for large working copies, and the log messages are not displayed until the crawl completes. If you want to disable or limit this feature you need to set a registry key HKCU\Software\TortoiseSVN\RecursiveLogRev as described in Seco 4.30.10, Registry Settings.

4.9.6. Funcionalidades de Rastreamento de Integrao


O Subversion 1.5 e superior mantm o registo das integraes recorrendo ao uso de propriedades. Isto permite-te obter um histrico mais detalhado das alteraes integradas. Por exemplo, se desenvolveres uma nova funcionalidade num ramo e a seguir integras esse ramo de volta para o trunk, a funcionalidade desenvolvida ir ser mostrada no registo do trunk, como uma nica submisso para a integrao, mesmo que tenha havido 1000 submisses durante o desenvolvimento do ramo.

71

Guia de Uso Dirio

Figura 4.19. A Caixa de Dilogo Registo Mostra Rasto das Revises de Integrao
Se quiseres ver o detalhe de quais revises que foram integradas como parte dessa submisso, usa a caixa de verificao Incluir revises integradas. Isto ir outra vez buscar as mensagens de registo, mas tambm ir colocar entrefolhas as mensagens de registo das revises que foram submetidas. Revises integradas so mostradas a cinzento, porque representam alteraes feitas numa parte diferente da rvore. claro que integrar nunca simples! Durante o desenvolvimento da funcionalidade no ramo, iro provavelmente ocorrer integraes ocasionais de volta para o trunk, de modo a manter o ramo em sincronismo com a linha de cdigo principal.

4.9.7. Alterando a Mensagem de Registo e Autor


As propriedades de reviso so completamente diferentes das propriedades do Subversion de cada item. Revprops so itens descritivos que so associados a um nmero de reviso especfico no repositrio, como as mensagens de registo, data de submisso e autor da submisso (autor). Por vezes poders querer modificar a mensagem de registo que anteriormente introduziste, talvez porque contm o erro de ortografia, ou queres melhorar a mensagem, ou muda-la por outras razes. Ou queres alterar o autor da submisso porque de esqueces-te de activar a autenticao, ou... O Subversion deixa-te alterar as propriedades da reviso em qualquer altura que desejes. Mas como essas alteraes no podem ser desfeitas (essas alteraes no so versionadas) essa funcionalidade est desactivada por defeito. Para activar esta funcionalidade devers configurar o gancho prerevprop-change. Consultar o respectivo captulo no Hook Scripts [http://svnbook.red-bean.com/en/1.5/

72

Guia de Uso Dirio

svn.reposadmin.create.html#svn.reposadmin.create.hooks] no livro do Subversion para detalhes em como o fazer. Ler Seco 3.3, Scripts de gancho de servidor para encontrares mais notas sobre como implementar ganchos numa mquina Windows. Uma vez que tenhas configurado o teu servidor com os ganchos pretendidos, podes mudar o autor e a mensagem de registo ( ou qualquer outra revprop) de qualquer reviso, usando o menu de contexto do painel de topo da caixa de dilogo Registo. Podes tambm editar a mensagem de registo usando o menu de contexto no painel do meio.

Ateno
Porque as propriedades de reviso do Subversion no so versionadas, fazer alteraes a tais propriedades (por exemplo, a propriedade da mensagem de submisso svn:log) ir re-escrever o seu valor para sempre.

4.9.8. Filtrando Mensagens de Registo


Se queres restringir as mensagens de registo, para mostrar s as que ests interessado em vez de percorreres uma lista de centenas, podes usar os controlos de filtros no topo da caixa de dilogo Registo. Os controlos de incio e fim de data permite-te restringir a visualizao a um intervalo de datas. A caixa de pesquisa permite-te mostrar s mensagens que contm uma frase particular. Click on the search icon to select which information you want to search in, and to choose regex mode. Normally you will only need a simple text search, but if you need to more flexible search terms, you can use regular expressions. If you hover the mouse over the box, a tooltip will give hints on how to use the regex functions. You can also find online documentation and a tutorial at http://www.regularexpressions.info/. The filter works by checking whether your filter string matches the log entries, and then only those entries which match the filter string are shown. To make the filter show all log entries that do not match the filter string, start the string with an exclamation mark ('!'). For example, a filter string !username will only show those entries which were not committed by username. De salientar que esses filtros actuam nas mensagens j adquiridas. Eles no controlam o descarregamento de mensagens do repositrio. You can also filter the path names in the bottom pane using the Hide unrelated changed paths checkbox. Related paths are those which contain the path used to display the log. If you fetch the log for a folder, that means anything in that folder or below it. For a file it means just that one file. The checkbox is tristate: you can show all paths, grey out the unrelated ones, or hide the unrelated paths completely. Por vezes as tuas prticas de trabalho iram requerer que as tuas mensagens de registo sigam um formato particular, o que significa que o texto que descreve as alteraes no visvel no sumrio abreviado mostrado no painel de topo. A propriedade tsvn:logsummary pode ser utilizada para extrair uma parte da mensagem de registo para ser mostrada no painel de topo. Ler Seco 4.17.2, Propriedades de Projecto TortoiseSVN para descobrir como usar esta propriedade.

Registos No Formatados do Navegador de Repositrio


Porque a formatao depende do acesso s propriedades do subversion, tu s vers os seus resultados quando obtiveres uma cpia de trabalho SVN exportada. Buscar remotamente propriedades uma operao lenta, pelo que no vers esta funcionalidade em aco a partir do navegador de repositrio.

4.9.9. Informao Estatstica

73

Guia de Uso Dirio

O boto Estatsticas abre uma caixa que, mostra alguma informao interessante sobre as revises mostradas na caixa de dilogo Registo. Essa mostra quantos autores estiveram a trabalhar, quantas submisses eles fizeram, o progresso por semana e muito mais. Agora podes ver por alto que trabalhou mais arduamente e quem esteve na balda ;-)

4.9.9.1. Pgina de Estatsticas


Esta pgina d-te todos os nmeros que tenhas em mente em particular, o perodo e o nmero de revises cobertas e alguns valores min/max/mdia.

4.9.9.2. Pgina de Submisses por Autor

Figura 4.20. Histograma de Submisses-por-Autor


Este grfico mostra quais os autores que tm estado activos no projecto como um simples histograma, histograma empilhado ou grfico de queijo.

74

Guia de Uso Dirio

Figura 4.21. Grfico de queijo Submisses-por-Autor


onde h alguns grandes autores e muitos pequenos contribuidores, o nmero de pequenos segmentos pode tornar o grfico mais difcil de ler. O controlo deslizante no fundo permite-te colocar um limite (como precentagem do total de submisses) abaixo do qual, qualquer actividade agrupado na categoria Outros.

75

Guia de Uso Dirio

4.9.9.3. Pgina de Submisses por data

Figura 4.22. Grfico de Submisses-por-data


Esta pgina d-te uma representao grfica da actividade do projecto em termos de, nmero de submisses e autor. Isto d alguma ideia de quando um projecto est a ser trabalhado, quem esteve a trabalhar a que altura. Quando existem vrios autores irs obter muitas linhas no grfico. Existem duas vistas disponveis aqui: normal, onde a actividade de cada autor relativa linha base e, empilhada, onde a actividade de cada autor relativa linha de baixo. A ltima opo evita o cruzamento de linhas que pode tornar o grfico mais fcil de ler, mas menos fcil para ver a produo de um determinado autor. Por defeito, a analise sensvel a maisculas e minsculas, pelo que os utilizadores PeterEgan e PeteRegan so tratados como autores diferentes. No entanto, em muitos casos, os nomes de utilizadores no so sensveis a maisculas e minsculas, e so por vezes introduzidos inconsistentemente, pelo que poders querer que o DavidMorgan e o davidmorgan sejam tratados como a mesma pessoa. Usar a caixa de verificao Autores sensveis a maisculas e minsculas para controlar como este caso tratado. Ter em ateno que as estatsticas cobrem o mesmo perodo que a caixa de dilogo Registo. Se esta s mostra uma reviso ento as estatsticas no te diro muito.

76

Guia de Uso Dirio

4.9.10. Modo Fora de Linha

Figura 4.23. Caixa de dilogo Colocar-se em Fora de Linha


Se o servidor no est disponvel e tens a cache de registo activada, podes usar a caixa de dilogo e o navegador de revises no modo fora de linha. Usando dados da cache que te permite continuar a trabalhar, apesar de a informao no estar actualizada ou mesmo completa. Aqui tens trs opces: Fora-de-linha por agora Completa a operao corrente no modo fora-de-linha mas, repetir a tentativa de acesso ao repositrio da prxima vez que forem requeridos dados do registo. Fora-de-linha permanentemente Permanecer em modo fora-de-linha at um pedido de verificao ao repositrio for especificamente requerido. Consultar Seco 4.9.11, Refrescar a Vista. Cancelar Se no queres continuar com a operao com dados possivelmente obsoletos, basta cancelar. A caixa de verificao Tornar isto por defeito previne esta caixa de dilogo de reaparecer, e escolhe sempre a opo que escolheres a seguir. Podes ainda mudar (ou remover) a opo por defeito, aps a teres efectuado, a partir de TortoiseSVN Preferncias.

4.9.11. Refrescar a Vista


Se queres verificar o servidor novamente por novas mensagens de registo, podes simplesmente refrescar a vista usando F5. Se tiveres a usar a cache de registo (disponvel por defeito), esta ir verificar o repositrio por novas mensagens e trazer s as novas. Se a cache de registo estava em modo fora-de-linha esta ir tambm tentar voltar a estar em linha. Se est a utilizar a cache de registo e pensas que o contedo da mensagem ou o autor tenha mudado, podes usar Shift-F5 ou Ctrl-F5 para rebuscar as mensagens mostradas a partir do servidor e actualizar a cache de registo. De notar que isto s afecta as mensagens mostradas correntemente, e no invalida a totalidade da cache para esse repositrio.

4.10. Ver Diferenas

77

Guia de Uso Dirio

Um dos requisitos mais comuns no desenvolvimento de projectos poder ver o que foi alterado. Tu podes querer ver as diferenas entre duas revises do mesmo ficheiro, ou as diferenas entre dois ficheiros diferentes. O TortoiseSVN fornece uma ferramenta incorporada para ver as diferenas de ficheiros de texto, chamada TortoiseMerge. Para ver as diferenas de ficheiros de imagem o TortoiseSVN tambm tem uma ferramenta, chamada TortoiseIDiff. claro que se quiseres, podes usar o teu programa de comparao favorito.

4.10.1. Diferenas em ficheiros


Alteraes locais Se pretendes ver que alteraes tu efectuastes na tua cpia de trabalho, usa apenas o menu de contexto do explorador e selecciona TortoiseSVN Comparar. Diferenas para outro ramo/etiqueta Se pretendes ver o que foi alterado no trunk (se ests a trabalhar num ramo) ou num ramo especfico (se ests a trabalhar no trunk), podes usar o menu de contexto do explorador. Apenas mantm a tecla Shift enquanto clicas com o boto direito no ficheiro. Ento selecciona TortoiseSVN Comparar com URL. Na caixa de dilogo seguinte, especifica o URL no repositrio com o qual queres comparar o teu ficheiro. Tambm podes usar o navegador de repositrio e, seleccionar duas rvores para comparar, talvez duas etiquetas, ou um ramo/etiqueta com o trunk. O menu de contexto a permite-te compar-las usando Comparar revises. Ler mais em Seco 4.10.3, Comparando Pastas. Diferenas de uma reviso anterior Se pretendes ver a diferena entre uma reviso particular e a tua cpia de trabalho, usa a caixa de dilogo Registo de Revises e seleccionar a reviso de interesse, ento seleccionar a partir do menu de contexto Compara com cpia de trabalho. Se pretendes ver as diferenas entre a ltima reviso submetida e a tua cpia de trabalho, assumindo que a tua cpia de trabalho no foi modificada, clica apenas com o boto direito no ficheiro. E selecciona TortoiseSVN Comparar com reviso anterior. Ento ser executada uma comparao entra reviso antes da ltima submisso (como registada na tua cpia de trabalho) e a BASE de trabalho. Isto mostra a ltima alterao feita nesse ficheiro para o levar ao estado em que se encontra correntemente na tua cpia de trabalho. No ir mostrar alteraes mais recentes que a tua cpia de trabalho. Diferenas entre duas revises prvias Se pretendes ver as diferenas entre duas revises prvias, que j esto submetidas, usa a caixa de dilogo Registo de Revises e seleccionar as duas revises qye queres comprar (usando o modificador usual Ctrl). Ento selecciona a partir do menu de contexto Comparar revises. Se fizeste isto a partir do registo de reviso de uma pasta, a caixa de dilogo Arquivos Alterados aparecer mostrando a lista de ficheiros alterados nessa pasta. Ler mais em Seco 4.10.3, Comparando Pastas. Todas as alteraes feitas numa submisso Se pretendes ver as alteraes feitas em todos os ficheiros numa reviso particular numa vista nica, podes usar o resultado da Comparao-Unificada (formato de remendo GNU). Isto mostra apenas as diferenas com algumas linhas de contexto. mais difcil de ler que uma comparao visual de ficheiros, mas ir mostrar todas as alteraes em conjunto. A partir da caixa de dilogo Registo de Revises selecciona as revises de interesse, e selecciona a partir do menu de contexto Mostrar alteraes como uma comparao unificada. Diferenas entre ficheiros Se pretendes ver as diferenas entre dois ficheiros diferentes, podes faze-lo directamente no explorador seleccionando ambos os ficheirs (usando o modificador usual Ctrl). Ento a partir do menu de contexto do explorador, selecciona TortoiseSVN Comparar.

78

Guia de Uso Dirio

Diferenas entre ficheiro/pasta da CT e um URL Se pretendes ver as diferenas entre um ficheiro na tua cpia de trabalho e um ficheiro em qualquer repositrio do Subversion, podes faze-lo directamente no explorador, sleeccionando o ficheiro e mantendo permido a tecla Shift enquanto clicas com o boto direito para aceder ao menu de contexto. Selecciona TortoiseSVN Comparao com URL. Podes fazer a mesma coisa para uma pasta da cpia de trabalho. O TortoiseMerge mostra essas diferenas da mesma maneira que mostra um ficheiro de remendo - uma lista de ficheiros alterados que podes visualizar, um de cada vez. Diferenas com informao de responsabilidade Se pretendes ver no s as diferenas, mas tambm ver o autor, reviso e data dessa alterao, podes combinar os relatrios de comparao e responsabilizao a partir da caixa de dilogo registo de revises. Para mais detalhes consulta Seco 4.23.2, Diferenas de responsabilidade. Diferenas entre pastas As ferramentas embutidas fornecidas com o TortoiseSVN, no suportam a visualizao de diferenas entre hierarquia de pastas. Mas se tiveres uma ferramenta externa que suporte essa funcionalidade, podes usa-la em substituio. Em Seco 4.10.5, Ferramentas de Comparao/Integrao ns falamos sobre algumas que temos usado. Se tens configurada uma ferramenta de comparao de terceiros, podes usar Shift quando seleccionares o comando de Comparao, para usar a ferramenta alternativa. Consulta Seco 4.30.5, Preferncias de Programas Externos para descobrires como configurar outras ferramentas de comparao.

4.10.2. Opes de Fim-de-Linha e Espaos-Brancos


Por vezes no tempo de vida do projecto poders alterar os fim-de-linha de CRLF para LF, ou poders alterar a indentao de uma seco. Infelizmente isto ir marcar um grande nmero de linhas como alteradas, mesmo que no haja alteraes de significado no cdigo. Estas opes te iro ajudar a gerir essas alteraes quando for altura de comparar e aplicar as diferenas. Irs ver essas definies nas caixas de dilogo Integrar e Responsabilizar, tal como nas definies para o TortoiseMerge. Ignorar fins-de-linha exclui alteraes que so exclusivamente devidas a diferenas no estilo de fimde-linha. Comparar espaos em branco inclui todas as alteraes na indentao e espaos-em-branco em linha, como linhas adicionadas/removidas. Ignorar alteraes em espaos em branco exclui alteraes que so exclusivamente devidas a uma alterao na quantidade e tipo do espao em branco, e.g. alterando a indentao ou alterando tabulaes para espaos. Adicionando espaos em branco onde nenhum existia, ou remover completamente um espao em branco, ser sempre mostrado como uma alterao. Ignorar todos os espaos em branco exclui todas as alteraes relacionadas s com espaos em branco. Naturalmente qualquer linha com contedo alterado ser sempre includa na comparao.

4.10.3. Comparando Pastas

79

Guia de Uso Dirio

Figura 4.24. A Caixa de Dilogo Comparar Revises


Quando seleccionas duas rvores no interior do navegador de repositrio ou quando seleccionas duas revises de uma pasta na caixa de dilogo, podes Context menu Comparar revises. Esta caixa de dilogo mostra a lista de todos os ficheiros que foram alterados, permitindo-te compar-los ou responsabiliza-los individualmente, usando o menu de contexto. Podes exportar uma rvore de alteraes, que til se necessitas de enviar a algum a estrutura da rvore do teu projecto, mas contendo apenas aqueles ficheiros que foram alterados. Esta operao funciona s em ficheiros alterados, pelo que s precisas de seleccionar os ficheiros de interesse - o que normalmente significa todos - e depois Menu de contexto Exportar seleco para.... Sers solicitado a introduzir uma localizao para guardar a rvove de alteraes. Podes tambm exportar a lista de ficheiros alterados para um ficheiro de texto, usando Menu de contexto Guardar lista de ficheiros seleccionados para.... Se queres exportar a lista de ficheiros e tambm as aces (modificada, adicionada,removida), poders faze-lo usando Menu de contexto Copiar seleco para a rea de transferncia. O boto no topo permite-te alterar a direco da comparao. Podes mostrar as alteraes necessrias para ir de A a B, ou se preferires, de B a A. Os botes com os nmeros de reviso podem ser usados para mudar para um intervalo de revises diferentes. Quando alteras o intevalo, a lista de itens, que diferem entre revises, ser actualizada automaticamente. Se a lista de nomes de ficheiros muito extensa podes utilizar a caixa de pesquisa, para assim reduzir a lista para ficheiros cujo nome contm um texto especfico. Ter em ateno que usada uma pesquisa de texto simples, e se queres restringir a lista a ficheiro de fonte de C, devers introduzir .c em vez de *.c.

80

Guia de Uso Dirio

4.10.4. Comparando Imagens usando o TortoiseDiff


Existem muitas ferramentas disponveis para comparar ficheiros de texto, incluindo o nosso TortoiseMerge, mas com frequncia estamos tambm espera de ver como um ficheiro de imagem foi alterado. por isso que crimos o TortoiseIDiff.

Figura 4.25. O leitor de diferenas de imagem


TortoiseSVN Comparar para qualquer formato de imagem comum, ir arrancar o TortoiseIDiff para mostrar diferenas de imagem. Por defeito as imagens so mostradas lado-a-lado, mas em vez de, podes usar o menu Vista ou a barra de ferramentas para comutar para uma vista cima-baixo, ou se preferires podes sobrepor as imagens e fingir que ests a usar uma mesa de luz. Naturalmente que podes aplicar mais ou menos zoom e posicionar a imagem. Podes tambm posicionar a imagem apenas por arrast-la com o boto direito do rato. Se seleccionares a opo Ligar posies das imagens, os controlos de posicionamento (barras e rolar, roda do rato) ficaram ligados. Uma caixa de informao de imagem mostra os detalhes sobre a mesma, como o tamanho em pxeis, resoluo e profundidade de cor. Se esta caixa est a atrapalhar usa View Image Info para a esconder. Podes obter a mesma informao numa etiqueta, se mantiveres o rato sobre a barra de ttulo da imagem. Quando as imagens esto sobrepostas, a intensidade relativa das mesmas (mistura alfa) controlada por um controlo de deslocamento no lado esquerdo. Podes clicar em qualquer ponto do controlo de deslocamento para configurares a mistura directamente, ou podes arrast-lo para alterares a mistura iterativamente. Ctrl+Shift-Rodal para alterar a mistura. O boto por cima do controlo de deslocamento alterna entre as misturas de 0% e 100%, e se efectuares duplo clique no boto, a mistura alterna automaticamente a cada segundo at clicares no boto novamente. Isto pode ser til quando olhamos para pequenas alteraes mltiplas. Por vezes queres ver uma diferena em vez de uma mistura. Poders ter os ficheiros de imagem de duas revises de um placa de circuito impresso e querer ver quais as pistas que foram alteradas. Se desactivares

81

Guia de Uso Dirio

o modo mistura alfa, a diferena ir ser mostrada como uma XOR dos valores de cor dos pxeis. reas inalteradas sero brancas e as alteraes coloridas.

4.10.5. Ferramentas de Comparao/Integrao


Se as ferramentas fornecidas no fazem o que precisas, experimenta uma das muitas ferramentas comerciais ou open-source disponveis. Toda a gente tem as suas favoritas e esta lista est longe de estar completa, no entando, aqui esto algumas que poders levar em considerao: WinMerge WinMerge [http://winmerge.sourceforge.net/] uma grande ferramenta de comparao open-source que tambm pode lidar com pastas. Perforce Merge O Perforce um SCR comercial no entanto podes descarregar gratuitamente a ferramenta de comparar/integrar. Mais informaes em Perforce [http://www.perforce.com/perforce/products/ merge.html]. KDiff3 KDiff3 uma ferramenta de comparao gratuita que tambm suporta pastas. Podes descarreg-la em here [http://kdiff3.sf.net/]. ExamDiff O ExamDiff padro freeware. Esta ferramenta suporta ficheiros mas no pastas. O ExamDiff Pro shareware e adiciona um nmero de guloseimas que incluem, comparao de pastas e capacidades de edio. Em ambas edies existe suporte para unicode na verso 3.2 e superior. Podes descarreglas em PrestoSoft [http://www.prestosoft.com/]. Beyond Compare Semelhante ao ExamDiff Pro, esta uma excelente ferramenta de comparao shareware que suporta comparao de pastas e unicode. Descarrega-a em Scooter Software [http:// www.scootersoftware.com/]. Araxis Merge O Araxis Merge uma til ferramenta comercial para comparar e integrar ficheiros e pastas. Executa uma comparao tripartida em integraes e tem links de sincronizao, para uso se alteraste a ordem das funes. Descarrega-a em Araxis [http://www.araxis.com/merge/index.html]. SciTE Este editor de texto inclui colorao de sintaxe para comparaes unificadas, tornando muito fcil a sua leitura. Descarrega-a em Scintilla [http://www.scintilla.org/SciTEDownload.html]. Notepad2 O Notepad2 foi desenhado como substituto para o programa padro Bloco-de-notas, do Windows, sendo baseado no controlo de edio open-source Scintilla. Bem como, sendo bom para ver comparaes unificadas muito melhor que o Bloco-de-notas do Windows para a maioria dos trabalhos. Descarrega-o grtis em here [http://www.flos-freeware.ch/notepad2.html]. Consultar Seco 4.30.5, Preferncias de Programas Externos para mais informaes em como configurar o TortoiseSVN para usar essas ferramentas.

4.11. Adicionar Novos Ficheiros e Pastas

82

Guia de Uso Dirio

Figura 4.26. Menu de contexto do Explorador para ficheiros no versionados


Se criastes novos ficheiros e/ou pastas durante o teu processo de desenvolvimento, ento precisas de adicion-los tambm ao controlo de verses. Selecciona o(s) ficheiro(s) e/ou pasta e usa TortoiseSVN Adicionar... Aps adicionares os ficheiros/pastas ao controlo de verses, o ficheiro aparece com o cone de sobreposio adicionado, o que significa que ters primeiro de submeter a tua cpia de trabalho para tornar esses ficheiros/pastas disponveis a outros programadores. Adicionar um ficheiro/pasta no afecta o repositrio!

Muitas Adies
Podes tambm usar o comando Adicionar em pastas j versionadas. Neste caso, a caixa de dilogo adicionar ir mostrar todos os ficheiros no versionados dentro dessa mesma pasta versionada. Isto ajuda no caso de teres muitos ficheiros novos, e precisares de os adicionares de uma s vez. Para adicionar ficheiros, de fora da tua cpia de trabalho, podes usar o manpulo para arrastar-e-largar: 1. Selecciona os ficheiros que queres adicionar 2. Arrasta-os com o boto direito para a nova localizao dentro da cpia de trabalho 3. Larga o boto direito do rato 4. Selecciona Menu de Contexto SVN Copiar e adicionar arquivos a esta Cpia de Trabalho. Os ficheiros sero ento copiados para a cpia de trabalho e adicionados ao controle de verses. Podes tambm adicionar ficheiros de dentro da cpia de trabalho, simplesmente arrastando com o boto direito e largando-os na caixa de dilogo submeter. Se adiconaste um ficheiro ou pasta por engano, podes desfazer a adio, antes de submeteres, usando TortoiseSVN Desfazer adio....

4.12. Copiando/Movendo/Renomeando Ficheiros e Pastas


Acontece com frequncia que j tens os ficheiros que precisas, noutro projecto no teu repositrio, e que queres simplesmente copi-los. Podias simplesmente copiar os ficheiros e adicion-los como descrito acima, mas isso no te preservaria qualquer histria. E se posteriormente tu corriges um problema nos ficheiros originais, s poders integrar a correco automaticamente se a nova cpia estiver relacionada com o original no Subversion. A maneira mais fcil para copiar ficheiros e pastas, dentro da cpia de trabalho, utilizar o menu de arrasto com o boto direito. Quando tu arrastas-com-boto-direito um ficheiro ou pasta de uma cpia de trabalho para outra, ou mesmo dentro da mesma pasta, aparece o menu de contexto quando libertas o rato.

83

Guia de Uso Dirio

Figura 4.27. Menu arrastar com o boto direito para uma pasta sob controlo de verses.
Agora, podes copiar o contedo existente e versionado para uma nova localizao, possivelmente renomeando-o ao mesmo tempo. Tu podes tambm copiar ou mover ficheiros versionados dentro da cpia de trabalho, ou mesmo entre duas copias de trabalho, usando o familiar metodo cortar-e-colar. Usar o Copiar ou Colar padro do Windows, para copiar um ou mais itens versionados para a rea de transferencia (clipboard). Se a rea de transferncia contm tais itens versionados, poders ento usar o TortoiseSVN Colar (nota: no o Colar padro do Windows ) para copiar ou mover esses itens, para a nova localizao da cpia de trabalho. Podes copiar ficheiros e pastas da tua cpia de trabalho para outra localizao no repositrio usando TortoiseSVN Ramo/Etiqueta. Consultar Seco 4.19.1, Criando um Ramo ou Etiqueta para mais detalhes. Podes localizar uma verso antiga de um ficheiro ou pasta na caixa de dilogo do registo e, copi-lo para uma nova localizao no repositrio directamente a partir da caixa de dilogo do registo, usando Menu de contexto Criar ramo/etiqueta a partir da reviso. Consultar Seco 4.9.3, Obtendo Informao Adicional para mais detalhes. Podes tambm usar o navegador de repositrio para localizar o contedo que pretendes e, copi-lo para a tua cpia de trabalho directamente do repositrio ou copiar entre duas localizaes, dentro do repositrio. Consultar Seco 4.24, O Navegador de Repositrio para mais detalhes.

No consigo copiar entre repositrios


Whilst you can copy and files and folders within a repository, you cannot copy or move from one repository to another while preserving history using TortoiseSVN. Not even if the repositories live on the same server. All you can do is copy the content in its current state and add it as new content to the second repository. Se tens duvidas que dois URLs, no mesmo servidor, se refiram ao mesmo ou a diferentes repositrios, usa o navegador de repositrio para abrir um URL e descobrir onde est a raiz do repositrio. Se conseguires ver as das localizaes numa janela do navegador de repositrio, ento eles esto no mesmo repositrio.

4.13. Ignorando Ficheiros E Pastas

84

Guia de Uso Dirio

Figura 4.28. Menu de contexto do Explorador para ficheiros no versionados


Na maioria dos projectos ters ficheiros e pastas que no devero estar sujeitos ao controlo de verses. Esses podero incluir ficheiros criados pelo compilador, *.obj, *.lst, talvez uma pasta de produto usada para armazenar o executvel. Sempre que submetas alteraes o TortoiseSVN mostra os ficheiros no versionados, que enchem a lista de ficheiros na caixa de dilogo submeter. Est claro que podes desligar essa visualizao, mas poders ento te esquecer de adicionar um novo ficheiro fonte. A melhor maneira para evitar esses problemas adicionar os ficheiros derivados lista de ignorados do projecto. Desse modo, eles nunca iro aparecer na caixa de dilogo submeter, mas os ficheiros fonte genuinamente no versionados sero ainda assinalados. Se tu clicares com o boto direito num nico ficheiro no versionado e seleccionares, a partir do menu de contexto, o comando TortoiseSVN Adiconar lista de ignorados, um submenu aparecer permitindo-te seleccionar s aquele ficheiro ou todos com a mesma extenso. Se seleccionares mltiplos ficheiros, no haver submenu e s podes adicionar esses ficheiros/pastas especficos. Se queres remover um ou mais itens da lista de ignorados, clica com o boto direito nesse itens e selecciona TortoiseSVN Remover da lista de ignorados Podes ainda aceder propriedade svn:ignore da pasta. Isso permite-te especificar padres mais gerais usando caracteres de substituio de nome de ficheiros, descritos na seguinte seco. Consultar Seco 4.17, Configuraes de Projecto para mais informaes para configurar propriedades directamente. Por favor, ter em ateno que cada padro para ignorar tem de ser colocado numa linha separada, separ-los por espaos no resulta.

Lista Global de Ignorados


Outra maneira de ignorar ficheiros adicion-los lista global de ignorados. A grande diferena aqui que a lista global de ignorados uma propriedade local. Aplica-se a todos os projectos Subversion, mas apenas no PC local. De modo geral melhor usar a propriedade svn:ignore quando possvel, porque pode ser aplicado a um projecto em especfico e funciona para todos que SVN exportem o projecto. Consultar Seco 4.30.1, Preferncias Gerais para mais detalhes.

Ignorando Itens Versionados


Ficheiros e pastas versionados nunca podem ser ignorados - essa uma funcionalidade do Subversion. Se versionares um ficheiro por engano, l em Seco B.8, Ignorar ficheiros que j esto versionados para instrues em como o desversionar.

4.13.1. Correspondncia de Padres em Listas de Ignorados

85

Guia de Uso Dirio

O ignorar padres no Subversion usa caracteres de substituio do nome de ficheiro, uma tcnica usada no Unix para especificar ficheiros recorrendo a meta-caracteres e wildcards (caracteres de substituio). Os seguintes caracteres tm significado especial: * Corresponde a qualquer cadeia de caracteres, incluindo a cadeia vazia (sem caracteres). ? Corresponde a qualquer carcter isolado. [...] Corresponde a qualquer um dos caracteres no interior dos parnteses rectos. Dentro dos parnteses rectos, um par de caracteres separados por - corresponde a qualquer carcter lexicalmente entre os dois. Por exemplo [AGm-p] corresponde a qualquer um de A, G, m, n, o ou p. Correspondncia de padres sensvel a maisculas e minsculas, o que pode causar problemas no Windows. Podes forar a insensibilidade a maisculas e minsculas fora, ao emparelhar caracteres, e.g. para ignorar *.tmp, independentemente ao tamanho da letra, podes usar um padro como *.[Tt] [Mm][Pp]. Se queres uma definio oficial para caracters de substituio de nome de ficheiro, podes encontr-la nas especificaes do IEEE para a linguagem de comando da da linha de comandos (shell) Pattern Matching Notation [http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13].

No Usar Caminhos na Lista Global de Ignorados


No deves incluir informao de caminhos no teu padro. A correspondncia de padres tem como funo ser utilizado contra nomes de ficheiros e nomes de pastas. Se queres ignorar todos as pastas CVS adiciona apenas CVS lista de ignorados. No h necessidade de especificar CVS */CVS como fazias em verses anteriores. Se queres ignorar todas as pastas tmp quando elas existem dentro da pasta prog, mas no dentro da pasta doc, devers usar em alternativa a propriedade svn:ignore. No h maneira fivel de conseguir isto com recurso a padres globais de ignorados.

4.14. Removendo, Movendo e Renomeando


Ao contrrio do CVS, o Subversion permite renomear e mover ficheiros e pastas. Portanto no submenu TortoiseSVN existem entradas de menu para remover e renomear.

86

Guia de Uso Dirio

Figura 4.29. Menu de contexto do Explorador para ficheiros versionados 4.14.1. Removendo ficheiros e pastas
Usa TortoiseSVN Remover para remover ficheiros ou pastas do subversion. Quando tu executas TortoiseSVN Remover num ficheiro, este removido imediatamente da tua cpia de trabalho tal como marcado para remoo no repositrio, na prxima submisso. A pasta pai do ficheiro mostra a sobreposio de cone apagado. At tu submeteres a alterao, poders recuperar o ficheiro usando TortoiseSVN Reverter na pasta pai. Quando usas o TortoiseSVN Remover num ficheiro, este permanece na tua cpia de trabalho, mas a sobreposio de cone muda para indicar que est marcado para remoo. At submeteres a alterao poders recuperar a pasta usando o TortoiseSVN Reverter na prpria pasta. Esta diferena de comportamento entre ficheiros e pastas, parte do Subversion e no do TortoiseSVN. Se queres remover um tem do repositrio, mas mant-lo localmente como um ficheiro/pasta no versionado, usa Menu de Contexto Extendido Remover (manter local). Tens de manter premida a tecla Shift enquanto clicas com o boto direito no item, no painel lista do explorador (painel direito), de modo a veres isto no menu de contexto estendido. Se um ficheiro removido via explorador em vez de usar o menu de contexto do TortoiseSVN, a caixa de dilogo submeter mostra esses ficheiros e deixa-te tambm remove-los do controlo de verses antes da submisso. No entanto se actualizares a tua cpia de trabalho, o Subversion ir detectar o ficheiro em falta e substitui-lo pela ltima verso no repositrio. Se precisas de remover um ficheiro sob controlo de verses, usa sempre TortoiseSVN Remover para que o Subversion no tenha que adivinhar o que querias realmente fazer.

87

Guia de Uso Dirio

Se uma pasta removida via explorador em vez de usar o menu de contexto TortoiseSVN, a tua cpia de trabalho ficar quebrada e no poders efectuar submisses. Se actualizares a tua cpia de trabalho, o Subversion ir substituir a pasta em falta pela ltima verso do repositrio, e ento podes apag-la correctamente usando TortoiseSVN Delete.

Recuperando um ficheiro ou pasta removido


Se removeste um ficheiro ou pasta e j submeteste essa operao de remoo para o repositrio, ento o TortoiseSVN Reverter normal no o pode mais recuperar. Mas o ficheiro ou pasta no est totalmente perdido. Se conheces a reviso em que o ficheiro ou pasta foi removido (se no sabes, usa a caixa de dilogo do registo para a encontrares), abre o navegador de repositrio e comuta para essa reviso. Selecciona o ficheiro ou pasta que removeste, clica com o boto direito e selecciona Menu de Contexto Copiar para..., como destino para essa operao de cpia, selecciona o caminho para a tua cpia de trabalho.

4.14.2. Movendo ficheiros e pastas


Se queres fazer um simples renomear no lugar de um ficheiro ou pasta, usa Context Menu Alterar nome... Insere o novo nome para o item e est feito. Se queres mover ficheiros dentro da tua cpia de trabalho, talvez para uma subpasta diferente, usa o manpulo de arrastar-e-largar do boto direito do rato: 1. selecciona os ficheiros ou pastas que queres mover 2. Arrasta-os com o boto direito para a nova localizao dentro da cpia de trabalho 3. Larga o boto direito do rato 4. No menu que surge selecciona Menu de Contexto SVN Mover para aqui iten(s) com controlo de verses

Submeter a pasta pai


Visto que renomeaes e movimentos so executados como uma remoo seguida por uma adio, devers submeter a pasta pai do ficheiro renomeado/movido para que a parte removida do renomeado/movido seja apresentado na caixa de dilogo submeter. Se no submeteres a parte removida do renomeado/movido ir ficar para trs no repositrio, e quando os teus colegas actualizarem, o ficheiro antigo no ser removido. i.e. eles tero ambos, o antigo e as novas cpias. Tu deves submeter a pasta renomeada antes de alterar qualquer dos ficheiros dentro dessa pasta, seno a tua cpia de trabalho pode ficar realmente baralhada. Podes tambm usar o navegador de repositrio para mover itens no mesmo. Consultar Seco 4.24, O Navegador de Repositrio para saberes mais.

No SVN Mover Externos


No devers usar os comandos TortoiseSVN Mover ou Renomear numa pasta que foi criada usando svn:externals. Esta aco teria como causaria a remoo do item externo do seu repositrio pai, provavelmente irritando muitas outras pessoas. Se necessitas de mover uma pasta de externos, devers usar um vulgar mover de linha de comando (shell), e ento ajustar as propriedades svn:externals das pastas pai de origem e destino.

88

Guia de Uso Dirio

4.14.3. Mudando maisculas e minsculas no nome do ficheiro


Efectuando alteraes apenas nas maisculas e minsculas no nome de um ficheiro complicado com o Subversion no Windows, porque durante um curto espao de tempo durante a mudana de nome, ambos os nomes de ficheiros tero de existir. Como o Windows tem um sistema de ficheiros insensvel a maisculas e minsculas, isto no funciona usando o comando Alterar-nome usual. Afortunadamente existem (pelo menos) dois mtodos possveis para renomear um ficheiro sem perder a sua histria de registo. importante renome-lo dentro do Subversion. Apenas renome-lo no explorador ir corromper a tua cpia de trabalho! Soluo A) (recomendada) 1. Submeter as alteraes na tua cpia de trabalho. 2. Renomear o ficheiro directamente no repositrio, de letraMAISCULA para LETRAmaiscula, usando o navegador de repositrio. 3. Actualizar a tua cpia de trabalho. Soluo B) 1. Renomear de letraMAISCULA para letraMAISCULA_ com o comando alterar-nome do submenu do TortoiseSVN. 2. Submeter as alteraes. 3. Renomear de letraMAISCULA_ para letraMAISCULA. 4. Submeter as alteraes.

4.14.4. Lidando com conflitos de maisculas e minsculas no nome do ficheiro


Se o repositrio j contm dois ficheiros com o mesmo nome, diferindo apenas nas misculas e minsculas (e.g. TEST.TXT e test.txt), no conseguirs actualizar ou SVN exportar a pasta pai num cliente Windows. Enquanto o Subversion suporta nomes de ficheiros sensveis a misculas e minsculas, o Windows no. Isto por vezes acontece quando duas pessoas submetem, a partir de cpias de trabalho separadas, ficheiros que por acaso tm o mesmo nome mas com uma diferena de maisculas e minsculas. Pode tambm acontecer quando os ficheiros so submetidos a partir de um sistema, com um sistema de ficheiros sensvel a maisculas e minsculas, como o Linux. Nesse caso tens de decidir qual o que queres manter e remover (ou alterar o nome) do outro no repositrio.

Prevenindo dois ficheiros com o mesmo nome


Existe um gancho de servidor disponvel em: http://svn.collab.net/repos/svn/trunk/contrib/ hook-scripts/ que previne submisses que resultem em conflitos de maisculas e minsculas.

4.14.5. Reparando Renomeaes de Ficheiros


Por vezes o teu IDE amigvel ir renomear ficheiros por ti como parte de um processo de refactorao, e claro no ir avisar o Subversion. Se tentares submeter as tuas alteraes, o Subversion ir ver o velho ficheiro como desaparecido e o novo como ficheiro no versionado. Poderias apenas adicionar o ficheiro ao controlo de verses, mas assim perderias a sua histria, j que o Subversion no sabe que ambos os ficheiros esto relacionados.

89

Guia de Uso Dirio

Uma melhor maneira ser, notificar o Subversion de que esta alterao na realidade uma alterao de nome, e poders faze-lo dentro das caixas de dilogo Submeter e Verificar alteraes. Simplesmente selecciona ambos os ficheiros, o com nome antigo (em falta) e o com o novo nome (no versionado), e usa Context Menu Reparar movimento para emparelhar os dois ficheiros como uma renomeao.

4.14.6. Removendo Ficheiros No Versionados


Normalmente tu configuras a tua lista de ignorados tal que todos os ficheiros gerados sejam ignorados pelo Subversion. Mas se queres limpar todos esse itens ignorados de modo a produzir uma verso limpa? Por norma tu inserias isso na tua makefile, mas se quiseres depurar a tua makefile ou alterar o sistema de build, ser til ter uma maneira de limpar a casa. O TortoiseSVN disponibiliza tal opo usando Menu de Contexto Estendido Remover itens sem controle de verso.... Tens de manter premida a tecla Shift enquanto clicas com o boto direito na pasta, no painel de lista do explorador (painel direito) de modo a veres isto no menu de contexto estendido. Esta aco ir abrir uma caixa de dilogo que listar todos os ficheiros no versionados em qualquer ponto da tua cpia de trabalho. Podes ento seleccionar ou desseleccionar os itens a remover. Quando tais itens so removidos usando o cesto de reciclagem para que no caso de te enganares e removeres um ficheiro que deveria estar versionado, poderes ainda recuper-lo.

4.15. Desfazer Alteraes


Se pretenderes desfazer todas as alteraes que efectuaste num ficheiro desde a ltima actualizao, precisas de seleccionar o ficheiro, clicar com o boto direito para aparecer o menu de contexto e ento seleccionar o comando TortoiseSVN Reverter Uma caixa de dilogo ir aparecer, mostrando-te os ficheiros que alteraste e podes reverter. Seleccionar os que queres reverter e clica no OK.

Figura 4.30. Caixa de Dilogo Reverter

90

Guia de Uso Dirio

Se queres desfazer uma remoo ou renomeao, precisas de usar o Reverter na pasta pai j que o item removido no existir, para poderes clicar sobre ele com o boto direito. Se pretendes desfazer a adio de um item, executado no menu de contexto como TortoiseSVN Desfazer adio.... Na realidade isto tambm um reverter, mas neste caso o nome foi alterado para se tornar mais bvio. As colunas nesta caixa de dilogo podem ser customizadas da mesma maneira que as colunas na caixa de dilogo Verificar alteraes. Consulta Seco 4.7.3, Estado Remoto e Local para mais detalhes.

Desfazer Alteraes que j foram Submetidas


Reverter apenas desfaz as tuas alteraes locais. No desfaz quaisquer alteraes que tenham sido j submetidas. Se pretendes desfazer todas as alteraes que j foram submetidas numa reviso particular, consulta Seco 4.9, Caixa de Dilogo Registo de Revises para mais informao.

Reverter Lento
Quando reverteres alteraes, podes descobrir que essa operao demora muito mais tempo do que estavas espera. Isto acontece porque a verso modificada do ficheiro enviado para o cesto de reciclagem, para que possas recuperar as tuas alteraes no caso de reverteres por engano. No entanto, se o teu cesto de reciclagem estiver cheio, o Windows tomar mais tempo a encontrar um local para colocar o ficheiro. A soluo simples: ou esvazia o cesto de reciclagem ou desactiva a caixa Usar a reciclagem enquanto revertendo nas preferncias do TortoiseSVN.

4.16. Limpar
Se um comando do Subversion no pode concluir com sucesso, talvez devido a problemas de servidor, pode deixar a tua cpia de trabalho num estado inconsistente. Neste caso precisas de usar TortoiseSVN Limpar na pasta. uma boa ideia fazer isto no nivel de topo da tua cpia de trabalho. A limpeza tem outro til efeito secundrio. Se a data de um ficheiro foi alterada mas no o seu contedo, o Subversion no conseguir distinguir se foi realmente alterado, excepo da execuo de uma comparao byte a byte com a cpia pura. Se tens muitos ficheiros neste estado, isto torna o adquirir o estado muito lento, que far com que muitas caixas de dilogo respondam lentamente. Executando a Limpeza na tua cpia de trabalho ir reparar essas marcas de tempo quebradas restaurando a verificao de estado a toda a velocidade.

Usar Marcas de Tempo de Submisso


Algumas verses anteriores do Subversion eram afectadas por um problema que provocava um desencontro das marcas de tempo, quando SVN exportavas com a opo verificada Usar marcas de tempo de submeter. Usa o comando de limpesa para acelerar essas cpias de trabalho.

4.17. Configuraes de Projecto

91

Guia de Uso Dirio

Figura 4.31. Pgina de propriedades do explorador, aba do Subversion


Por vezes tu queres obter informao mais detalhada sobre um ficheiro/pasta do que a da sobreposio do cone. Podes obter toda a informao que o Subversion providencia, na caixa de dilogo de propriedades do explorador. Apenas selecciona o ficheiro ou pasta e selecciona no menu de contexto Menu do Windows propriedades (nota: esta a entrada normal do menu de propriedades que o explorador providncia, e no a do submenu TortoiseSVN!). Na caixa de dilogo de propriedades o TortoiseSVN adicionou uma nova pgina de propriedades para ficheiros/pastas, sob o controlo do Subversion, onde podes ver toda a informao relevante sobre o ficheiro/pasta.

4.17.1. Propriedades Subversion

92

Guia de Uso Dirio

Figura 4.32. Pgina de propriedades do Subversion


Podes ler e acertar as propriedades do Subversion a partir da caixa de dilogo das propriedades do Windows, mas tambm a partir de TortoiseSVN propriedades e do interior das listas de estado do TortoiseSVN, ou seja Menu de contexto propriedades. Podes adicionar as tuas prprias propriedades, ou algumas propriedades com significado especial para o Subversion. Essas comeam com svn:. svn:externals uma dessas propriedades; Descobre como lidar com externos em Seco 4.18, Itens Externos.

4.17.1.1. svn:keywords
O Subversion suporta expanso de palavras-chave do tipo CVS, que podem ser usadas para embeber informao de reviso e nome de ficheiro dentro do prprio ficheiro. As palavras-chave actualmente suportadas so: $Date$ Data da ltima submisso conhecida. Isto baseado em informao obtida quando actualizas a tua cpia de trabalho. No verifica o repositrio para tentar encontrar alteraes mais recentes. $Revision$ Reviso da ltima submisso conhecida. $Author$ Autor que fez a ltima submisso conhecida. $HeadURL$ O URL completo deste ficheiro no repositrio. $Id$ A combinao comprimida das quatro palavras-chave prvias. Para descobrir como usar estas palavras-chave, consulta o svn:keywords section [http://svnbook.redbean.com/en/1.5/svn.advanced.props.special.keywords.html] no livro do Subversion, que te dar uma descrio completa dessas palavras-chave e em como activa-las e us-las.

93

Guia de Uso Dirio

Para mais informao sobre as propriedades no Subversion, consulta Special Properties [http:// svnbook.red-bean.com/en/1.5/svn.advanced.props.html].

4.17.1.2. Adicionando e Editando Propriedades

Figura 4.33. Adicionando propriedades


Para adicionar uma nova propriedade clica primeiro em Adicionar.... Selecciona o nome da propriedade pretendida a partir da combo box, ou escreve um nome da tua escolha, e insere um valor na caixa em baixo. As propriedades que requerem valores mltiplos, como uma lista de ignorados, podem ser introduzidos em vrias linhas. Clicar em OK para adicionar essa propriedade lista. Se queres aplicar a propriedade a muitos itens de uma s vez, selecciona os ficheiros/pastas no explorador e selecciona Menu de contexto propriedades Se queres aplicar a propriedade a cada ficheiro e pasta na hierarquia abaixo da pasta corrente, verifica a caixa de verificao Recursiva. Algumas propriedades, como por exemplo svn:needs-lock, s podem ser aplicadas em ficheiros, ento o nome da propriedade no aparece na lista drop down para pastas. Podes, no entanto, ainda aplicar tal propriedade recursivamente a todos os ficheiros na hierarquia, mas ters de escrever o nome da propriedade manualmente. Se desejas editar uma propriedade que j exista, selecciona essa propriedade a partir da lista das propriedades existentes e clica em Editar.... Se desejas remover uma propriedade que j exista, seleciona essa propriedade da lista de propriedades existentes e clica em Remover. A propriedade svn:externals pode ser usada para puxar outros projectos do mesmo repositrio ou de um repositrio completamente diferente. Para mais informao, consultar Seco 4.18, Itens Externos.

4.17.1.3. Exportando e Importando Propriedades


Com frequncia te encontras a aplicar o mesmo conjunto de propriedades inmeras vezes, por exemplo bugtraq:logregex. Para simplificar o processo de copiar propriedades de um projecto para outro, podes usar a funcionalidade Exportar/Importar.

94

Guia de Uso Dirio

A partir do ficheiro ou pasta onde as propriedades esto j acertadas, usa TortoiseSVN propriedades, selecciona as propriedades que desejas exportar e clica em Exportar.... Sers chamado a introduzir o nome do ficheiro onde sero guardadas os nomes das propriedades. A partir da pasta(s) onde desejas aplicar essas propriedades, usa TortoiseSVN propriedades e clica em Importar....Sers chamado a introduzir o nome do ficheiro de onde importar, ento navega para a localizao onde guardaste o ficheiro exportado previamente e selecciona-o. As propriedades sero adicionadas s pastas no recursivamente. Se queres adicionar propriedades recursivamente a uma rvore segue os passo acima e, ento na caixa de dilogo propriedades selecciona cada propriedade vez e, clica em Editar..., verifica a caixa Aplicar propriedade recursivamente e clica no OK. O formato do ficheiro Import binrio e proprietrio do TortoiseSVN. O seu nico propsito transferir propriedades usando o Import e Export, pelo que no h necessidade de editar esses ficheiros.

4.17.1.4. Propriedades Binrias


O TortoiseSVNpode lidar com valores de propriedades binrias usando ficheiros. Para ler um valor de propriedade binria Guarda... para um ficheiro. Para acertar um valor binrio usa um editor hex ou outra ferramenta apropriada para criar o ficheiro com o contedo requerido, e Carrega... a partir desse ficheiro. Apesar das propriedades binrias no serem usadas com frequncia, elas podem ser teis em certas aplicaes. Por exemplo, se estiveres a armazenar enormes ficheiros grficos, ou se a aplicao usada para carregar o ficheiro enorme, tu poders querer guardar uma miniatura da imagem como uma propriedade, para que possas obter uma rpida pr-visualizao.

4.17.1.5. Configurao automtica de propriedades


Tu podes configurar o Subversion e o TortoiseSVN para automaticamente acertar propriedades em ficheiros e pastas, quando so adicionadas ao repositrio. Existem duas maneiras de o fazer. Podes editar o ficheiro de configurao do subversion para activar esta funcionalidade no teu cliente. A pgina Geral da caixa de dilogo preferncias do TortoiseSVN tem um boto editar que te leva l directamente. O ficheiro de config um ficheiro de texto simples que controla algum do funcionamento do Subversion. Necessitas de alterar duas coisas: primeiro na seco intitulada miscellany descomenta a linha enable-auto-props = yes. Segundo precisas de editar a seco abaixo para definires quais as propriedades que queres adicionadas a que tipo de ficheiros. Este mtodo uma funcionalidade padro do Subversion e funciona com qualquer cliente. No entanto tem de ser definida individualmente para cada cliente - no existe maneira de propagar essas configuraes a partir do repositrio. Um mtodo alternativo ajustar a propriedade tsvn:autoprops em pastas, como descrito na seco seguinte. Este mtodo s funciona para clientes TortoiseSVN, mas propagado para todas as cpias de trabalho aquando da actualizao. Qualquer que seja o mtodo que escolhas, devers ter em ateno que o auto-props s aplicado a ficheiros na altura em que eles so adicionados ao repositrio. O auto-props nunca alterar as propriedades dos ficheiros que j esto versionados. Se queres ter a certeza absoluta que os ficheiros novos tm aplicadas as propriedades correctas, devers colocar um gancho de pre-commit, de modo a rejeitar submisses onde as propriedades requeridas no esto colocadas.

Submeter as propriedades
As propriedades do Subversion so versionadas. Depois de alterares ou adicionares uma propriedade, ters de submeter essa alterao.

95

Guia de Uso Dirio

Conflitos em propriedades
Se houver um conflito ao submeter as alteraes, porque outro utilizador alterou a mesma propriedade, o Subversion gera o ficheiro .prej. Apaga este ficheiro aps resolveres o conflito.

4.17.2. Propriedades de Projecto TortoiseSVN


O TortoiseSVN tem algumas propriedades prprias, e essas comeam por tsvn:. tsvn:logminsize fixa o tamanho mnimo da mensagem de registo para a submisso. Se inserires uma mensagem mais curta do que a fixada, a submisso desactivada. Esta funcionalidade muito til para te recordar de colocares uma mensagem correcta e descritiva para cada submisso. Se esta propriedade no for fixada, ou o valor for zero, mensagens de registo vazias sero permitidas. tsvn:lockmsgminsize fixa o tamanho mnimo de uma mensagem de bloqueio. Se introduzires uma mensagem mais curta do que aqui especificada, o bloqueio desactivado. Esta funcionalidade muito til para te lembrar de colocar uma mensagem correcta e descritiva para cada bloqueio que obteres. Se esta propriedade no for fixada, ou o valor for zero, mensagens de bloqueio vazias sero permitidas. tsvn:logwidthmarker usada por projectos que requerem que as mensagens de registo sejam formatadas com um comprimento mximo (tipicamente 80 caracteres) antes de uma quebra de linha. Fixando esta propriedade para um valor diferente de zero ir fazer duas coisas caixa de dilogo de introduo de mensagens de registo: coloca um marcador para indicar o comprimento mximo, e desactiva o ajuste de palavras na visualizao, para que possas ver se o texto que inseriste muito longo. Nota: esta funcionalidade s funcionar correctamente se tu tiveres uma fonte de comprimento fixo seleccionada para as mensagens de registo. tsvn:logtemplate usado por projectos que tm regras acerca da formatao das mensagens de registo. A propriedade mantm uma cadeia de caracteres multi-linha que ser inserida na caixa de mensagens de submisso quando inicias a submisso. Podes ento edit-la para incluir a informao requerida. Nota: Se estiveres tambm a usar a tsvn:logminsize, tem a certeza de fixares um comprimento maior que o do template ou perders o mecanismo de proteco. O Subversion permite que tu fixes autoprops que sero aplicados a ficheiros recentemente adicionados ou importados, baseado na extenso do ficheiro. Isto depende de cada cliente ter fixado os autoprops apropriados no seu ficheiro de configurao do Subversion. tsvn:autoprops pode ser fixado em pastas e essas sero integradas com os autoprops locais quando algum ficheiro for adicionado ou importado. O formato o mesmo dos autoprops do Subversion, e.g. *.sh = svn:eolstyle=native;svn:executable fixa duas propriedades em ficheiros com a extenso .sh. Se houver um conflito entre autoprops locais e tsvn:autoprops, as configuraes de projecto tomam precedncia porque so especficas a esse projecto. Na caixa de dilogo Submeter tens a opo de colar a lista de ficheiros alterados, incluindo o estado de cada ficheiro (adicionado, modificado, etc). tsvn:logfilelistenglish define se o estado do ficheiro inserido em Ingls ou na lngua localizada. Se a propriedade no fixada, o valor por defeito true. O TortoiseSVN pode usar mdulos verificadores de ortografia que tambm so usados pelo OpenOffice e Mozilla. Se tens estes correctamente instalados, esta propriedade ir determinar qual o verificador de ortografia a usar, i.e. em que linguagem as mensagens de registo do teu projecto devero ser escritas. tsvn:projectlanguage fixa o mdulo de linguagem que o motor de verificao ortogrfica dever usar quando inseres uma mensagem de registo. Podes encontrar valores para a tua lingua nesta pgina: MSDN: Language Identifiers [http://msdn2.microsoft.com/en-us/library/ ms776260.aspx].

96

Guia de Uso Dirio

Podes inserir este valor em decimal ou em hexadecimal se prefixado com 0x. Por exemplo Ingls (US) pode ser introduzido como 0x0409 ou 1033. A propriedade tsvn:logsummary usada para extrair a parte da mensagem de registo que ser mostrada, na caixa de dilogo de registo, como o seu sumrio. O valor da propriedade tsvn:logsummary dever ser inserida como uma linha de cadeia de caracteres regex que contm um grupo regex. O que corresponder a esse grupo ser usado como resumo. Um exemplo: \[SUMMARY\]:\s+(.*) Ir apanhar tudo depois de [SUMMARY], na mensagem de registo, e usa-a como o sumrio. Quando queres adicionar uma nova propriedade, podes escolher uma da lista da combo box, ou podes inserir um nome de propriedade que desejes. Se o teu projecto usa algumas propriedades customizadas, e se queres que essas propriedades apaream na lista da combo box (para evitar erros de ortografia quando inserires o nome da propriedade), podes criar uma lista das tuas propriedades customizadas usando tsvn:userfileproperties e tsvn:userdirproperties. Aplica essas propriedades a uma pasta. Quando tu fores editar as propriedades de qualquer item filho, as tuas propriedades costumizadas iro aparecer na lista de nomes de propriedades pr-definidas. Algumas propriedades tsvn: requerem um valor true/false. O TortoiseSVN tambm entende yes como sinnimo para true e no como sinonimo para false. O TortoiseSVN pode-se integrar com algumas ferramentas de controlo de problemas. Isto usa as propriedades de projecto que comeam com bugtraq:. Consulta Seco 4.28, Integrao com Sistemas de controlo de problemas/Gestores de Problemas para mais informao. Podes ainda integrar com alguns navegadores de repositrio web-based, usando as propriedades de projecto que comeam por webviewer:. Consulta Seco 4.29, Integrao com visualizadores de repositrio Web-based para mais informao.

Fixar propriedades de projecto em pastas


Essas propriedades de projecto especiais devem ser fixadas em pastas para o sistema funcionar. Quando submetes um ficheiro ou pasta, as propriedades so lidas dessa pasta. Se as propriedades no so encontradas a, o TortoiseSVN ir procurar na direco ascendente atravs da rvore de ficheiros de modo s encontrar, at encontrar uma pasta no versionada, ou a raiz da rvore (e.g. C:\).Se tens a certeza que cada utilizador s SVN exporta a partir e.g. trunk/ e no de alguma subpasta, ento suficiente fixar as propriedades no trunk/. Se no tens a certeza, devers fixar as propriedades recursivamente em cada subpasta. A colocao mais profunda da propriedade na hierarquia do projecto sobrepemse s colocaes em nveis superiores (mais perto do trunk/). For project properties only you can use the Recursive checkbox to set the property to all sub-folders in the hierarchy, without also setting it on all files. When you add new sub-folders using TortoiseSVN, any project properties present in the parent folder will automatically be added to the new child folder too.

Cuidado
Apesar de as propriedades de projecto do TortoiseSVN serem extremamente teis, elas s funcionam com o TortoiseSVN, e algumas so funcionaram com verses recentes. Se as pessoas que trabalham no teu projecto usam uma variedade de clientes Subversion, ou possivelmente tm verses antigas do TortoiseSVN, poders querer usar ganchos de

97

Guia de Uso Dirio

repositrio para impor as polticas de projecto. Propriedades de projecto s podem ajudar a implementar uma poltica, nuca podem imp-la.

4.18. Itens Externos


Por vezes til construir uma cpia de trabalho a partir de vrios SVN exportar diferentes. Por exemplo, poders querer que diferentes ficheiros ou subpastas venham de diferentes localizaes do repositrio, ou talvez, at de diferentes repositrios. Se queres que cada utilizador tenha a mesma disposio, podes definir as propriedades svn:externals para puxar o recurso especificado para a localizao onde ser necessrio.

4.18.1. Pastas Externas


Digamos que SVN exportas uma cpia de trabalho do /project1 para D:\dev\project1. Seleccionas a pasta D:\dev\project1, clicas com o boto direito e escolhes Menu do Windows Propriedades, a partir do menu de contexto. Aparecer a caixa de dilogo Propriedades. Em seguida vai aba Subversion, e a podes fixar as propriedades. Clica Adicionar.... Selecciona a propriedade svn:externals a partir da combobox e, escreve na caixa de edio o URL do repositrio, no formato url folder, ou se quiseres especificar uma reviso particular, -rREV url folder. Podes adicionar mltiplos projectos externos, 1 por linha.Supem que fixaste essas propriedades no D:\dev \project1:

http://sounds.red-bean.com/repos sounds http://graphics.red-bean.com/repos/fast%20graphics "quick graphs" -r21 http://svn.red-bean.com/repos/skin-maker skins/toolkit Agora clica Fixar e submete as tuas alteraes. Quando tu (ou outro utilizador qualquer) actualizar a cpia de trabalho, o Subversion ir criar uma subpasta D:\dev\project1\sounds e SVN exporta o projecto sounds, outra subpasta D:\dev\project1\quick_graphs, contendo o projecto graphics, e finalmente uma subpasta encadeada D:\dev\project1\skins\toolkit, contendo a reviso 21 do projecto skin-maker. Os URLs tm de ser convenientemente escapados, ou no iro funcionar, e.g. devers substituir cada espao com %20, como mostrado no segundo exemplo, em cima. Se queres que o caminho local inclua espaos ou outro caracter especial, tens rode-lo em aspas, ou usar o caracter \ (barra invertida), como um caracter de escape, ao estilo da linha de comandos do linux, precedendo cada caracter especial. claro que isto tambm significa que tens de necessriamente usar / (barra), como delimitador de caminho. De notar que este comportamento novo no Subversion 1.6 e, no funcionar com clientes mais antigos.

Usa nmeros de reviso explcitos


Devers considerar seriamente, o uso de nmeros de reviso explcitos em todos as tuas definies externas, como descrito acima. Fazendo-o significa que, ters de decidir a altura de puxar uma diferente fotografia da informao externa, e exactamente qual a fotografia a puxar. Aparte do senso comum de no ser supreendido por alteraes de repositrios de terceiros, que no possas controlar, usar nmeros de revises explicitos, tambm significa que se reverters a tua cpia de trabalho para uma reviso anterior, as tuas definies externas iro tambm reverter para o estado que tinham nessa reviso prvia. O que por sua vez significa que, as cpias de trabalho externas sero actualizadas para corresponder o estado que elas tinham, quando o teu repositrio estava nessa reviso prvia. Para projectos de software isto pode ser a diferena entre uma construo(build) falhada ou com sucesso, de uma fotografia antiga da tua complexa base de cdigo.

98

Guia de Uso Dirio

Definies antigas do svn:externals


O formato mostrado aqui foi introduzido no Subversion 1.5. Podes tambm ver o formato antigo, que tem a mesma informao, numa pasta diferente. O novo formato prefervel, j que suporta vrias e teis funcionalidades descritas abaixo, mas no ir funcionar em clientes antigos. As diferenas so mostradas em Subversion Book [http://svnbook.redbean.com/en/1.5/svn.advanced.externals.html]. If the external project is in the same repository, any changes you make there there will be included in the commit list when you commit your main project. Se o projecto externo est num repositrio diferente, qualquer alterao que fizeres no mesmo, ser notificada quando submeteres o teu projecto principal, no entanto, ters de submeter essas alteraes externas separadamente. Se usares URLs absolutos nas definies svn:externals, e tiveres de transferir a tua cpia de trabalho (i.e., se o URL do teu repositrio se alterar), ento os teus externos no se alteraro e podero no mais funcionar. Para evitar tais problemas, o cliente Subversion, na verso 1.5 ou superior, suporta URLs externos relativos. So suportados quatro diferentes mtodos de especificar um URL relativo . Nos exemplos seguintes assume-se que temos dois repositrios: um em http://example.com/svn/ repos-1 e outro em http://example.com/svn/repos-2. Temos um SVN exportado do http://example.com/svn/repos-1/project/trunk em C:\Working e a propriedade svn:externals est colocada no trunk. Relativo pasta pai Esses URLs comeam sempre com a cadeia de caracteres ../, por exemplo:

../../widgets/foo

common/foo-widget

. Isto ir extrair http://example.com/svn/repos-1/widgets/foo em C:\Working \common\foo-widget. De notar que, o URL relativo ao URL da pasta com a propriedade svn:externals e no, pasta onde o externo est escrito no disco. Relativo ao repositrio raiz Esses URLs comeam sempre com a cadeia de caracteres ^/, por exemplo:

^/widgets/foo

common/foo-widget

. Isto ir extrair http://example.com/svn/repos-1/widgets/foo em C:\Working \common\foo-widget. Poders facilmente referir-te a outros repositrios com o mesmo SVNParentPath (uma pasta comum contendo vrios repositrios). Por exemplo:

^/../repos-2/hammers/claw

common/claw-hammer

Isto ir extrair http://example.com/svn/repos-2/hammers/claw em C:\Working \common\claw-hammer. Relativo ao esquema URLs a comear com a cadeia de caracteres // copiam s a parte do esquema do URL. Isto til quando a mesma mquina necessita de ser acedida com esquemas diferentes, dependendo da

99

Guia de Uso Dirio

localizao na rede; e.g. clientes com acesso de intranet usam http://, enquanto clientes externos usam svn+ssh://. Por exemplo:

//example.com/svn/repos-1/widgets/foo

common/foo-widget

. Ser extraido como http://example.com/svn/repos-1/widgets/foo ou svn +ssh://example.com/svn/repos-1/widgets/foo, dependendo do mtodo usado para SVN exportar o C:\Working. Relativo ao nome do servidor URLs a comear com a cadeia de caracteres /, copiam a parte do URL do esquema e do nome da mquina, por exemplo:

/svn/repos-1/widgets/foo

common/foo-widget

. Extrair http://example.com/svn/repos-1/widgets/foo em C:\Working \common\foo-widget. Mas se tu SVN exportares a tua cpia de trabalho a partir de outro servidor em svn+ssh://another.mirror.net/svn/repos-1/project1/ trunk, ento a referncia externa ir extrair svn+ssh://another.mirror.net/svn/ repos-1/widgets/foo. Podes tambm especificar uma reviso cavilha depois do URL, se necessrio; e.g. http:// sounds.red-bean.com/repos@19. Se necessitas de mais informao em como o TortoiseSVN lida com Propriedades, consulta Seco 4.17, Configuraes de Projecto. Para saberes mais sobre os diferentes mtodos de aceder a subprojectos comuns, consulta Seco B.6, Incluir um subprojecto comum.

4.18.2. Ficheiros Externos


A partir do Subversion 1.6 podes adicionar um ficheiro nico externo, tua cpia de trabalho, usando a mesma sintaxe que as pastas. No entanto, existem algumas restries. O caminho para o ficheiro externo dever colocar o ficheiro numa pasta versionada j existente. No geral faz mais sentido colocar o ficheiro directamente na pasta que tem colocado svn:externals, mas poder ser numa subpasta versionada, se necessrio. Por contraste, pastas externas iro automticamente criar qualquer pasta intermdia no versionada, se necessrio. O URL para um ficheiro externo dever estar no mesmo repositrio que o URL em que o ficheiro exteno ser inserido; ficheiros externos inter-repositrios no so suportados. Um ficheiro externo comporta-se apenas como qualquer outro ficheiro versionado em vrios aspectos, mas eles no podem ser movidos ou apagados, usando os comandos normais; a propriedade svn:externals ter de ser ento modificada.

Supporte incompleto de ficheiros externos em Subversion 1.6


No Subversion 1.6 no possvel remover um ficheiro externo da tua cpia de trabalho, uma vez que o tenhas adicionado, mesmo que removas tambm a propriedade svn:externals. Ters de SVN exportar uma nova cpia de trabalho para remover o ficheiro.

4.19. Ramificando/Etiquetando

100

Guia de Uso Dirio

Uma das funcionalidades dos systemas de controlo de verses, a sua capacidade para isolar alteraes em linhas de desenvolvimento separadas. Esta linha conhecida como um ramo. Ramos so com frequncia usados para experimentar novas funcionalidades, sem perturbar a linha principal de desenvolvimento com erros de compilador e bugs. Assim que a nova funcionalidade est suficientemente estvel, ento o ramo de desenvolvimento integrado de volta para o ramo principal (trunk). Outra funcionalidade dos sistemas de controlo de vcerses, a sua capacidade para marcar revises particulares (e.g. uma verso de entrega), para que possas a qualquer altura recrear uma certa construo ou ambiente. Este processo conhecido como etiquetagem. O Subversion no tem comandos especiais para ramificar ou etiquetar, mas em alternativa usa a chamada cpia barata. Cpias baratas so semelhantes aos hard links no linux, o que significa que, em vez de efectuar uma cpia completa no repositrio, uma ligao interna criada apontando para a rvore/reviso especfica. Como resultado ramos e etiquetas so rpidas a criar e no ocupam praticamente nenhum espao extra no repositrio.

4.19.1. Criando um Ramo ou Etiqueta


Se importaste o teu projecto com a estrutura de pastas recomendada, criar uma verso ramo ou etiqueta muito simples:

Figura 4.34. A Caixa de Dilogo de Ramificar/Etiquetar


Selecciona na tua cpia de trabalho a pasta para que queres copiar o ramo ou etiqueta, ento selecciona o comando TortoiseSVN Ramificar/Etiquetar....

101

Guia de Uso Dirio

O URL de destino, por defeito, para o novo ramo ser o URL fonte no qual a tua cpia de trabalho est baseada. Necessitars de editar esse URL de modo a obteres o novo caminho para o teu ramo/etiqueta. Sendo assim, em vez de

http://svn.collab.net/repos/ProjectName/trunk poders querer algo como

http://svn.collab.net/repos/ProjectName/tags/Release_1.10 Se no te recordas da conveno de nomes que usaste na ltima vez, clica no boto direita para abrir o navegador de repositrio, para que possas visualizar a estrutura do repositrio. Agora tens de seleccionar a fonte da cpia. Aqui tens trs opes: A reviso HEAD do repositrio O novo ramo copiado directamente, no repositrio, a partir da reviso HEAD. No necessrio transferir nenhuns dados da tua cpia de trabalho e, o ramo criado muito rapidamente. Reviso especfica no repositrio O novo ramo copiado, directamente no repositrio, mas podes escolher uma reviso anterior. Isto til se te esqueceste de fazer uma etiqueta quando fizeste uma entrega do teu projecto na semana anterior. Se no te lembras do nmero da reviso, clica no boto direita para mostrar o registo de verses, e selecciona uma reviso a partir da. Mais uma vez nenhuns dados so transferidos da tua cpia de trabalho, e o ramo criado muito rapidamente. Cpia de trabalho O novo ramo uma cpia idntica da tua cpia de trabalho local. Se actualizaste alguns ficheiros numa verso anterior da tua CT, ou se efectuaste alteraes locais. Isso exactamente o que vai na cpia. Naturalmente este tipo de etiquetas complexas pode envolver transferncias de dados da tua CT para o repositrio, se este no j l existir. Se queres que a tua cpia de trabalho seja automaticamente trocada para o ramo recentemente criado, usa a caixa de verificao Trocar a cpia de trabalho para o novo ramo/etiqueta. Mas se o fizeres, tem primeiro a certeza de que a tua cpia de trabalho no contm alteraes. Se tiver, essas alteraes sero fundidas na CT do ramo, quando fizeres a troca. Prime OK para submeter a nova cpia para o repositrio. No te esqueas de introduzir uma mensagem de registo. De notar que a cpia criada dentro do repositorio. Ter em ateno que, a no ser que troques a tua cpia de trabalho para o ramo recentemente criado, a criao de um ramo ou etiqueta no afecta a tua cpia de trabalho. Mesmo que cries o ramo a partir da tua cpia de trabalho, essas alteraes so submetidas para o novo ramo, e no para o trunk, no entanto a tua CT ser ainda marcada como modificada em relao ao trunk.

4.19.2. SVN Exportar ou Trocar...


...essa no (realmente) a questo. Enquanto um SVN exportar descarrega tudo a partir de um ramo do repositrio para a tua cpia de trabalho, TortoiseSVN Trocar... apenas transfere os dados alterados, para a tua cpia de trabalho. ptimo para a carga na tua rede e bom para a tua pacincia. :-) Para poderes trabalhar com o teu ramo ou etiqueta criado de fresco tens vrias opes: TortoiseSVN SVN Exportar para criares uma verso exportada de fresco numa pasta vazia. Podes SVN exportar para qualquer localizao no teu disco e, podes criar quantas cpias de trabalho, a partir do teu repositrio, que desejes.

102

Guia de Uso Dirio

Trocar a tua cpia de trabalho corrente para a cpia recentemente criada no repositrio. Mais uma vez selecciona a pasta de topo do teu projecto e usa TortoiseSVN Trocar... a partir do menu de contexto. Na prxima caixa de dilogo, insere o URL do ramo que acabaste de criar. Selecciona a boto de rdio Reviso Head e clica no OK. A tua cpia de trabalho trocada para o novo ramo/etiqueta. O Trocar funciona tal como Actualizar, na forma em que nunca descarta as tuas alteraes locais. Quaisquer alteraes que tenhas feito na tua cpia de trabalho, que nunca tenhas submetido, sero integradas quando efectuares a troca. Se no quiseres que isto acontea, devers submeter as alteraes antes da troca ou reverter a tua cpia de trabalho para uma verso j submetida (HEAD tipicamente). Se queres trabalhar no trunk e no ramo, mas no queres o custo de uma verso SVN exportada de fresco, poders usar o Explorador do Windows para efectuar a cpia do teu trunk exportado para outra pasta e, TortoiseSVN Trocar... essa cpia para o teu novo ramo.

Figura 4.35. A Caixa de Dilogo Trocar


Apesar de o prprio Subversion no fazer distino entre etiquetas e ramos, a maneira como eles tipicamente so usados difere um pouco. Tags are typically used to create a static snapshot of the project at a particular stage. As such they not normally used for development - that's what branches are for, which is the reason we recommended the /trunk /branches /tags repository structure in the first place. Working on a tag revision is not a good idea, but because your local files are not write protected there is nothing to stop you doing this by mistake. However, if you try to commit to a path in the repository which contains /tags/, TortoiseSVN will warn you. Poder ser que necessites de efectuar alteraes posteriores numa entrega que tenha sido j etiquetada. A maneira correcta para lidar com isto criar um novo ramo a partir da etiqueta e submeter o mesmo. Efectua as tuas Alteraes nesse ramo e ento cria uma nova etiqueta a partir deste ramo, e.g. Version_1.0.1. Se modificares a cpia de trabalho criada a partir de um ramo, e submeteres, ento todas as alteraes iro para o novo ramo e no para o trunk. S as modificaes so armazenadas, o resto permanece como cpia barata.

4.20. Integrar

103

Guia de Uso Dirio

Quando ramos so utilizados para manter linhas de desenvolvimento separadas, em alguma altura tu querers integrar as alteraes, que efectuaste num ramo, de volta para o trunk, ou vice-versa. importante perceber como funciona no Subversion o ramificar e integrar antes de comeares a uslos, pelo que se poder tornar algo complexo. altamente recomendado que leias o captulo Branching and Merging [http://svnbook.red-bean.com/en/1.5/svn.branchmerge.html] no livro do Subversion, que te dar uma descrio completa, e com muitos exemplos, de como usado. O prximo ponto a anotar que integrar processa-se sempre na tua cpia de trabalho. Se queres integrar alteraes num ramo, tens de ter uma cpia de trabalho nesse ramo e invocar o assistente de integrao a partir dessa cpa de trabalho, usando TortoiseSVN Integrar.... De modo geral uma boa ideia executar uma integrao numa cpia de trabalho no modificada. Se tens outras alteraes na tua CT, submete-as primeiro. Se a integrao no correr como esperavas, poders ter de reverte-la, e o comando Reverter ir descartar todas as alteraes incluindo qualquer uma que tenhas feito antes da integrao. Existem trs casos de utilizao comuns para integrar, que so lidados de maneira ligeiramente diferente, como descrito abaixo. A primeira pgina do assistente de integrao questiona-te a selecciona o mtodo que precisas. Integrar um intervalo de revises Este mtodo cobre o caso em que criaste uma ou mais revises num ramo ( ou no trunk) e queres portar essas alteraes para um ramo diferente. O que ests a pedir ao Subversion para fazer o seguinte: Calcula as alteraes necessrias para ir [DA] reviso 1 do ramo A [AT] reviso 7 do ramo A, e aplica essas alteraes minha cpia de trabalho (do trunk ou ramo B). Reintegrar um ramo Este mtodo cobre o caso em que criaste um ramo de funcionalidade, como descrito no livro do Subversion. Todas as alteraes do trunk foram portadas para o ramo de funcionalidade, semana a semana, e agora que a funcionalidade est concluda, desejas integr-la de volta no trunk. Porque tens mantido o ramo de funcionalidade sincronizado com o trunk, as ltimas verses do ramo e trunk sero absolutamente idnticas excepo das alteraes do teu ramo. Este um caso especial da integrao de rvore, descrita abaixo, e apenas requer o URL de origem para integrar do (usualmente) teu ramo de desenvolvimento. Ele usa as funcionalidades de rastreamento-de-integrao do Subversion, para calcular o intervalo correcto de revises a usar e executar verificaes adicionais, de modo a garantir que o ramo foi totalmente actualizado com as alteraes do trunk. Isto garante que tu, por acidente, no desfaas o trabalho que outros tenham submetido para o trunk desde as tuas ltimas alteraes sincronizadas. Aps a integrao, todo o ramo de desenvolvimento foi completamente integrado de volta para a principal linha de desenvolvimento. O ramo agora redundante e poder ser removido. Aps teres executado uma reintegrao de um ramo, no devers continuar a us-lo para desenvolvimento. A razo para tal a seguinte; se tentares mais tarde re-sincronizar o teu ramo j existente, o seguidor de integrao ver a tua reintegrao como uma alterao do trunk que no foi ainda integrada no ramo, e ir tentar integrar a integrao ramo-para-trunk de volta para o ramo! A soluo para isto criar um novo ramo a partir do trunk para continuar a prxima fase do teu desenvolvimento. Integrar duas rvores diferentes Este um caso mais geral do mtodo de reintegrao. O que ests a pedir ao Subversion para fazer : Calcula as alteraes necessrias para ir [DA] reviso head do trunk [PARA] a reviso head do ramo, e aplica essas alteraes minha cpia de trabalho (do trunk).. O resultado lquido ser que o trunk fica agora exactamente como o ramo.

104

Guia de Uso Dirio

Se o teu servidor/repositrio no suporta o rastreamento-de-integrao ento esta a nica maneira para integrar um ramo de volta para o trunk. Outro caso ocorre quando tu ests a usar ramos de vendedores e, necessitas de integrar as alteraes a seguir a um novo gotejar do vendedor no teu cdigo do trunk. Para mais informao, consulta o capitulo vendor branches [http://svnbook.redbean.com/en/1.5/svn.advanced.vendorbr.html] no livro do Subversion.

4.20.1. A Integrar Um Intervalo de Revises

Figura 4.36. O Assistente de Integrao - Seleciona o Intervalo de Revises


No campo De: introduz o URL completo da pasta, do ramo ou etiqueta que contm as alteraes que queres portar para a tua cpia de trabalho. Podes tambm clicar ... para navegar no repositrio e encontrar o ramo desejado. Se j integraste anteriormente deste ramo, usa apenas a lista drop down que mostra o histrico dos URLs previamente utilizados. No campo Intervalo de revises a integrar introduz a lista de revises que desejas integrar. poder ser uma nica reviso, uma lista de revises especficas separadas por virgulas, ou um intervalo de revises separadas por um hfen, ou uma qualquer combinao destes.

Importante
Existe uma diferena importante na maneira como o intervalo de revises especificado no TortoiseSVN, comparado com o cliente de linha de comando. A maneira mais fcil para o visualizar pensar numa vedao com postes e painis de vedao.

105

Guia de Uso Dirio

Com o cliente de linha de comando, tu especificas as alteraes a integrar usando duas revises postes de vedao, que especificam os pontos antes e depois. Com o TortoiseSVN tu especificas uma lista-de-alteraes para integrar utilizando paineis de vedao. A razo para isto torna-se clara quando usas a caixa de dilogo de registo para especificar as revises a integrar, onde cada reviso aparece como uma lista-de-alteraes. Se integrares revises em pedaos, o mtodo descrito no livro do subversion mostra-te a integrar 100-200 desta vez e 200-300 da prxima. Com o TortoiseSVN terias de integrar 100-200 desta vez e 201-300 da prxima. Esta diferena gerou muita discusso acalorada nas listas de correio. Ns reconhecemos que existe uma diferena para o cliente da linha de comandos, mas cremos que para a maioria dos utilizadores do GUI mais fcil de compreender o mtodo que implementmos. A maneira mais fcil para seleccionar o intervalo de revises que precisas clicar no Mostrar registo, j que este ir listar as alteraes mais recentes com os teus comentrios de registo. Se queres integrar as alteraes a partir de uma nica reviso, selecciona apenas essa reviso. Se queres integrar as alteraes de vrias revises ento, selecciona esse intervalo (usando o modificador usual Shift). Clica no OK e o nmeros da lista de revises a integrar sero preenchidas por ti. Se queres remover alteraes integradas, da tua cpia de trabalho, para reverter uma alterao que j foi submetida, selecciona as revises a reverter e tem a certeza que a caixa de verificao Reverter integrao est verificada. Se j integraste algumas alteraes deste ramo, espera-se que tenhas introduzido, uma nota da ltima reviso integrada, na mensagem de registo quando submeteste a alterao. Nesse caso podes usar o Mostrar Registo na cpia de trabalho para seguir essa mensagem de registo. Relembrando que estamos a pensar nas revises como listas-de-alteraes, devers usar a reviso depois do ponto de chegada da ltima integrao, como ponto de partida para esta integrao. Por exemplo, se integraste as revises de 37 a 39 da ltima vez, ento o ponto de partida para esta integrao dever ser a reviso 40. Se ests a usar as funcionalidades de rastreamento de integrao, do Subversion, no precisas de te lembrares quais as revises que j foram integradas - o Subversion ir recordar-se disso por ti. Se deixas o intervalo de revises em branco, todas as revises que no foram ainda integradas sero includas. Consulta Seco 4.20.6, Rastreamento de Integrao para saberes mais. Se podem estar outras pessoas a submeter alteraes ento tem cuidado no uso da reviso HEAD. Poder no se referir reviso que ests a pensar se algum efectuou uma submisso aps a tua ltima actualizao. Clica Seguinte e segue para Seco 4.20.4, Opes de Integrao

4.20.2. Reintegrar um ramo

106

Guia de Uso Dirio

Figura 4.37. O Assistente de Integrao - Integrao para Reintegrar


Para integrar um ramo de funcionalidade de volta para o trunk, devers arrancar o assistente de integrao de dentro da cpia de trabalho do trunk. No campo Do URL: introduz o URL completo da pasta do ramo que queres integrar de volta. Podes tambm clicar ... para navegar o repositrio. Existem algumas condies que se aplicam a uma integrao de reintegrao. Primeiramente, o servidor dever suportar o rastreamento de integrao. A cpia de trabalho dever ser de profundidade infinita (sem exportaes SVN dispersas), e no dever ter nenhumas alteraes, itens trocados ou itens que foram actualizadas para revises diferentes da HEAD. Todas as alteraes para o trunk feitas durante o desenvolvimento do ramo, devero ter sido j integradas transversalmente para o ramo (ou marcadas como tendo sido feitas). O intervalo de revises a integrar ser ento calculado automaticamente.

4.20.3. A Integrar Duas rvores Diferentes

107

Guia de Uso Dirio

Figura 4.38. O Assistente de Integrao - Integrao de rvores


Se ests a usar este mtodo para integrar um ramo de funcionalidade de volta para o trunk, necessitas de arrancar o assistente de integrao de dentro da cpia de trabalho do trunk. No campo De: introduz o URL completo da pasta trunk. Isto pode soar errado, mas lembra-te que o trunk o ponto de partida para o qual queres adicionar as alteraes do ramo. Podes tambm clicar ... para navegar o repositrio. No campo Para: introduz o URL completo da pasta do ramo de desenvolvimento. Em ambos os campos Da Reviso e Para Reviso, introduz o nmero da ltima reviso em que as duas rvores estiveram sincronizadas. Se tens a certeza que ningum est a fazer submisses, podes usar a reviso HEAD em ambos os casos. Se existe uma hipotese de algum ter feito uma submisso desde essa sincronizao, deves usar nmeros de revises especficas para evitar perder submisses mais recentes. Podes tambm usar o Mostrar Registo para seleccionar a reviso.

4.20.4. Opes de Integrao


Esta pgina do assistente deixa-te especificar opes avanadas antes de comear o processo de integrao. Na maior parte do tempo tu podes apenas usar as opes por defeito. Tu podes especificar a profundidade a usar na integrao, i.e. at que ponto dever a integrao penetrar na tua cpia de trabalho. Os termos de profundidade usados esto descritos em Seco 4.3.1, Profundidade do Checkout. A profundidade por defeito a Cpia de trabalho, e quase sempre o que precisas. Na maior parte do tempo tu queres que a integrao tome conta do histrico do ficheiro, para as que alteraes relativas a um antepassado comum sejam integradas. Por vezes tu querers integrar ficheiros que so talvez relacionados, mas no no repositrio. Por exemplo tu podes ter verses importadas 1 e 2 de

108

Guia de Uso Dirio

uma biblioteca de terceiros, em duas pastas separadas. Apesar de eles estarem logicamente relacionadas, o Subversion no tem conhecimento disto porque o que apenas v so tarballs que importaste. Se tu tentares integrar as diferenas entre essas duas rvores irs ver uma remoo completa seguida por uma adio completa. Para levar o Subversion a usar s as diferenas baseadas no caminho, em vez das diferenas baseadas na histria, verifica a caixa Ignorar ascendncia. Consultar mais sobre este tpico no livro do Subversion, Noticing or Ignoring Ancestry [http://svnbook.red-bean.com/en/1.5/ svn.branchmerge.advanced.html#svn.branchmerge.advanced.ancestry] Tu podes especificar a forma como os fins-de-linha e espaos-em-branco so lidados. Essas opes so descritas em Seco 4.10.2, Opes de Fim-de-Linha e Espaos-Brancos. O comportamento por defeito tratar todos os espaos-em-branco e os fins-de-linha como alteraes a serem integradas. Se ests a usar o rastreamento de integrao, e queres marcar a reviso como tendo sido integrada, sem actualmente efectuar essa integrao aqui, verifica a caixa de verificao S regista a integrao. Existem duas razes possveis para que tu queiras fazer isto. Poder ser que a integrao seja muito complicada para os algoritmos de integrao, pelo que inseres as alteraes manualmente, e ento marcas como integrada, para que o rastreador de integrao conhea esse facto. Ou queiras evitar que uma reviso particular seja integrada. Considerando-a como j integrada, ir evitar que a integrao ocorra com clientes sensveis ao seguimento. Now everything is set up, all you have to do is click on the Merge button. If you want to preview the results Test Merge performs the merge operation, but does not modify the working copy at all. It shows you a list of the files that will be changed by a real merge, and notes those areas where conflicts will occur. A caixa de dilogo progresso de integrao, mostra cada estgio da integrao com os intervalos das revises envolvidas. Isto pode indicar uma reviso a mais do que estavas espera. Por exemplo se tu pedes para integrar a reviso 123, a caixa de dilogo de progresso ir reportar Integrar revises 122 at 123. Para compreender isto tu precisas de te recordar que a Integrao est intimamente relacionada com a Comparao. O processo de integrao funciona atravs da gerao de listas de diferenas entre dois pontos no repositrio, e ento aplicar essas diferenas tua cpia de trabalho. A caixa de dilogo de progresso simplesmente mostra o ponto de inicio e fim para a comparao.

4.20.5. Rever os Resultados de Integrao


A integrao est agora completa. uma boa ideia dar uma vista de olhos na integrao e ver se est como o esperado. Integrar normalmente algo complicado. Os conflitos surgem com frequncia se o ramo divergiu bastante do trunk. Para clientes e servidores Subversion, anteriores verso 1.5, nenhuma informao sobre integrao armazenada e as revises tem de ser seguidas manualmente. Quando tiveres testado as alteraes e fores ento submeter esta reviso, a tua mensagem de registo dever incluir sempre os nmeros das revises que foram portadas na integrao. Se queres aplicar posteriormente outra integrao, necessitars de conhecer o que j integraste, j que no queres portar uma alterao mais do que uma vez. Para mais informao, consulta Best Practices for Merging [http://svnbook.red-bean.com/en/1.4/ svn.branchmerge.copychanges.html#svn.branchmerge.copychanges.bestprac] no livro do Subversion. Se o teu servidor e todos os clientes esto a correr o Subversion 1.5, ou verso superior, a funcionalidade de rastreamento de integrao ir registar as revises integradas e evitar que uma reviso seja integrada mais que uma vez. Isto torna a tua vida muito mais simples, j que podes simplesmente integrar o intervalo completo de revises de cada vez, e saber que s as novas revises sero realmente integradas. A gesto de ramos importante. Se queres manter este ramo actualizado com o trunk devers ter o cuidado de integrar com frequncia, para que o ramo e o trunk no divirjam muito. claro que devers evitar ainda a integrao repetida de alteraes, como descrito acima.

Dica
Se acabaste de integrar um ramo de funcionalidade de volta para o trunk, este agora contm todo o cdigo da nova funcionalidade, tornando-se o ramo obsoleto. Podes ento removelo do repositrio, se for requerido.

109

Guia de Uso Dirio

Importante
O Subversion no pode integrar um ficheiro com uma pasta e vice-versa - s pastas com pastas e ficheiros com ficheiros. Se clicas num ficheiro e abres a caixa de dilogo de integrao, ento tens de dar o caminho para um ficheiro nessa caixa de dilogo. Se seleccionas uma pasta e abrires a caixa de dilogo, ento ters de especificar um URL de uma pasta para a integrao.

4.20.6. Rastreamento de Integrao


O Subversion 1.5 introduz facilidades para rastreamento da integrao. Quando tu integras alteraes de uma rvore para outra, os nmeros de revises integradas so armazenadas e esta informao pode ser usada para vrios propsitos diferentes. Podes evitar o perigo de integrar a mesma reviso duas vezes (problema da integrao repetida). De cada vez que uma reviso for marcada como tendo sido integrada, integraes futuras, que incluam essa reviso no seu intervalo, iro ignor-la. Quando integras um ramo de volta para o trunk, a caixa de dilogo de registo pode-te mostrar as submisses no ramo como parte do registo do trunk, dando-te melhor rastreamento das alteraes. Quando mostras a caixa de dilogo de registo de dentro da caixa de dilogo de integrao, as revises j integradas so mostradas a cinzento. Quando mostrada a informao de responsabilidade para um ficheiro, podes ento escolher mostrar o autor original das revises integradas, em vez de, a pessoa que efectuou a integrao. Tu podes marcar revises como no integrar incluindo-as na lista de revises integradas sem realmente efectuar a integrao. A informao de rastreamento de integrao armazenada na propriedade svn:mergeinfo pelo cliente, quando executa uma integrao. Quando a integrao submetida, o servidor armazena essa informao numa base de dados, e quando tu requisitas a informao de integrao, registo ou responsabilidade, o servidor possa responder de acordo. Para o sistema funcionar correctamente deves assegurar que o servidor, repositrio e todos os clientes estejam actualizados. Clientes antigos no iro armazenar a propriedade svn:mergeinfo e servidores antigos no iro fornecer essa mesma informao, requisitada pelos novos clientes. Sabe mais sobre o rastreamento de integrao atravs do Subversion em Merge tracking documentation [http://subversion.tigris.org/merge-tracking/index.html].

4.20.7. Lidando com Conflitos durante a Integrao


A integrao no corre sempre com suavidade. Por vezes existe um conflito, e se ests a integrar mltiplos intervalos, geralmente irs querer resolver o conflito antes de comeares a integrar o prximo intervalo. O TortoiseSVN ajuda-te atravs deste processo, mostrando-te a caixa de dilogo conflitos de integrao.

110

Guia de Uso Dirio

Figura 4.39. A Caixa de Dilogo Conflitos de Integrao


Quando o conflito ocorre durante uma integrao, tens trs maneiras de lidar com ele. 1. You may decide that your local changes are much more important, so you want to discard the version from the repository and keep your local version. Or you might discard your local changes in favour of the repository version. Either way, no attempt is made to merge the changes - you choose one or the other. 2. Normalmente querers observar os conflitos e resolv-los. Nesse caso, escolhe o Editar Conflito que arrancar a ferramenta de integrao. Quando estiveres satisfeito com o resultado, clica Resolvido. 3. A ltima opo adiar a resoluo e continuar com a integrao. Tu podes escolher fazer isso para o ficheiro correntemente em conflito, ou para todos os ficheiros no resto da integrao. No entanto, se existirem mais alteraes nesse ficheiro, no ser possvel completar a integrao. Se no quiseres usar este processo iterativo, existe uma caixa de verificao na caixa de dilogo de progresso de integrao Integrar no-iteractivamente. Se esta est verificada e a integrao pode resultar num conflito, o ficheiro marcado como em conflito e a integrao continua. Ters de resolver os conflitos aps a concluso da totalidade da integrao. Se esta no est verificada, ento antes do ficheiro ficar marcado como em conflito, ters a oportunidade par resolver o mesmo. Isto tem a vantagem de, se um ficheiro sofre mltiplas integraes (mltiplas revises aplicam uma alterao a esse ficheiro), integraes subsequente iro ter sucesso, dependendo de que linhas so afectadas. Mas, est claro, no te podes afastar para beber um caf, enquanto a integrao est a decorrer ;)

4.20.8. Integrar um Ramo Completo


Se queres integrar todas as alteraes de uma ramo de funcionalidade de volta para o trunk, ento podes usar o TortoiseSVN Reintegrar integrao... a partir do menu de contexto extendido (mantm permido a tecla Shift enquanto clicas com o boto direito no ficheiro).

111

Guia de Uso Dirio

Figura 4.40. Caixa de Dilogo de reintegrao de Integrao


Esta caixa de dilogo muito simples. Tudo o que tens de fazer configurar as opes para a integrao, como descrito em Seco 4.20.4, Opes de Integrao. O resto feito automaticamente pelo TortoiseSVN usando o rastreamento de integrao.

4.20.9. Manuteno do Ramo de Funcionalidade


Quando desenvolves uma nova funcionalidade num ramo separado, uma boa ideia definir uma poltica para reintegrao quando a funcionalidade estiver completa. Se outro trabalho est a decorrer no trunk ao mesmo tempo, poders descobrir que as diferenas tornar-se-o significativas ao longo do tempo, e integrar de volta pode-se tornar um pesadelo. Se a funcionalidade relativamente simples e o desenvolvimento no ser muito longo, ento poders adoptar uma abordagem simples, que manter o ramo inteiramente separado at a funcionalidade estar completa, ento integras as alteraes do ramo de volta para o trunk. No assistente de integrao isto dever ser um simples Integrar um intervalo de revises, com o intervalo de revises sendo o intervalo completo de revises do ramo. Se a funcionalidade ir demorar mais tempo e tu precisas de ter em conta todas as alteraes no trunk, ento tu necessitas de manter o ramo sincronizado. Isto significa simplesmente que periodicamente integras as alteraes do trunk no ramo, para que o ramo contenha todas as alteraes do trunk mais a nova funcionalidade. O processo de sincronizao usa Integrar um intervalo de revises. Quando a funcionalidade estiver completa, ento podes integr-la de volta para o trunk usando Reintegrar um ramo or Integrar duas rvores diferentes.

4.21. A bloquear
Geralmente o Subversion funciona melhor sem bloqueios usando os mtodos Copiar-ModificarIntegrar descritos anteriormente em Seco 2.2.3, A soluo Copiar-Modificar-Integrar. No entanto existem algumas circunstncias em que poders necessitar de implementar alguma tipo de poltica de bloqueio. Se ests a usar ficheiros no integrveis, como por exemplo, ficheiros de grficos. Se duas pessoas alteram o mesmo ficheiro, e no possvel a integrao, s um dos dois ir perder as suas alteraes. A tua empresa sempre usou no passado um sistema de controlo de revises bloqueante, e houve uma deciso da administrao de que o melhor bloquear. Em primeiro lugar necessitas de garantir que o servidor Subversion est actualizado para, pelo menos, a verso 1.2. Verses anteriores no suportam de todo bloqueios. Se est a usar um acesso file://, ento est claro que s o teu cliente necessita de ser actualizado.

112

Guia de Uso Dirio

4.21.1. Como Funciona o Sistema de Bloqueio no Subversion


Por defeito nada bloqueado, e qualquer um que tenha acesso para submeter, pode submeter alteraes em qualquer ficheiro a qualquer altura. Outros iro actualizar a sua cpia de trabalho periodicamente e as alteraes no repositrio sero integradas com as alteraes locais. Se tu Obteres o bloqueio num ficheiro, ento s podes submeter esse ficheiro. Submisses de outros utilizadores sero bloqueados at libertares o bloqueio. Um ficheiro bloqueado no pode ser modificado de forma alguma no repositrio, pelo que no poder ser apagado ou tambm renomeado, excepo do autor do bloqueio. No entanto outros utilizadores no tero necessariamente conhecimento de que tu obtiveste um bloqueio. A no ser que verifiquem o estado de bloqueio regularmente, a primeira vez que tero conhecimento ser quando ao submeterem a operao falhar, o que na maior parte dos caso no ser muito til. Para tornar mais fcil a gesto de bloqueios, existe uma propriedade nova no Subversion svn:needs-lock. Quando esta propriedade est configurada num ficheiro (para qualquer valor), quando o ficheiro SVN exportado ou actualizado a cpia local colocada em estado de s de leitura, a no ser que essa cpia tenha o bloqueio desse ficheiro. Isto actua como um aviso que no devers alterar esse ficheiro a no ser que primeiro obtenhas o seu bloqueio. Os ficheiros que so, versionados e s de leitura, so marcados com uma sobreposio especial do TortoiseSVN, que indica que necessitas de obter um bloqueio antes de editares. Os bloqueios so registados por localizao da cpia de trabalho tal como por autor. Se tiveres vrias cpias de trabalho (em casa, no trabalho) ento s poders obter um bloqueio numa dessas cpias de trabalho. Se um dos teus colegas adquire um bloqueio e vai de frias sem o libertar, o que fars? O Subversion providncia um meio de forar bloqueios. Libertar um bloqueio detido por outro referido como Quebrar o bloqueio, e forar aquisio de um bloqueio detido por outrm referido como Roubar o bloqueio. Naturalmente essas so aces que no devers efectuar de nimo leve, se queres manter a amizade com os teus colegas de trabalho. Os bloqueios so registados no repositrio e um testemunho de bloqueio criado na tua cpia de trabalho. Se existe uma discrepncia, por exemplo se algum quebrou o bloqueio, o testemunho local do bloqueio fica invlido. O repositrio sempre a referncia definitiva.

4.21.2. Obter um Bloquieo


Selecciona o ficheiro(s) na tua cpia de trabalho, para o qual queres adquirir um bloqueio, e ento selecciona o comando TortoiseSVN Obter Bloqueio....

113

Guia de Uso Dirio

Figura 4.41. A Caixa de Dilogo Bloquear


Uma caixa de dilogo aparece para permitir introduzir um comentrio, para que os outros possam ver porqu bloqueaste o ficheiro. O comentrio opcional s usado correntemente com repositrios baseados em Svnserve. Se (e s se) necessitas de roubar o bloqueio de algum, verifica a caixa Roubar bloqueio, e clica no OK. Se seleccionas um ficheiro e ento usas TortoiseSVN Obter bloqueio..., a caixa de dilogo bloquear ir abrir com todos os ficheiros em todas as subpastas seleccionadas para bloquear. Se realmente queres bloquear uma hierarquia inteira, esta a maneira de o fazer, mas podes-te tornar muito impopular junto dos teus colegas de trabalho se bloqueias todo o projecto. Usa com moderao...

4.21.3. Libertar um Bloqueio


Para ter a certeza que no te esqueces de libertar um bloqueio que no precisas mais, os ficheiros bloqueados so mostrados na caixa de dilogo submeter e seleccionados por defeito. Se continuares com a submisso, os bloqueios so removidos nos ficheiros seleccionados, mesmos se os ficheiros no foram modificados. Se no queres libertar o bloqueio em certos ficheiros, podes desseleccion-las (se no foram modificadas). Se queres manter um bloqueio num ficheiro que modificaste, tens de activar a caixa de verificao Manter bloqueios, antes de submeteres as tuas alteraes. Para libertar manualmente um bloqueio, selecciona o(s) ficheiro(s) na tua cpia de trabalho, para os quais queres libertar os bloqueios e selecciona o comando TortoiseSVN Libertar bloqueio No h mais nada a introduzir pelo que o TortoiseSVN ir contactar o repositrio e libertar os bloqueios. Podes tambm usar este comando numa pasta, para libertar recursivamente, todos os bloqueios.

114

Guia de Uso Dirio

4.21.4. Verificar o Estado dos Bloqueio

Figura 4.42. A Caixa de Dilogo Verificar Alteraes


Para ver os bloqueios que tu e os outros tm, podes usar TortoiseSVN Verificar alteraes.... Testemunhos de bloqueios locais aparecero imediatamente. Para verificar os bloqueios detidos por outros (e para ver se algum dos teus bloqueios esto quebrados ou roubados) necessitas de clicar em Verificar Repositrio. A partir daqui, do menu de contexto, podes tambm obter e libertar bloqueios tal como quebrar ou roubar bloqueios detidos por outros.

Evitar Quebrar e Roubar Bloqueios


Se quebrares ou roubares um bloqueio de outro sem lhe dizeres nada, podes potencialmente provocar perda de trabalho. Se ests a trabalhar com tipos de ficheiros no integrveis e roubas o bloqueio de outro, quando libertares o bloqueio, eles ficaram livres para submeter as suas alteraes e reescrevendo as tuas. O Subversion no perde dados, mas tu perdeste a proteco de trabalho-em-equipa que o bloqueio te deu.

4.21.5. Tornar os Ficheiros No-Bloqueados S de Leitura


Como mencionado acima, a maneira mais eficaz de usar os bloqueios configurar a propriedade svn:needs-lock em ficheiros. Consultar Seco 4.17, Configuraes de Projecto para instrues em como configurar propriedades. Ficheiros com esta propriedade configurada sero sempre SVN exportadas e actualizadas com a bandeira s-de-leitura levantada, a no ser que a tua cpia de trabalho tenha um bloqueio.

Como lembrete o TortoiseSVN usa uma sobreposio especial para indicar isto. Se aplicas uma poltica em que todo o ficheiro tem de ser bloqueado, ento achars mais fcil usar a funcionalidade auto-props do Subversion para fixar automticamente a propriedade, de cada vez que adicionas novos ficheiros. Consulta Seco 4.17.1.5, Configurao automtica de propriedades para mais informaes.

115

Guia de Uso Dirio

4.21.6. Os Scripts do Gancho de Bloqueio


Quando crias um repositrio novo com o Subversion 1.2 ou superior, so criados quatro templates de gancho na pasta hooks do repositrio. Esses so invocados antes e depois de obter um bloqueio, e antes e depois de libertar um bloqueio. Ser uma boa ideia instalar no servidor um script de gancho post-lock e post-unlock, que envia um email indicando que ficheiro foi bloqueado. Com tal script instalado todos os teus utilizadores podem ser notificados se algum bloqueia/desbloqueia um ficheiro. Podes encontrar um exemplo de um script de gancho hooks/post-lock.tmpl na pasta do teu repositrio. Podes tambm utilizar ganchos para proibir quebrar ou roubar bloqueios, ou talvez limit-lo a um administrador nomeado. Ou talvez querers enviar um email ao dono, quando um dos seus bloqueios quebrado ou roubado. Consulta Seco 3.3, Scripts de gancho de servidor para saberes mais.

4.22. Criar e Applicar Correces


Para projectos de cdigo aberto (como este) toda a gente tem acesso de leitura ao repositrio, e toda a gente pode contribuir para o projecto. Ento como so controladas essas contribuies? Se toda a gente pudesse submeter alteraes o projecto estaria em instabilidade permanente, e provavelmente permanentemente inutilizado. Nesta situao a alterao gerida atravs da submisso de um ficheiro de correco para a equipa de desenvolvimento, que tem acesso para escrever. Eles podem ento rever primeiro a correco e ento submet-la para o repositrio ou devolv-la ao autor. Ficheiros de correco so simplesmente ficheiros de Comparao-Unificada que mostram as diferenas entre a tua cpia de trabalho e a reviso base.

4.22.1. Criar um Ficheiro de Correco


Primeiro tu precisas de construir e testar as tuas alteraes. Ento em vez de usares TortoiseSVN Submeter... na pasta pai, seleccionas TortoiseSVN Criar correco...

Figura 4.43. A caixa de dilogo de Criar Correco

116

Guia de Uso Dirio

Agora podes seleccionar os ficheiros que queres incluir na correco, tal como tu farias numa submisso completa. Isto ir produzir um ficheiro simples contendo um sumrio de todas as alteraes que efectuaste nos ficheiros seleccionados, desde a ltima actualizao do repositrio. As colunas nesta caixa de dilogo podem ser customizadas da mesma maneira que as colunas na caixa de dilogo Verificar alteraes. Consulta Seco 4.7.3, Estado Remoto e Local para mais detalhes. Tu podes produzir correces separadas, contendo alteraes em diferentes conjuntos de ficheiros. claro que se criaste um ficheiro de correco, e efectuaste mais alteraes aos mesmos ficheiros, criando uma segunda correco, o segundo ficheiro de correco ir incluir ambos os conjuntos de alteraes. Grava apenas o ficheiro usando um nome da tua escolha. Ficheiros de correces podem ter a extenso que desejes, mas por conveno eles dever usar a extenso .patch ou .diff. Agora ests pronto para submeter o teu ficheiro de correco. Tu podes tambm guardar a correco na rea de transferncia em vez de o fazer para um ficheiro. Poders fazer isto para que possas col-lo num email para ser revisto por outros. Ou se tiveres duas cpias de trabalho numa mquina e quiseres transferir alteraes de uma para outra, a correco na rea de transferncia a maneira conveniente de o fazer.

4.22.2. Aplicar um Ficheiro de Correco


Os ficheiros de correco so aplicados na tua cpia de trabalho. Isto dever ser feito a partir de uma pasta do mesmo nvel da que foi usada para criar a correco. Se no tens a certeza de qual , olha apenas para a primeira linha do ficheiro de correco. Por exemplo, se o primeiro ficheiro a ser trabalhado era doc/source/english/chapter1.xml e a primeira linha no ficheiro de correco Index: english/chapter1.xml, ento precisas de aplicar a correco na pasta doc/source/. No entanto, mesmo que estejas na cpia de trabalho correcta, se escolheres o nvel de pastas errado, o TortoiseSVN ir dar conta e sugere o nvel correcto. De modo a aplicar um ficheiro de correco tua cpia de trabalho, necessitas de pelo menos, ter acesso de leitura ao repositrio. A razo para isto que, o programa de integrao tem de referenciar as alteraes at reviso em que elas foram efectuadas pelo programador remoto. From the context menu for that folder, click on TortoiseSVN Apply Patch... This will bring up a file open dialog allowing you to select the patch file to apply. By default only .patch or .diff files are shown, but you can opt for All files. If you previously saved a patch to the clipboard, you can use Open from clipboard... in the file open dialog. Alternativamente, se o ficheiro de correco tem uma extenso .patch ou .diff, podes clicar directamente nele com o boto direito e seleccionar TortoiseSVN Aplicar correco.... Neste caso sers solicitado a introduzir a localizao da cpia de trabalho. Estes dois mtodos apenas diferem no modo de fazer a mesma coisa. Com o primeiro mtodo, tu seleccionas a CT e navegas at ao ficheiro de correco. Com o segundo, seleccionas o ficheiro de correco e navegas at CT. Uma vez que tenhas seleccionado o ficheiro de correco e a localizao da cpia de trabalho, o TortoiseMerge ir correr, integrando as alteraes do ficheiro de correco com a tua cpia de trabalho. Uma pequena janela lista os ficheiros que foram alterados. Efectua duplo clique em cada uma de cada vez, para reveres as alteraes e guardares os ficheiros integrados. A correco do programador remoto foi agora aplicada na tua cpia de trabalho, ento precisas agora de submeter de modo a permitir que todos possam aceder s alteraes a partir do repositrio.

4.23. Quem Alterou Que Linha

117

Guia de Uso Dirio

Por vezes tu precisas conhecer no s que linhas foram alteradas, mas tambm quem exactamente alterou linhas especficas num ficheiro. quando o comando TortoiseSVN Responsabilizar..., por vezes tambm referido como anotar vem a calhar. Este comando lista, para cada linha num ficheiro, o autor e a reviso em que a linha foi alterada.

4.23.1. Responsabilidade para Ficheiros

Figura 4.44. A Caixa de Dilogo de Anotar/Responsabilizar


Se no ests interessado nas alteraes em revises anteriores, podes fixar a reviso a partir da qual a responsabilizao deve comear. Fixa para 1, se queres a responsabilizao para cada reviso. Por defeito o ficheiro responsabilizado visualizado usando o TortoiseBlame, que salienta as diferentes revises para torn-lo mais fcil de ler. Se desejas imprimir ou editar o ficheiro de responsabilidade, selecciona Usar leitor de Texto para ver responsabilidades Tu podes especificar a forma como so lidados os fim-de-linha e os espaos em branco. Essas opes esto descritas em Seco 4.10.2, Opes de Fim-de-Linha e Espaos-Brancos. O comportamento por defeito tratar todas as diferenas de espaos-em-branco e fim-de-linha como alteraes reais, mas se queres ignorar uma alterao de indentao e encontrar o autor original, podes escolher uma opo apropriada aqui. Uma vez que primas OK, o TortoiseSVN comea a readquirir os dados para criar o ficheiro de responsabilidade. Toma ateno: Isto pode levar vrios minutos a concluir, dependendo de quanto o ficheiro mudou e, claro, da ligao de rede ao repositrio. Uma vez que o processo de responsabilidade tenha concludo, o resultado escrito num ficheiro temporrio onde poders ver os resultados.

118

Guia de Uso Dirio

Figura 4.45. TortoiseBlame


O TortoiseBlame, que est includo com o TortoiseSVN torna o ficheiro de responsabilidade mais fcil de ler. Quando passas com o rato sobre uma linha, na coluna de informao da responsabilidade, todas as linhas com a mesma reviso so mostradas com um fundo mais escuro. Linhas de outras revises que foram alteradas pelo mesmo autor, so mostradas com um fundo mais claro. A colorao poder no funcionar to bem se o teu cran estiver configurado para o modo de 256 cores. Se clicares com o boto direito numa linha, todas as linhas com a mesma reviso sero destacadas, e todas as linhas de outras revises com o mesmo autor sero destacadas numa cor mais clara. Este destaque persistente permitindo-te mover o rato sem perder os destaques. clica outra vez nessa reviso para remover o destaque. Os comentrios de reviso (mensagem de registo) so mostrados numa caixa de dica, quando passas com o rato sobre a coluna de informao de responsabilidade. Se queres copiar a mensagem de registo dessa reviso usa o menu de contexto, que aparece quando clicas com o boto direito na coluna de informao de responsabilidade. Tu podes pesquisar no relatrio de responsabilidade usando Editar Localizar.... Isto permite-te procurar por nmeros de revises, autores e o contedo das prprias mensagens. Mensagens de registo no so includas na pesquisa - tu devers usar a caixa de dilogo de Registo para efectuar essa pesquisa. Podes tambm saltar para uma nmero de linha especfica usando, Editar Ir Para Linha.... Quando o rato est sobre as colunas de informao de responsabilidade, um menu de contexto est disponvel, que te ajudar a comparar revises e examinar o histrico, usando o nmero de reviso da linha sobre o rato, como referncia. Menu de contexto Responsabilizar pela reviso anterior gera um relatrio de responsabilidade para o mesmo ficheiro, mas usando a reviso anterior como o limite superior. Isto d-te o relatrio de responsabilidade para o estado do ficheiro, imediatamente antes da linha que ests a ver ter sido alterada. Menu de contexto Mostrar alteaes arranca o teu leitor de comparaes, mostrando-te o que foi alterado na reviso referenciada. Menu de contexto Mostrar registo mostra a caixa de dilogo de registo de revises, a comear na reviso referenciada. Se precisas um melhor indicador visual de onde esto as mais antigas e mais recentes alteraes, selecciona Ver Colorir idade das linhas. Isto ir usar um gradiente de cores para mostrar linhas mais

119

Guia de Uso Dirio

recentes a vermelho e linhas mais antigas em azul. A colorao por defeito algo clara, mas podes alterlo usando as preferncias do TrotoiseBlame. Se ests a usar o rastreamento de integrao, onde as linhas foram alteradas como resultado de uma integrao de outro caminho, o TortoiseBlame ir mostrar a reviso e autor da ltima alterao no ficheiro original em vez da reviso onde a integrao foi efectuada. Essas linhas esto assinaladas ao mostrar o autor e reviso em itlico. Se queres que as linhas integradas no sejam mostradas desta maneira, no verifiques a caixa de dilogo Incluir informao de integrao. Se queres ver os caminhos envolvidos na integrao, selecciona Ver Caminhos de integrao. As preferncias para o TortoiseBlame podem ser acedidas usando TortoiseSVN Preferncias... na aba TortoiseBlame. Consultar Seco 4.30.9, Preferncias do TortoiseBlame.

4.23.2. Diferenas de responsabilidade


Uma das limitaes do relatrio de responsabilidade que s mostra como estava o ficheiro numa determinada reviso, e mostra a ltima pessoa que alterou cada linha. Por vezes tu queres conhecer que alterao foi feita, tal como quem a fez. O que tu precisas aqui uma combinao de relatrios de comparao e responsabilidade. A caixa de dilogo registo de reviso inclui vrias opes que te permite fazer isto. Responsabilizar Revises No painel de topo, selecciona 2 revises e selecciona Menu de contexto Responsabilizar revises. Esta operao ir buscar os dados de responsabilidade para as 2 revises, e usa o visualizador de comparaes para comparar os dois ficheiros responsabilizados. Responsabilizar alteraes Selecciona uma reviso no painel de topo e ento pega num ficheiro no painel de fundo e selecciona Menu de contexto Responsabilizar alteraes. Esta operao ir buscar os dados de responsabilidade para a reviso seleccionada e para a reviso anterior, e usar o visualizador de comparao para comparar os dois ficheiros responsabilizados. Comparar e Responsabilizar com a BASE de Trabalho Mostra o registo para um s ficheiro, e no painel de topo, selecciona uma nica reviso e selecciona Menu de contexto Comparar e Responsabilizarcom a BASE de trabalho. Esta operao ir buscar os dados de responsabilidade para a reviso seleccionada, e para o ficheiro na BASE de trabalho, e usa o visualizador de comparao para comparar os dois ficheiros responsabilizados.

4.24. O Navegador de Repositrio


Por vezes necessitas de trabalhar directamente no repositrio sem teres uma cpia de trabalho. para isto que existe o Navegador de Repositrio. Tal como o explorador e as sobreposies de cones te permitem ver a tua cpia de trabalho, da mesma maneira o Navegador de Repositrio permite-te ver a estrutura e o estado do repositrio.

120

Guia de Uso Dirio

Figura 4.46. O Navegador de Repositrio


Com o Navegador de Repositrio podes executar comandos tais como, copiar, mover, renomear,... directamente no repositrio. O Navegador de Repositrio tem um aspecto muito similar ao explorador do Windows, excepo de que mostra os contedos do repositrio numa reviso particular, em vez dos ficheiros no teu computador. No painel da direita podes ver a rvore de pastas e no painel da direita os contedos da pasta seleccionada. No topo da janela de navegao, do Navegador de Repositrio, tu podes introduzir o URL e a reviso do repositrio que queres navegar. Tal como o expolrador do Windows, tu podes clicar nos cabealhos de colunas do painel da direita, se queres seleccionar a disposio da ordenao. E tambm como no explorador existem menus de contexto disponveis em ambos os painis. O menu de contexto para um ficheiro permite-te: Abrir o ficheiro seleccionado com o leitor por defeito para esse tipo de ficheiro ou, com um programa tua escolha. Guarda uma cpia no versionada do ficheiro para o teu disco rgido. Mostrar o registo de reviso para esse ficheiro, ou mostra o grfico de todas as revises, para que possas ver de onde o ficheiro veio. Responsabiliza o ficheiro, para veres quem alterou que linha e quando. Remove ou renomea o ficheiro. Faz uma cpia do ficheiro, numa parte diferente do repositrio, ou para uma cpia de trabalho originada do mesmo repositrio. Ver/Editar as propriedades dos ficheiros. O menu de contexto para uma pasta, permite-te:

121

Guia de Uso Dirio

Mostrar o registo de reviso para esse ficheiro, ou mostra o grfico de todas as revises, para que possas ver de onde veio a pasta. Exportar a pasta, para uma cpia local no versionada no teu disco rgido. SVN Exportar uma pasta, para produzir uma cpia de trabalho local no teu disco rgido. Criar uma nova pasta no repositrio. Adicionar ficheiros ou pastas, directamente no repositrio. Remover ou renomear a pasta. Make a copy of the folder, either to a different part of the repository, or to a working copy rooted in the same repository. Ver/Editar as propriedades da pasta. Marcar a pasta para comparao. A pasta marcada mostrada em negrito. Comparar a pasta com uma pasta previamente marcada, como uma comparao unificada, ou como uma lista de ficheiros alterados que podem ento ser visualmente comparados, usando a ferramenta de comparao por defeito. Isto pode ser particularmente til na comparao de duas etiquetas, ou o trunk e um ramo, para ver o que foi alterado. Se seleccionares duas pastas no painel direito podes ver as suas diferenas como uma comparao unificada, ou como uma lista de ficheiros que podem ser visualmente comparados usando a ferramenta de comparao por defeito. Se seleccionares multiplas pastas no painel da direita, podes svn exportar todas de uma vez s para uma pasta pai comum. Se seleccionares 2 etiquetas que foram copiadas a partir da mesma origem (tipicamente o /trunk/), podes usar Menu de Contexto Mostrar registo... para ver a lista de revises entre estes dois pontos de etiquetas. Podes usar F5 para refrescar a vista, como usual. Isto refrescar tudo o que actualmente visualizado. Se queres efectuar uma pr-busca ou refrescar a informao de ns que no foram ainda abertos, usa Ctrl-F5. Depois disso a expanso de qualquer nodo ser instantnea, sem atrasos de rede enquanto a informao recebida. Podes tambm usar o navegador de repositrio para operaes de arrastar-e-largar. Se arrastares uma pasta do explorador para o navegador-de-repositrio, esta ser importada para o repositrio. De notar que, se arrastares mltiplos itens, estes sero importados em submisses separadas. Se queres mover um item dentro do repositrio, arrasta com o boto direito do rato para a nova localizao. Se queres criar uma cpia, em vez de moveres o item, usa em alternativa Ctrl-arrastar com o boto direito. Ao copiar o cursor fica com o smbolo mais tal como no explorador. Se queres copiar/mover um ficheiro ou pasta para outra localizao, e tambm dar-lhe um novo nome ao mesmo tempo, podes ento arrastar com o boto direito ou Ctrl-arrastar com o boto direito no item, em vez de usar arrastar com o boto esquerdo. Nesse caso, a caixa de dilogo renomear mostrada, e podes ento introduzir um novo nome para a pasta ou ficheiro. Sempre que efectuares alteraes no repositrio usando um desses mtodos, sers recebido com uma caixa de dilogo de mensagem de registo. Se arrastares algo por em engano, est a tua oportunidade para cancelar a operao. Por vezes quando tentas abrir um caminho s recebido com uma mensagem de erro, em vez dos detalhes do item. Isto pode acontecer de tu especificaste um URL invlido, se no tens permisses de acesso, ou se h algum problema no servidor. Se queres copiar esta mensagem, para a incluir num email, clica apenas

122

Guia de Uso Dirio

nela e usa o Menu de contexto Copiar mensagem de erro para a rea de transferncia, ou usa simplesmenteCtrl+C.

4.25. Grficos de Revises

Figura 4.47. O Grfico de Revises


Necessitas, por vezes, de saber de onde os ramos e etiquetas foram retirados do trunk, e a forma ideal para visualizar este tipo de informao um grfico ou uma estrutura em rvore. quando necessitas de usar TortoiseSVN Grafico de revises... Este comando analisa a histria das revises e tenta criar uma rvore que mostra os pontos em que as cpias foram feitas, e quando os ramos/etiquetas foram removidos.

Importante
De modo a gerar o grfico, o TortoiseSVN precisa de carregar da raiz do repositrio todas as mensagens de registo. No ser necessrio dizer que isto ir levar vrios minutos, mesmo com um repositrio com alguns milhares de revises, dependendo da rapidez do servidor, largura de banda da rede, etc. Se tentares isto com algo como o projecto Apache, que actualmente tem acima de 500.000 revises, poders ter de esperar por algum tempo. As boas notcias que ests a usar cache de registo, pelo que apenas ters de sofrer este atraso uma vez. Depois disso os dados de registo so armazenados localmente. O provisionamento de registo (cache) est activo nas preferncias do TortoiseSVN.

123

Guia de Uso Dirio

4.25.1. Ns do Grfico de Revises


Cada n do grfico de revises representa uma reviso no repositrio onde algo foi alterado, na rvore que ests a observar. Diferentes tipos de ns podem ser distinguidos atravs da forma e cor. As formas so fixas, mas as cores podem ser alteradas usando TortoiseSVN preferncias Itens adicionados ou copiados Os itens que foram adicionados ou criados pela cpia de outro ficheiro/pasta, so mostrados como um rectngulo de cantos arredondados. A sua cor por defeito o verde. Etiquetas e trunks so tratados como um caso especial, e usam uma forma diferente dependendo de TortoiseSVN Preferncias Itens removidos Itens removidos, e.g. um ramo que no mais necessrio, so mostrados como um octgono (rectngulo com os cantos cortados). A cor por defeito o vermelho. Itens renomeados Itens renomeados so tambm mostrados como um octgono, mas a cor por defeito o azul. Reviso da extremidade do ramo O grfico est normalmente restringido a mostrar pontos de ramo, mas tambm til e comum, ter a possibilidade de ver a respectiva reviso HEAD para cada ramo. Se seleccionares Mostrar revises HEAD (mais recentes), cada n de reviso HEAD ser mostrado como uma elipse. De notar que a HEAD aqui refere-se ltima reviso submetida nesse caminho e no a reviso HEAD do repositrio Reviso da cpia de trabalho Se invocaste o grfico de revises a partir da cpia de trabalho podes optar por mostrar a reviso BASE no grfico usando Show WC revision, que marca o n BASE com uma moldura a negrito. Cpia de trabalho modificada Se invocaste o grfico de revises a partir de uma cpia de trabalho podes optar por mostrar um n adicional, que representa a cpia de trabalho modificada usando Mostrar modificaes do WC. Este ser um n elptico com uma moldura a negrito, em vermelho por defeito. Item normal Todos os outros itens so mostrados como um rectngulo simples. De notar que por defeito, o grfico s mostra os pontos onde itens foram adicionados, copiados ou removidos. Mostrando cada reviso do projecto ir gerar um grfico muito extenso para casos no triviais. Se queres realmente ver todas as revises onde foram feitas alteraes, existe uma opo para o fazer no menu Ver e na barra de ferramentas. A vista por defeito (sem agrupamento) coloca os ns de modo que a sua posio vertical fique na ordem estrita de revises, para que tenhas uma dica visual da ordem em que as coisas foram feitas. Quando esto na mesma coluna dois ns, a ordem muito bvia. Quando esto em colunas adjacentes dois ns, o deslocamento muito menor porque no h necessidade de evitar que os ns se sobreponham, e como resultado a ordem um pouco menos bvia. Tais optimizaes so necessrias de modo a manter a complexidade dos grficos numa dimenso aceitvel. Ter em ateno que esta ordenao usa o canto do n no lado mais antigo como referncia, i.e. o canto inferior do n, quando o grfico mostrado com os ns mais antigos no fundo. O canto de referncia significativo porque todas as formas de ns no so da mesma altura.

4.25.2. Alterando a Vista


Porque o grfico de revises normalmente bastante complexo, existem um nmero de funcionalidades que podem ser usadas para moldar a vista tua maneira. Estas esto disponiveis no menu Ver e a partir da barra de ferramentas. Agrupar ramos O comportamento por defeito (sem agrupamento) ter todas as linhas ordenadas estrictamente por reviso. Como resultado, ramos com vida longa e submisses dispersas, ocupam uma coluna inteira para apenas poucas alteraes tornando o grfico muito amplo.

124

Guia de Uso Dirio

Este modo agrupa as alteraes por ramo para que no exista uma ordenao global de revises: Revises consecutivas num ramo sero (normalmente) mostradas em linhas consecutivas. Sub-ramos no entanto, so arrumados de tal maneira que ramos posteriores sero mostrados na mesma coluna, acima dos ramos mais antigos, de modo a manter o grfico esguio. Como resultado uma dada linha poder conter alteraes de diferentes revises. Mais antigo no topo Normalmente o grfico mostra a reviso mais antiga no fundo e a rvore cresce para cima. Usa esta opo para em alternativa crescer para baixo a partir do topo Alinhar rvores no topo Quando um grfico est partido em vrias rvores pequenas, as rvores podem aparecer na ordem natural de reviso ou alinhadas no fundo da janela, dependendo se ests a usar a opo Agrupar ramos. Usa esta opo para todas as rvores em alternativa crescerem a partir do topo. Reduzir linhas cruzadas Se a disposio do grfico produziu muitas linhas cruzadas, usa esta opo para limp-las. Isto poder fazer com que as colunas de disposio apaream em locais menos lgicos, por exemplo numa linha diagonal em vez de uma coluna, e o grfico pode requerer mais rea de desenho. Nomes de caminhos diferenciais Nomes de caminhos longos podem ocupar muito espao e tornar muito largas as caixas dos ns. Usa esta opo para mostrar s a parte diferente de um caminho, substituindo a parte comum com pontos. E.g. se criares um ramo /branches/1.2.x/doc/html a partir de /trunk/doc/html, o ramo pode ser mostrado na forma compacta como /branches/1.2.x/.. porque os dois ltimos niveis doc e html no se alteraram. Mostrar todas as revises Isto faz apenas aquilo que ests espera, e mostra cada reviso em que algo (na rvore em que ests a construir o grfico) foi alterado. Para histricos longos isto pode produzir um grfico realmente gigante. Mostrar revises HEAD Isto assegura que a ltima reviso de cada ramo sempre mostrada no grfico. Fontes exactas de cpia Quando um ramo/etiqueta criado, o comportamento por defeito mostrar o ramo como retirado do ltimo n onde foi efectuada uma alterao. Estritamente falando isto no exacto, visto que os ramos so normalmente criados a partir da HEAD corrente em vez de uma reviso especfica. possvel ento mostrar a reviso mais correcta (mas menos til) que foi usada para criar a cpia. De notar que esta reviso pode ser mais recente que a reviso HEAD do ramo fonte. Etiquetas dobradas Quando um projecto tem muitas etiquetas, mostrar cada etiqueta como um n separado no grfico ocupa muito espao e ofusca a mais interessante estrutura do ramo de desenvolvimento. Ao mesmo tempo poders necessitar de facilmente aceder ao contedo da etiqueta, para que possas efectuar comparaes de revises. Esta opo esconde os ns das etiquetas e em alternativa, mostra-os na etiqueta de dica do n de onde foram copiadas. Um cone de etiqueta no lado direito do n fonte indica que foram criadas tags. Esconder caminhos removidos Esconde caminhos que j no esto presentes na reviso HEAD do repositrio, e.g. ramos removidos. Esconder ramos no modificados Esconde ramos onde no foram submetidas alteraes, no respectivo ficheiro ou subpasta. Isto no indica necessariamente que o ramo no foi usado, apenas que no foram feitas alteraes nesta parte. Mostra a reviso da CT Marca no grfico a reviso que corresponde reviso actualizada do item, para o qual obtiveste o grfico. Se acabaste de actualizar, esta ser a reviso HEAD, mas se outros submeteram alteraes

125

Guia de Uso Dirio

desde a tua ltima actualizao, a tua CT poder estar algumas revises abaixo da HEAD. O n marcado com uma moldura a negrito. Mostrar modificaes da CT Se a tua CT contm alteraes locais, esta opo desenha-as como um n elptico separado e ligado ao n a que a tua CT foi pela ltima vez actualizada. A cor de contorno por defeito o vermelho. Para capturar as alteraes mais recentes, poders necessitar de refrescar o grfico usando F5. Filtro Por vezes o grfico de revises contm mais revises do que aquelas que queres ver. Esta opo abre a caixa de dilogo que permite restringir o intervalo de revises mostradas e esconder caminhos particulares pelo nome. Listas de rvore Quando o grfico contm vrias rvores, por vezes til usar cores de fundo alternadas para ajudar distino entre elas. Mostra viso geral Mostra uma pequena figura do grfico inteiro com a janela da vista corrente como um rectngulo que podes arrastar. Isto permite-te navegar pelo grfico de forma mais fcil. De notar que para grficos muito grandes a viso global pode-se tornar inutil, devido ao factor de ampliao (zoom) extremo, e por isso no ser mostrado nesses casos.

4.25.3. Utilizar o Grfico


Usa a janela de vista global para tornar mais fcil a navegao em grandes grficos. Este mostra o grfico inteiro numa janela pequena, com a parcela correntemente mostrada salientada. Podes arrastar a rea salientada de forma a alterar a regio visualizada. A data da reviso, o autor e os comentrios so mostrados numa caixa de dica, quando o rato passa sobre a caixa de reviso. Se seleccionares duas revises ( Usa Ctrl-clique com o boto direito), podes usar o menu de contexto para mostrar as diferenas entre estas revises. Podes optar por mostrar as diferenas nos pontos de criao de ramos, mas usualmente querers mostrar as alteraes nas pontas dos ramos, i.e. na reviso HEAD. Podes ver as diferenas como um ficheiro de Comparao-Unificada que mostra todas as diferenas num nico ficheiro com contexto mnimo. Se optares por Menu de contexto Comparar Revises sers presenteado com uma lista de ficheiros alterados. Efectua duplo clique num nome de ficheiro de modo a obter ambas as revises do ficheiro e compar-las recorrendo ferramenta de comparao visual. Se tu clicas com o boto direito numa reviso, podes usar Menu de contexto Mostrar registo para ver o histrico. Podes tambm integrar as alteraes nas revises seleccionadas, numa cpia de trabalho diferente. A caixa de dilogo seleco de pasta, permite-te escolher a cpia de trabalho para onde integrar, mas aps esta no existe caixa de confirmao nem uma oportunidade para tentar uma integrao de teste. Ser uma boa ideia integrar numa cpia de trabalho no modificada, para que possas reverter as alteraes se no resultar! Esta uma funcionalidade til se pretendes integrar as revises seleccionadas, de um ramo para outro.

Aprender a Ler o Grfico de Revises


Utilizadores pela primeira vez, podem ser surpreendidos pelo facto de que, o grfico de revises mostra algo que no corresponde ao seu modelo mental. Se uma reviso altera mltiplas cpias ou ramos de um ficheiro ou pasta, por exemplo, ento iro existir mltiplos ns para essa simples reviso. uma boa prtica comear com as opes mais esquerda, na barra de ferramentas, e customizar o grfico passo a passo at este chega perto do teu modelo mental.

126

Guia de Uso Dirio

Todas as opes de filtro tentam perder o mnimo de informao possvel, isso poder fazer com que alguns ns mudem de cor. Sempre que o resultado seja inesperado, desfaz a ltima operao de filtragem e, tenta compreender o que essa reviso ou ramo tem de especial. Na maior parte dos casos o resultado, inicialmente esperado da operao de filtragem, ter sido impreciso ou enganador.

4.25.4. Refrescar a Vista


Se quiseres consultar novamente o servidor por nova informao poders simplesmente refrescar a vista usando o F5. Se estiveres a usar a cache de registo (activada por defeito) o repositrio ser consultado para verificar novas submisses e buscar somente as novas. Se a cache de registo est em modo forade-linha, esta operao ir tambm tentar retornar ao modo em-linha. Se ests a usar a cache de registo, e desconfias que o contedo da mensagem ou o autor foram alterados, ento devers recorrer caixa de dilogo de registo para refrescar as mensagens de que necessitas. Desde que o grfico de revises funciona a partir da raiz do repositrio, teramos de invalidar toda a cache de registo, e uma recarga poderia levar um tempo muito longo.

4.25.5. Podar as rvores


Uma rvore grande pode-se tornar difcil de navegar e por vezes tu querers esconder algumas partes, ou parti-la numa floresta de rvores mais pequenas. Se manteres o rato sobre o ponto onde um n de ligao entra ou sai do n, irs ver um ou mais botes de apario que te permitiram fazer isso.

Clica no boto de subtraco para colapsar a sub-rvore anexada.

Clica no boto de adio para expandir a rvore colapsada. Quando uma rvore est colapsada este boto mantm-se visvel para sinalizar a sub-rvore escondida.

Clica no boto da cruz para dividir a sub-rvore anexada e mostr-la no grfico como uma rvore separada.

Clica no boto com o crculo para re-anexar a rvore dividida. Quando uma rvore foi dividida este boto permanece visvel para indicar que existe uma sub-rvore separada. Clica no fundo do grfico para obteres o menu de contexto que te oferece opes para Expandir todosl e Juntar todos. Se no existem nenhum ramo colapsado ou dividido, o menu de contexto no ser mostrado.

4.26. Exportar uma Cpia de Trabalho do Subversion


Por vezes irs querer uma cpia da tua rvore de trabalho, mas sem as pastas .svn, e.g. de modo a criar um tarball zipado da tua fonte, ou para exportar para um servidor web. Em vez de efectuares uma cpia para depois apagar manualmente todas as pastas .svn podes usar o comando do Subversion TortoiseSVN Exportar.... Exportar de um URL e exportar de uma cpia de trabalho so tratadas de forma ligeiramente diferente.

127

Guia de Uso Dirio

Figura 4.48. A Caixa de Dilogo Exportar-do-URL


Se executas este comando numa pasta no versionada, o TortoiseSVN ir assumir que essa pasta o destino e abre uma caixa de dilogo para introduzires o URL e a reviso a exportar. Esta caixa de dilogo tem opes para, s exportar a pasta de topo, omitir referncias externas e sobrepor o estilo de fim de linha para ficheiros que tm configurada a propriedade svn:eol-style. claro que podes tambm exportar directamente do repositrio. Usa o Navegador de Repositrio para navegares no repositrio at sub-rvore pretendida e usa Menu de Contexto Exportar. Irs obter a caixa de dilogo Exportar do URL descrita acima. Se executares este comando na tua cpia de trabalho sers questionado por uma localizao para guardares a cpia de trabalho limpa, sem as pastas .svn. Por defeito s os ficheiros versionados sero exportados, mas podes usar a caixa de verificao Exportar tambm ficheiros no versionados , para incluir quaisquer outros ficheiros no versionados que possam existir na tua cpia de trabalho. Referncias externas, usando svn:externals podero, se necessrio, ser omissas. Outra forma de exportar a partir de uma cpia de trabalho arrastar com o boto direito a cpia de trabalho para outro local e seleccionar Menu de Contexto SVN Exportar aqui ou Context Menu SVN Exporta todos aqui. A segunda opo inclui tambm os ficheiros no versionados. Quando ao exportar de uma cpia de trabalho, se a pasta de destino j conter uma pasta com o mesmo nome daquela que est a exportar, ser te dada a opo para escrever por cima do contedo j existente ou criares uma nova pasta com um nome gerado automaticamente, e.g. Target (1).

Exportar ficheiros individuais


A caixa de dilogo exportar no te permite exportar ficheiros individuais, mesmo que o Subversion permita. Para exportares ficheiros simples com o TortoiseSVN ters de usar o Navegador de repositrio (Seco 4.24, O Navegador de Repositrio). Simplesmente arrasta o(s) ficheiro(s) que queres exportar do repositrio para o local, no explorador, onde os queres, ou usa o menu de contexto no repositrio para os exportar.

128

Guia de Uso Dirio

Exportar uma rvore de alteraes


Se queres exportar uma cpia da estrutura de rvore do teu projecto, mas contendo s os ficheiros que foram alterados numa reviso particular, ou entre duas quaisquer revises, usa a funcionalidade comparar revises, descrita em Seco 4.10.3, Comparando Pastas.

4.26.1. Remover uma cpia de trabalho do controlo de verses


Por vezes tu tens uma cpia de trabalho que desejas converter de volta para uma pasta normal, sem as pastas .svn. O que tu realmente precisas um comando exportar-no-local, que remove apenas as pastas de controlo, em vez de gerar uma nova rvore de pastas limpa. A resposta surpreendente simples - exportar a prpria pasta! O TortoiseSVN detecta este caso especial e pergunta se tu queres tornar a cpia de trabalho no versionada. Se responderes sim, as pastas de controlo sero removidas, e ters uma simples rvore de pastas limpa.

4.27. Reposicionar uma cpia de trabalho

Figura 4.49. A Caixa de Dilogo Reposicionar


Se o teu repositrio por alguma razo mudou a sua localizao (IP/URL). Talvez estejas emperrado e no consigas submeter e no queres SVN exporta outra vez a tua cpia de trabalho a partir da nova localizao, e mover todas as tuas alteraes para a tua nova cpia de trabalho, o comando TortoiseSVN Reposicionar o que procuras. Basicamente no faz muito: pesquisa todas as entradas de ficheiros na pasta .svn e altera o URL das entradas para o novo valor. Poders ficar surpreendido por descobrires que o TortoiseSVN contacta o repositrio como parte desta operao. Tudo o que faz executar algumas simples verificaes para ter a certeza que o novo URL refere-se realmente ao mesmo repositrio da cpia de trabalho existente.

Ateno
Esta uma operao muito raramente usada. O comando reposicionar s usado se o URL da raiz do repositrio foi alterado. Possveis razes: O endereo IP do servidor foi alterado. O protocolo foi alterado (e.g. http:// para https://). O caminho raiz de repositrio na configurao do servidor foi alterado Posto de outra maneira, necessitas de reposicionar quando a tua cpia de trabalho se refere mesma localizao no mesmo repositrio, mas o prprio repositrio foi deslocado.

129

Guia de Uso Dirio

No se aplica se: Se queres mover para um repositrio do Subversion diferente. Nesse caso devers executar um SVN exportar limpo a partir da localizao do novo repositrio. Se queres trocar para um ramo diferente ou pasta dentro do mesmo repositrio. Para o fazeres devers usar TortoiseSVN Trocar.... Consulta Seco 4.19.2, SVN Exportar ou Trocar... para mais informao. Se reposicionares em qualquer dos casos acima citados, irs corromper a tua cpia de trabalho, e irs obter muitas mensagens de erro inexplicveis enquanto actualizares, submeteres, etc. Uma vez que isso acontecer a nica reparao a fazer efectuar um SVN exportar de fresco.

4.28. Integrao com Sistemas de controlo de problemas/ Gestores de Problemas


muito comum no desenvolvimento de Software que as alteraes possam ser relacionadas com um problema ou bug especfico. Os utilizadores dos sistemas de identificao de bugs (gestores de problemas) gostariam de associar a alteraes que fazem no Subversion, com um ID especfico, no seu sistema de gesto de problemas. A maioria dos gestores de problemas providencia um script de gancho pre-commit que analisa a mensagem de registo de modo a encontrar o ID do bug, com o qual a submisso est associada. Isto algo sujeito a erros, visto que confia que o utilizador escreva uma mensagem de registo correcta, para que o script de gancho pre-commit o possa analisar correctamente. O TortoiseSVN pode ajudar o utilizador de duas maneiras: 1. Quando o utilizador introduz a mensagem de registo, pode ser automaticamente adicionada uma linha bem definida, que inclu o nmero de problema associado com a submisso. Isto ir reduzir o risco de que o utilizador introduza um nmero de problema de uma maneira tal que, as ferramentas de identificao de bugs no o consigam analisar correctamente. Ou o TortoiseSVN poder salientar a parte da mensagem inserida, que reconhecida pelo gestor de problemas. Dessa maneira o utilizador saber que a mensagem de erro pode ser correctamente analisada. 2. Quando o utilizador navega nas mensagens de registo, o TortoiseSVN cria uma hiperligao a partir de cada ID de bug na mensagem de erro, que aponta o navegador de internet para o problema mencionado.

4.28.1. Adicionar Nmeros de Problemas nas Mensagens de Registo


Tu podes integrar a ferramenta de controlo de problemas da tua escolha com o TortoiseSVN. Para o fazer, ters de definir algumas propriedades que comeam por bugtraq:. Estas devero ser colocadas nas pastas: (Seco 4.17, Configuraes de Projecto) Existem duas maneiras de integrar o TortoiseSVN com os gestores de problemas. Um baseado em cadeias de caracteres simples, a outra baseado em expresses regulares. As propriedades usadas em ambas as abordagens so: bugtraq:url Configura esta propriedade com o URL da tua ferramenta de controlo de problemas. Dever ser um URI propriamente codificado e ter de conter %BUGID%. O %BUGID% substitudo pelo nmero de problema que introduzires. Isto permite ao TortoiseSVN mostrar uma hiperligao na caixa de dilogo de registo, para que quando estiveres a olhar para o registo de revises, possas saltar directamente para a tua ferramenta de identificao de bugs. Tu no precisas de providenciar essa propriedade, mas ento o TortoiseSVN apenas mostrar o nmero

130

Guia de Uso Dirio

do problema, e no a hiperligao para este. E.g. o projecto TortoiseSVN usa http:// issues.tortoisesvn.net/?do=details&id=%BUGID% Poders tambm usar URLs relativos em vez de absolutos. Isto til quando o teu gestor de problemas est no mesmo domnio/servidor que o teu repositrio de fontes. No caso do nome de domnio se alterar, tu no precisars de ajustar a propriedade bugtraq:url. Existem ento duas maneiras de especificar um URL relativo: Se comea com a cadeia de caracteres ^/ assumido que relativo raiz do repositrio. Por exemplo, ^/../?do=details&id=%BUGID% ir ser resolvido para http:// tortoisesvn.net/?do=details&id=%BUGID% se o teu repositrio est localizado em http://tortoisesvn.net/svn/trunk/. Um URL que comece pela cadeia de caracteres / assumido como sendo relativo ao nome do servidor. Por exemplo /?do=details&id=%BUGID% ser resolvido para http:// tortoisesvn.net/?do=details&id=%BUGID% se o teu repositrio est localizado em qualquer ponto do dominio http://tortoisesvn.net. bugtraq:warnifnoissue Fixa este a true se queres que o TortoiseSVN te avise, que o campo de texto do nmero-deproblema est vazio. Valores vlidos so true/false. Se no definido assumido o valor false.

4.28.1.1. Nmero de Problema numa Caixa de Texto


Na abordagem mais simples o TortoiseSVN mostra ao utilizador um campo de entrada separado onde o ID do bug pode ser introduzido. Ento uma linha separada pre/ps anexada mensagem de registo que o utilizador introduziu. bugtraq:message Esta propriedade activa o sistema de controlo de problemas no modo Campo de Entrada. Se esta propriedade fixada ento o TrotoiseSVN ir-te- pedir para introduzires o nmero de problema quando submeteres as tuas alteraes. Ser usado para adicionar uma linha no fim da mensagem de registo. Dever conter %BUGID%, que ser substitudo pelo nmero de problema que introduzires ao submeter. Isto garante que teu registo de submisso contm uma referncia ao nmero de problema, que estar sempre num formato consistente e poder ser analisado pela tua ferramenta de identificao de problemas, de forma a associar o nmero de problema com uma submisso particular. Como exemplo poders usar Issue : %BUGID%, mas tal depender da tua ferramenta. bugtraq:append Esta propriedade define se o bug-ID anexado (true) ao fim da mensagem de registo ou inserido (false) no incio da mensagem de registo. Valores vlidos so true/false. Se no definido, assumido o valortrue para que os projectos j existentes no sejam danificados. bugtraq:label Este texto mostrado pelo TortoiseSVN na caixa de dilogo submeter, para etiquetar a caixa de edio onde irs introduzir o nmero do problema. Se no fixado, ser mostrado Bug-ID / Issue-Nr:. Tem em mente que a janela no ser redimensionada para acomodar esta etiqueta, pelo que, mantm o tamanho da etiqueta abaixo dos 20-25 caracteres. bugtraq:number Se configurado a true s sero permitidos nmeros no campo de texto do nmero-de-problema. Uma excepo a vrgula para que possas separar vrios nmeros. Valores vlidos so true/ false. Se no definido, assumido true.

4.28.1.2. Nmeros de Problema Recorrendo a Expresses Regulares


Na abordagem com as expresses regulares, o TortoiseSVN no mostra um campo de entrada separado, mas marca a parte da mensagem de registo que o utilizador introduz, e que reconhecida pelo controlador de problemas. Isto efectuado enquanto o utilizador escreve a mensagem de registo. Tambm significa

131

Guia de Uso Dirio

que o ID do problema pode estar algures dentro da mensagem de registo! Este mtodo muito mais flexvel e o utilizado pelo prprio projecto do TortoiseSVN. bugtraq:logregex Esta propriedade activa o sistema de controlo de bugs no modo Regex. Ele contm uma nica expresso regular ou duas expresses regulares separadas por uma nova linha. Se so usadas duas expresses, ento a primeira usada como um pr-filtro para encontrar as expresses que contm os IDs dos problemas. A segunda expresso extrai ento os IDs dos bugs encontrados, a partir do resultado da primeira regex. Isto permite-te usar uma lista de IDs de problemas e as expresses, em linguagem natural, que desejes. e.g. poders resolver vrios problemas e incluir uma string com esta: Esta alterao resolve os assuntos #23, #24 e #25 Se queres apanhar os IDs dos problemas, como usado na expresso acima no interior da mensagem de registo, podes usar as seguintes strings regex, que so as usadas pelo projecto TortoiseSVN: [Ii]ssues?:?(\s*(,|and)?\s*#\d+)+ and (\d+) A primeira expresso pega nos assuntos #23, #24 and #25 a partir da mensagem de registo circundante. A segunda regex extrai simples nmeros decimais a partir da sada da primeira regex, pelo que ir retornar 23, 24 e 25 para serem usados como IDs de problemas. Dividindo um pouco a primeira regex, esta deve comear com a palavra issue, e possivelmente em maisculas. Esta opcionalmente seguida por um s (mais de um assunto) e tambm opcionalmente por dois pontos. Isto seguido por um mais grupos, cada um tendo frente zero ou mais espaos em branco, e um opcionalmente uma vrgula ou and e mais espaos opcionais. Finalmente existe um # obrigatrio e um tambm obrigatrio nmero decimal. Se s for usada uma expresso, ento os IDs dos problemas descobertos tero de ter correspondncia nos grupos da string regex. Exemplo: [Ii]ssue(?:s)? #?(\d+) Este mtodo requerido por alguns controladores de assuntos, e.g. trac, mas mais difcil a construo da regex. Ns recomendamos que s uses este mtodo se a documentao do teu controlador de assuntos te disser para o fazer. Se no ests familiarizado com as expresses regulares, d uma vista de olhos na introduo em http://en.wikipedia.org/wiki/Regular_expression, e na documentao em linha e tutorial em http:// www.regular-expressions.info/. Se ambas as propriedades bugtraq:message e bugtraq:logregex esto configuradas, toma precedncia a logregex

Dica
Mesmo que no tenhas um controlador de assuntos, com um gancho de pr-submisso a analisar a tua mensagem de registo, poders ainda usar isto para converter os assuntos mencionados nas tuas mensagens de registo em hiperligaes! E mesmo que no precises das hiperligaes, os nmeros de problemas aparecero como uma coluna separada na caixa de dilogo registo, tornando mais fcil encontrar as alteraes que esto relacionadas com um assunto em particular. Algumas propriedades tsvn: requerem um valor true/false. O TortoiseSVN tambm entende yes como sinnimo para true e no como sinonimo para false.

Configurar Propriedades em Pastas


Essas propriedades devem ser configuradas em pastas para o sistema funcionar. Quando submetes um ficheiro ou pasta, as propriedades so lidas dessa pasta. Se as propriedades no

132

Guia de Uso Dirio

so a encontradas, o TortoiseSVN ir pesquisar atravs, e em direco do topo, da rvore de pastas para as encontrar, at encontrar uma pasta no versionada, ou a raiz da rvore (eg. C:\). Se tens a certeza que cada utilizador s checou-a, a partir do e.g. trunk/ e no de alguma subpasta, suficiente configurar as propriedades na pasta trunk/. Se no tens a certeza devers configurar as propriedades em cada subpasta, recursivamente. Configurar uma propriedade na profundidade da hierarquia do projecto sobrepem-se configurao em nveis superiores (mais perto do trunk/ ). For tsvn: properties only you can use the Recursive checkbox to set the property to all sub-folders in the hierarchy, without also setting it on all files.

No existe informao do Controlador de Assuntos no Navegador de Repositrio


Because the issue tracker integration depends upon accessing subversion properties, you will only see the results when using a checked out working copy. Fetching properties remotely is a slow operation, so you will not see this feature in action from the repo browser. A integrao com o controlador de assuntos no est restricta ao TortoiseSVN; pode tambm ser usada por qualquer cliente Subversion. Para mais informaes, consulta o Issue Tracker Integration Specification [http://tortoisesvn.googlecode.com/svn/trunk/doc/issuetrackers.txt] completo no repositrio fonte do TortoiseSVN. ( Seco 3, O TortoiseSVN grtis! explica-te como aceder ao repositrio).

4.28.2. Obter Informaes do Gestor de Problemas


A seco anterior ocupa-se com a adio da informao do problema nas mensagens de registo. Mas se tu precisares de obter informaes do teu gestor de problemas? A caixa de dilogo submeter tem um interface COM que permite a integrao com um programa externo, que consegue comunicar com o teu gestor. Tipicamente tu poders querer consultar o gestor para obter a lista de problemas abertos atribudos a ti, de modo a que possas seleccionar os problemas que estaro a ser tratados nesta submisso. Tal interface, qualquer que seja, claro altamente especfico ao teu sistema de gesto de problemas pelo que no poderemos fornecer esta parte, e descrever como criar tal programa est fora do mbito deste manual. A definio de interface e amostras de plugins em C# e C++/ATL podem ser obtidas na pasta contrib em repositrio do TortoiseSVN [http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/ issue-tracker-plugins]. (Seco 3, O TortoiseSVN grtis! explica-te como aceder ao repositrio). Um resumo da API tambm fornecido em Captulo 6, Interface IBugtraqProvider Outro exemplo (funcional) de plugin em C# o Gurtle [http://code.google.com/p/gurtle/] que implementa o interface COM necessrio para interagir com o gestor de assuntos do Google Code [http://code.google.com/ hosting/]. Para efeitos de demonstrao, vamos supor que o teu administrador de sistemas providenciou-te um plugin de gestor de problemas que tu instalaste, e entretanto configuraste algumas das tuas cpias de trabalho para usar o plugin, na caixa de dilogo de preferncias do TortoiseSVN. Quando abres a caixa de dilogo Submeter a partir de uma cpia de trabalho para a qual o plugin foi atribudo, vers um novo boto no topo da caixa de dilogo.

133

Guia de Uso Dirio

Figura 4.50. Caixa de dilogo de exemplo da consulta ao gestor de problemas


Neste exemplo tu podes seleccionar um ou mais problemas abertos. O plugin pode ento gerar um texto, especialmente formatado, que adicionar tua mensagem de registo.

4.29. Integrao com visualizadores de repositrio Web-based


Existem disponveis vrios visualizadores de repositrio web-based para o uso com o Subversion, tais como o ViewVC [http://www.viewvc.org/] e o WebSVN [http://websvn.tigris.org/]. O TortoiseSVN providncia um meio de ligar-se com esses visualizadores. Tu podes integrar um visualizador de repositrio, da tua escolha, com o TortoiseSVN. Para o fazeres ters de configurar algumas propriedades que definem a ligao. Estas tm de ser configuradas nas pastas: (Seco 4.17, Configuraes de Projecto) webviewer:revision Configura esta propriedade com o URL do teu visualizador de repositrio, para veres todas as alteraes numa reviso especfica. O URL dever ser devidamente codificado e ter de conter %REVISION%. O %REVISION% ser substituido com o nmero de reviso em questo. Isto permite ao TortoiseSVN mostrar uma entrada do menu de contexto na caixa de dilogo registo Menu de Contexto Ver reviso no visualizador web webviewer:pathrevision Set this property to the URL of your repo viewer to view changes to a specific file in a specific revision. It must be properly URI encoded and it has to contain %REVISION% and %PATH%. %PATH

134

Guia de Uso Dirio

% is replaced with the path relative to the repository root. This allows TortoiseSVN to display a context menu entry in the log dialog Context Menu View revision and path in webviewer For example, if you right-click in the log dialog bottom pane on a file entry /trunk/src/file then the %PATH% in the URL will be replaced with /trunk/src/file. Podes tambm usar URLs relativos em vez de absolutos. Isto til no caso do teu visualizador web estar no mesmo domnio/servidor que o teu repositrio fonte. No caso de o nome de domnio alguma vez for alterado, no ters de ajustar as propriedades webviewer:revision e webviewer:pathrevision. O formato o mesmo para a propriedade bugtraq:url. Consultar Seco 4.28, Integrao com Sistemas de controlo de problemas/Gestores de Problemas.

Configurar Propriedades em Pastas


Essas propriedades devem ser configuradas em pastas para o sistema funcionar. Quando submetes um ficheiro ou pasta, as propriedades so lidas dessa pasta. Se as propriedades no so a encontradas, o TortoiseSVN ir pesquisar atravs, e em direco do topo, da rvore de pastas para as encontrar, at encontrar uma pasta no versionada, ou a raiz da rvore (eg. C:\). Se tens a certeza que cada utilizador s checou-a, a partir do e.g. trunk/ e no de alguma subpasta, suficiente configurar as propriedades na pasta trunk/. Se no tens a certeza devers configurar as propriedades em cada subpasta, recursivamente. Configurar uma propriedade na profundidade da hierarquia do projecto sobrepem-se configurao em nveis superiores (mais perto do trunk/ ). For tsvn: properties only you can use the Recursive checkbox to set the property to all sub-folders in the hierarchy, without also setting it on all files.

No Repo Viewer Links from Repository Browser


Because the repo viewer integration depends upon accessing subversion properties, you will only see the results when using a checked out working copy. Fetching properties remotely is a slow operation, so you will not see this feature in action from the repo browser.

4.30. Preferncias do TortoiseSVN


Para descobrires para que servem as diferentes preferncias deixa, por um segundo, o ponteiro do rato sobre as caixas-edio/caixas-verificao... e uma etiqueta com uma til dica, ir aparecer.

4.30.1. Preferncias Gerais

135

Guia de Uso Dirio

Figura 4.51. A Caixa de Dilogo Preferncias, Pgina Geral


Esta caixa de dilogo permite-te especificar a tua lngua de preferncia, e preferncias especficas do Subversion. Lngua Selecciona a lngua do teu interface de utilizador. O que que esperavas? Verifica automaticamente, cada semana, a existncia de novas verses Se verifcada, o TortoiseSVN ir contactar, uma vez por semana, o seu stio de descarga para ver se existe disponvel uma verso mais nova do programa. Usa Verificar agora se queres uma resposta imediata. A nova verso, se existir, no ser logo descarregada; recebers simplesmente uma caixa de dilogo de informao, que te dir que, tens disponvel uma nova verso. Sons do sistema O TortoiseSVN tem trs sons personalizados que estos instalados por defeito. Erro Anncio Aviso Podes seleccionar diferentes sons (ou deslig-los completamente) usando o Painel de Controlo do Windows. Configurar uma atalho para o Painel de Controlo. Padro global para ignorar arquivos

Padres globais para ignorar so usados para evitar que ficheiros no versionados apaream, por exemplo, na caixa de dilogo submeter. Os ficheiros que correspondam ao padro so tambm ignorados ao importar. Ignora ficheiros ou pastas apenas ao digitares o seu nome ou extenso. Os padres so separados por espaos e.g. bin obj *.bak *.~?? *.jar *.[Tt]mp. Esses padres no devem incluir qualquer separador de caminho. De salientar que, tambm no existe

136

Guia de Uso Dirio

maneira de diferenciar pastas de ficheiros. Consultar Seco 4.13.1, Correspondncia de Padres em Listas de Ignorados para mais informao sobre a sintaxe de correspondncia-de-padres. Nota que os padres de ignorar que aqui especificas tambm afectaram outros clientes do Subversion, que correres no teu PC, incluindo o cliente de linha de comando.

Cuidado
Se usares o ficheiro de configurao do Subversion para configurares o padro global-ignores, ele ir-se- sobrepor preferncia que efectuaste aqui. O ficheiros de configurao do Subversion pode ser acedido usando o Editar, como aqui descrito. Este padro de ignorar ir afectar todos os teus projectos. No versionado pelo que no afectar outros utilizadores. Por contraste podes tambm usar a propriedade versionada svn:ignore para excluir ficheiros ou pastas do controlo de verses. Consulta Seco 4.13, Ignorando Ficheiros E Pastas para mais informaes. Alterar datas de ficheiros para a hora da ltima submisso Esta opo diz ao TortoiseSVN para alterar a data dos ficheiros para a hora da ltima submisso, quando efectuares um checkout ou actualizao. De outra maneira o TortoiseSVN ir usar a data corrente. Se fores um programador geralmente melhor usar a data corrente, porque os sistemas de construo olham normalmente para os carimbos de tempo, para decidir que ficheiros precisam de ser compilados. Se usares a hora da ltima submisso, e reverteres para uma reviso anterior de ficheiro, o teu projecto poder no compilar como esperado. Ficheiro de configurao do Subversion Usa Editar para editar directamente o ficheiro de configurao do Subversion. Algumas preferncias no podem ser editadas directamente pelo TortoiseSVN e necessitam ento de ser aqui configuradas. Para mais informaes sobre o ficheiro config do Subversion consulta o Runtime Configuration Area [http://svnbook.red-bean.com/en/1.5/svn.advanced.confarea.html]. de interesse particular a seco no Automatic Property Setting [http://svnbook.red-bean.com/ en/1.5/svn.advanced.props.html#svn.advanced.props.auto], e configurada aqui. De notar que o Subversion pode ler a informao d configurao de vrios locais, e necessitas de conhecer qual deles tem prioridade. Consulta o Configuration and the Windows Registry [http://svnbook.redbean.com/en/1.5/svn.advanced.confarea.html#svn.advanced.confarea.windows-registry] para mais informaes. Usa pastas _svn em vez de .svn O VS.NET quando usado com projectos web no consegue lidar com as pastas .svn que o Subversion usa para armazenar a sua informao interna. Isto no um bug no Subversion. O bug no VS.NET e nas extenses frontpage que usa. Consulta Seco 4.30.11, Pastas de Trabalho do Subversion para descobrires mais sobre este problema. Se quiseres alterar o comportamento do Subversion e do TortoiseSVN, podes usar esta caixa-deverificao para configurar a variavel de ambiente que controla isto. Deves ter em conta que ao mudar esta opo, no irs converter automaticamente as cpias de trabalho existentes, para usar a nova pasta de administrao. Ters de o fazer por ti usando um script (L as nossas FAQ) ou simplesmente cria uma cpia de trabalho de fresco.

137

Guia de Uso Dirio

4.30.1.1. Menu de Contexto preferncias

Figura 4.52. A Caixa de Dilogo Preferncias, Pgina Menu de Contexto


Esta pgina permite-te especificar, quais das entradas do menu de contexto do TortoiseSVN, que iro aparecer no menu de contexto principal, e quais aparecero no submenu do TortoiseSVN. Por defeito a maioria dos itens esto desseleccionados e aparecem no submenu. H um caso especial para o Obter Bloqueio. claro que podes promov-lo ao nvel de topo, usando a lista acima mostrada, mas como a maioria dos ficheiros no precisam de bloqueios, isto s adiciona mais confuso. No entanto um ficheiro que tenha a propriedade svn:needs-lock necessitar sempre desta aco de cada vez que editado, ento nesse caso ser muito til t-lo no nivel de topo. Verificando a caixa aqui, significa que quando o ficheiro for seleccionado e tenha a propriedade svn:needs-lock configurada, o Obter Bloqueio ir aparecer sempre no nvel de topo. Se existem alguns caminhos no teu computador onde no queres que o menu de contexto do TortoiseSVN aparea de modo algum, podes list-los na caixa de texto ao fundo.

138

Guia de Uso Dirio

4.30.1.2. Preferncias das Caixas de Dilogo TortoiseSVN 1

Figura 4.53. A Caixa de Dilogo Preferncias, Pgina Dilogos 1


Esta caixa de dilogo permite-te configurar algumas das caixas de dilogo do TortoiseSVN, da maneira que mais gostas delas. Nmero de mensagens de registo por omisso Limita o nmero de mensagens de registo que o TortoiseSVN adquire quando tu seleccionas primeiro o TortoiseSVN Mostrar Registo til para conexes lentas com o servidor. Tu podes sempre usar o Mostrar Todos ou Prximos 100 para obter mais mensagens. Tipo de letra para mensagens de registo Selecciona o tipo de letra e o tamanho usado para mostrar a prpria mensagem de registo, no painel ao meio da caixa de dilogo de Registo de Reviso, e quando na composio das mensagens na caixa de dilogo Submeter. Formato conciso de data/hora nas mensagens de registo Se as longas mensagens padro ocupam muito espao no teu cran, usa o formato conciso. Faa um duplo clique na lista de mensagens de registo para comparar com uma reviso anterior Se te encontras frequentemente a comparar revises no painel de topo da caixa de dilogo Registo, podes usar esta opo para permitir essa aco ao duplo clique. O que no est activo por defeito, porque adquirir as diferenas normalmente um processo moroso e a maior parte das pessoas prefere evitar esperar aps um duplo-clique acidental, que a razo por que esta opo no est activa por defeito. Caixas de Dilogo de Progresso O TortoiseSVN pode fechar automaticamente todas as caixas de dilogo de progresso, quando uma aco finalizada sem erros. Esta preferncia permite-te seleccionar as condies para fechar as caixas de dilogo. A preferncia por defeito (recomendada) Fechar manualmente o que te permite rever todas as mensagens e rever o que aconteceu. No entanto tu podes decidir que queres ignorar alguns tipos de mensagens, e teres a opo da caixa de dilogo a fechar automaticamente, se no existirem alteraes crticas.

139

Guia de Uso Dirio

Fechar automticamente se no houver integraes, adies ou remoes significa que a caixa de dilogo progresso ir fechar-se no caso de actualizaes simples, mas se alteraes do repositrio foram integradas com as tuas, ou se qualquer ficheiros foi adicionado ou removido, a caixa de dilogo permanecer aberta. Ir tambm permanecer aberta se existir algum conflito ou erro durante a operao. Fechar automticamente se no houver integraes, adies ou remoes para operaes locais significa que a caixa de progresso ir fechar como para Fechar automticamente se no houver integraes, adies ou remoes, mas s para operaes locais como adicionar ficheiros ou reverter alteraes. Para operaes remotas a caixa permanecer aberta. Fechar automticamente se no houver conflitos relaxa ainda mais o critrio e fechar a caixa de dilogo mesmo se existem integraes, adies ou remoes. No entanto se existir algum conflito ou erro, a caixa permanecer aberta. Fechar automaticamente se no houver erros fecha sempre a caixa de dilogo mesmo se existirem conflitos. A nica condio que mantm a caixa de dilogo aberta se existir uma condio de erro, que ocorre quando o Subversion no consegue finalizar a tarefa. Por exemplo se uma actualizao falha, porque o servidor no est acessvel, ou uma submisso falha, porque a cpia de trabalho est desactualizada. Usar a reciclagem quando a reverter Quando revertes as modificaes locais, as tuas alteraes so descartadas. O TortoiseSVN d-te uma rede de segurana extra, enviando o ficheiro modificado para o cesto de reciclagem, antes de trazer de volta a cpia pura. Se preferires saltar o cesto de reciclagem desselecciona esta opo. Usar o URL da cpia de trabalho como o URL De: por omisso Na caixa de dilogo integrar, o comportamento por defeito o URL De: ser recordado entre integraes. No entanto, algumas pessoas gostam de executar integraes a partir de muitos pontos diferentes da sua hierarquia, e acham mais fcil comear com o URL da cpia de trabalho corrente. Isto pode ser editado para se referir a um caminho paralelo noutro ramo. Caminho por defeito para colonizar Tu podes especificar o caminho, por defeito, para as colonizaes. Se manteres todas as tuas colonizaes num nico local, ser til ter uma unidade e pasta pr-preenchida, para que s tenhas de adicionar no fim o nome da nova pasta. URL por omisso de colonizao Podes tambm especificar o URL por omisso para colonizaes. Se, com frequncia, colonizas subprojectos de algum grande projecto, poder ser til ter um URL pr-preenchido, para que s tenhas de adicionar o nome do subprojecto no fim.

140

Guia de Uso Dirio

4.30.1.3. Preferncias das Caixas de Dilogo TortoiseSVN 2

Figura 4.54. A Caixa de Dilogo Preferncias, Pgina Dilogos 2


Usar recursividade para entrar em pastas sem controlo de verses Se esta caixa for verificada (estado por defeito), ento sempre que o estado de uma pasta no versionada mostrado na caixa de dilogo Adicionar, Submeter ou Verificar alteraes, cada ficheiro ou pasta filho tambm mostrado. Se desmarcares esta caixa, apenas o pai no versionado mostrado. Desmarcar, reduz a confuso nestas caixas de dilogo. Nesse caso se seleccionares uma pasta no versionada para Adicionar, esta adicionada recursivamente. Usar auto-completamento para caminhos de arquivo e palavras-chave A caixa de dilogo submeter inclui a facilidade de analisar uma lista de nomes de ficheiros a submeter. Quando tu digitas as 3 primeiras letras de um item da lista, a caixa de auto-completamento aparecer, e podes premir o Enter para completar o nome do ficheiro. Verifica a caixa para activar esta funcionalidade. Prazo em segundos at para a anlise para o auto-completamento O analisador do auto-completamento pode ser algo lento se existe um grande nmero de ficheiros a analisar. Este prazo evita que a caixa de submisso seja mantida presa por demasiado tempo. Se ests a perder informao importante de auto-completamento, poders ento estender o valor deste prazo. Usar o verificador ortogrfico apenas quando a tsvn:projectlanguage estiver definida Se no desejas utilizar o verificador ortogrfico para todas as submisses, verifica esta caixa. O verificador ortogrfico ainda estar activo nos projectos onde as suas propriedades o requerer. Mximo de itens a preservar no histrico de mensagens de registo Quando digitas uma mensagem de registo, na caixa de dilogo de registo, o TortoiseSVN armazenaa para possvel reutilizao futuro. Por defeito ir manter as ltimas 25 mensagens de registo para cada repositrio, mas tu podes personalizar aqui esse valor. Se tens muitos repositrios diferentes poders querer reduzir este valor de modo a evitar encher o teu cartrio de registo. De notar que esta preferncia se aplica s a mensagens digitadas neste computador. No tem nada a ver com a cache de registo.

141

Guia de Uso Dirio

Reabrir a caixa de dilogo de submisso e ramificao/etiquetagem aps uma submisso falhada Quando uma submisso falha por alguma razo (a cpia de trabalho precisa de actualizao, gancho de pre-commit rejeita a submisso, error de rede, etc.), tu podes seleccionar esta opo para manter a caixa de dilogo de submeter aberta para nova tentativa. No entanto, devers estar ciente de que isto poder levar a problemas. Se a falha significar que necessitas de actualizar a tua cpia de trabalho e essa actualizao pode levar a conflitos, que tens de resolver primeiro. Seleccionar itens automaticamente O comportamento normal na caixa de dilogo submeter para todos os itens (versionados) modificados serem seleccionados automaticamente para submisso. Se preferires comear com nada seleccionado, e escolher manualmente os itens a submeter, desmarca esta caixa. Contactar o repositrio ao iniciar A caixa de dilogo Verificar alteraes, verifica a cpia de trabalho por defeito, e s contacta o repositrio quando tu clicas Verificar o repositrio. Se queres verificar sempre o repositrio, podes usar esta preferncia para executar automaticamente essa aco. Mostrar caixa de dilogo de Bloqueio antes de bloquear arquivos Quando seleccionas um ou mais ficheiros e de seguida usas TortoiseSVN Bloquear para bloquear esses ficheiros, nalguns projectos costume de escrever uma mensagem de bloqueio a explicar a razo porque os bloqueastes. Se no usares mensagens de bloqueio poders desmarcar esta caixa, de modo a saltares esta caixa de dilogo, e bloquear de imediato os ficheiros. Se usares o comando de bloqueio numa pasta, sers sempre levado presena de uma caixa de dilogo de bloqueio, j que tambm te dar a opo de seleccionar os ficheiros a bloquear. Se o teu projecto est a usar a propriedade tsvn:lockmsgminsize vers a caixa de dilogo bloquear, independentemente desta preferncia, porque o projecto requer mensagens de bloqueio.

4.30.1.4. Preferncias de cor do TortoiseSVN

Figura 4.55. A Caixa de Dilogo Preferncias, Pgina de Cores


Esta caixa de dilogo permite-te configurar as cores do texto usado nas caixas de dilogo do TorotiseSVN, do modo que tu gostas delas.

142

Guia de Uso Dirio

em conflito possvel ou real / obstrudo Um conflito ocorreu durante a actualizao, ou pode ocorrer durante a integrao. A actualizao est obstruda por um ficheiro/pasta existente, no versionado, do mesmo nome que o versionado. Esta cor tambm usada para mensagens de erro nas caixas de dilogo de progresso. arquivos adicionados Itens adicionados ao repositrio. em falta / removido / substitudo Itens removidos do repositrio, desaparecidos ou removidos da cpia de trabalho e substitudos por outro ficheiro do mesmo nome. integrado Alteraes, do repositrio, sucessivamente integradas na CT sem criar qualquer conflito. alterado / copiado Adicionar com histrico, ou caminhos copiados no repositrio. Tambm usado na caixa de dilogo de registo para entradas que incluem itens copiados. N removido Um item que foi removido do repositrio. N adicionado Um item que foi adicionado ao repositrio por uma operao de adio, cpia ou movimentao. Nome de n alterado Um item que cujo nome foi alterado dentro do repositrio. N substituido O item original foi removido e um novo item com o mesmo nome substitui-o.

4.30.2. Preferncias do Grfico de Revises

Figura 4.56. A Caixa de Dilogo Preferncias, Pgina Grfico de Revises

143

Guia de Uso Dirio

Padres de classificao O grfico de revises tenta mostrar uma imagem mais ntida da estrutura do teu repositrio, distinguindo entre o trunk, ramos e etiquetas. Como no existe tal classificao instalada no Subversion, esta informao ento extrada a partir de nomes dos caminhos. As preferncias por defeito assumem que irs utilizar os nomes convencionais em Ingls, como sugerido na documentao do Subversion, mas claro que o uso que lhe ds pode ser diverso. Especifica os padres usados para reconhecer esses caminhos, para tal usa as trs caixas providenciadas. Os padres sero correspondidos, sem distino de maisculas e minsculas, mas devers especific-los em minsculas. Os caracteres livres * e ? funcionaram como de costume e podes usar ; para separar vrios padres. No necessitas incluir qualquer carcter em branco adicional, j que tal ir ser includo na especificao da correspondncia. Modificar Cores So usadas cores no grfico de revises para indicar o tipo do n, i.e. se o n foi adicionado, removido ou renomeado. De modo a te ajudar a identificar as classificaes dos ns, tu podes permitir que o grfico de revises misture cores de modo a te dar tanto a indicao do tipo do n como da classificao. Se a caixa est desmarcada, a cor usada s para indicar o tipo do n. Utiliza a caixa de dilogo de seleco de cor para atribuir as cores especficas usadas.

4.30.2.1. Cores do Grfico de Revises

Figura 4.57. A Caixa de Dilogo preferncias,Pgina Cores do Grfico de Revises


Esta pgina permite-te configurar as cores usadas. Tomar ateno que a cor aqui especificar uma cor slida. A maior parte dos ns colorido usando uma mistura da cor do tipo do n, a cor de fundo, e opcionalmente, a cor de classificao. N Removido Itens que foram removidos, e no copiados para outro lado, na mesma reviso. N Adicionado Itens recentemente adicionados ou copiados (adicionar com histrico).

144

Guia de Uso Dirio

Nome do N Alterado Itens removidos de uma localizao e adicionados noutra, na mesma reviso. N Alterado Alteraes simples, sem qualquer adio ou remoo. N no Alterado Poder ser utilizada para mostrar a reviso usada como origem da cpia, mesmo quando nenhuma alterao (ao item objecto do grfico) tenha ocorrido nessa reviso. N HEAD Reviso corrente HEAD, no repositrio. N WC Se optares por mostrar um n extra para a tua cpia de trabalho modificada, anexado tua reviso da ltima submisso no grfico, usa esta cor. Limite do N WC Se optares por mostrar se a cpia de trabalho foi modificada, usa esta cor de moldura no n WC, para o caso de serem encontradas alteraes. Ns Etiquetas Ns classificados como etiquetas podem ser misturados com esta cor. Ns do Tronco Ns classificados com tronco poder ser misturados com esta cor. Marcadores de Etiqueta Dobrada Se usares etiquetas dobradas, para poupares espao, as etiquetas so marcadas na cpia de origem como um bloco desta cor. Marcadores de N Seleccionado Quando clicas com o boto esquerdo num n seleccionando-o, o marcador usado para indicar esta seleco um bloco desta cor. Tiras Essas cores so usadas quando o grfico dividido em sub-rvores, e o fundo colorido com tiras alternadas, para ajudar a identificar as rvores separadas.

145

Guia de Uso Dirio

4.30.3. Preferncias de Sobreposio de cones

Figura 4.58. A Caixa de Dilogo Preferncias, Pgina Sobreposio de cones


Esta pgina permite-te escolher os itens para os quais o TortoiseSVN ir mostrar sobreposies de cones. Por defeito as sobreposies de cones e menus de contexto iro aparecer em todas as caixas de abrir/ guardar, tal como no Explorador do Windows. Se queres que apaream s no Explorador do Windows verifica a caixa Mostrar sobreposies e menu de atalho apenas no explorador. Aos itens ignorados e no versionados no normalmente dada uma sobreposio. Se queres mostrar sobreposies nesses casos, basta verificares as caixas. Podes tambm optar por marcar as pastas como modificadas, se estas contm itens no versionados. Isto pode ser til para te lembrar que criaste novos ficheiros que no foram ainda adicionados ao controlo de verses. Esta opo s est disponvel quando usas a opo de cache (ver abaixo) de estado por defeito. Sendo que demora algum tempo a adquirir o estado da cpia de trabalho, o TortoiseSVN usa a cache para armazenar o estado, par que o explorador no fique muito tempo pendurado a mostrar as sobreposies. Podes escolher o tipo da cache que o TortoiseSVN dever usar, de acordo com o teu sistema e tamanho de cpia de trabalho: Por omisso Armazena na cache toda a informao num processo separado (TSVNCache.exe). Esse processo monitoriza todas as unidades procura de alteraes, e adquire de novo o estado, se algum ficheiro dentro da cpia de trabalho foi modificado. O processo corre com a prioridade mais baixa para que os outros programas no fiquem pendurados por sua causa. Isso tambm significa que a informao do estado no dada em tempo real, mas pode levar alguns segundos at as sobreposies serem actualizadas. Vantagem: As sobreposies mostram o estado recursivamente, i.e. se um ficheiro, bem no interior da tua cpia de trabalho alterado, todas as pastas at raiz da cpia de trabalho iro tambm mostrar a sobreposio modificado. E visto que o processo pode enviar notificaes para a shell, as sobreposies na rvore da vista esquerda, tambm sero normalmente alteradas.

146

Guia de Uso Dirio

Desvantagem: O processo corre continuamente mesmo que no estejas a trabalhar nos teus projectos. E tambm usa cerca de 10-50 MB de RAM, dependendo do nmero e tamanho das tuas cpias de trabalho. Shell A cache executada directamente do interior da dll da extenso da shell, mas apenas para a pasta correntemente visvel. De cada vez que navegas para outra pasta, a informao de estado novamente adquirida. Vantagem: necessita apenas de muito pouca memria ( volta de 1MB de RAM) e pode mostrar o estado em tempo real. Desvantagem: Visto que s uma pasta posta em cache, as sobreposies no mostram recursivamente o estado. Para cpias de trabalho grandes, pode demorar mais tempo a mostrar uma pasta no explorador do que a opo por omisso. A coluna mime-type tambm no est disponvel. Nenhum Com esta preferncia o TortoiseSVN no adquire de modo algum o estado no Explorador. Devido a isso, os ficheiros no obtm uma sobreposio e as pastas s obtm a sobreposio 'normal', se estiverem versionadas. Nenhuma outra sobreposio mostrada, e tambm no est disponveis colunas extra. Vantagem: No usa absolutamente nenhuma memria adicional e no desacelera o Explorador ao navegar. Desvantagem: No mostrada no Explorador a informao de estado de ficheiros e pastas.Para veres se as tuas cpias de trabalho foram modificadas ters de usar a caixa de dilogo Verificar alteraes. O prximo grupo permite-te seleccionar quais as classes de armazenamento que devem mostrar sobreposies. Por defeito s unidades fixas esto seleccionadas. Podes mesmos desactivar todas as sobreposies de cones, mas qual seria a piada? Unidades de rede podem ser muito lentas, pelo que por defeito, os cones no so mostrados para cpias de trabalho localizadas em partilhas de rede. Unidades Flash USB parecem ser um caso especial em que o tipo de unidade identificado pelo prprio dispositivo. Algumas aparecem como unidades fixas e outra como amovveis. O Excluir caminhos usado para comunicar ao TortoiseSVN que esses caminhos para os quais no deve ser mostrado sobreposies de cones e colunas de estado. Isto til se tens algumas cpias de trabalho muito grandes, contendo s bibliotecas que no irs alterar e por isso no necessitam de sobreposies. por exemplo: f:\development\SVN\Subversion ir desactivar as sobreposies s nessa pasta especfica. Podes no entanto ver ainda as sobreposies, em todas as pastas e ficheiros, dentro dessa pasta. f:\development\SVN\Subversion* ir desactivar as sobreposies em todos os ficheiros e pastas cujos caminhos comecem por f:\development\SVN\Subversion. Isso significa que no vers sobreposies para qualquer ficheiro ou pasta debaixo desse caminho. O mesmo se aplica para o Incluir caminhos. excepo de que para esses caminhos as sobreposies so mostradas mesmo se estiverem desactivadas para esse tipo de unidade, ou por um caminho de excluso, especificado acima. Os utilizadores por vezes perguntam como essas preferncias interagem, e a resposta definitiva :

if (path is in include list)

147

Guia de Uso Dirio

show overlays if (path is allowed drive type) AND (path is not in exclude list) show overlays A lista de incluidos mostrar sempre as sobreposies. De outro modo as sobreposies so sempre mostradas para todas as unidades marcadas a no ser que o caminho esteja excludo. O TSVNCache.exe tambm usa esses caminhos para restringir a sua monitorizao. Se tu queres olhar s para algumas pastas em particular, desactiva todos os tipos de unidades e inclui apenas as pastas que tu queres que sejam especificamente monitoradas.

Excluir unidades SUBST


conveniente usar uma unidade SUBST para aceder s tuas cpias de trabalho, e.g. usando o comando

subst T: C:\TortoiseSVN\trunk\doc No entanto isto pode provocar a no actualizao das sobreposies, j que o TSVNCache s receber uma notificao quando o ficheiro alterado, e essa normalmente o caminho original. Isto significa que as tuas sobreposies no caminho subst poder nunca ser actualizado. Uma maneira fcil de dar a volta a isto excluir o caminho original de mostrar sobreposies, para que as sobreposies apaream, por sua vez, no caminho subst. Por vezes tu excluirs reas que contm cpias de trabalho, que poupam o TSVNCache de monitorar e pesquisar por alteraes, mas querers mesma a indicao visual que tais pastas so versionadas. A caixa de verificao mostrar pastas excludas como normais te ir permitir fazer isso. Com esta opo as pastas versionadas em qualquer rea excluda (tipo de unidade no verificada, ou especificamente excluda) ser mostrada como normal e actualizada, com uma marca de verificao verde. Isto lembrarte- que ests a olhar para uma cpia de trabalho, mesmo que as sobreposies da pasta no estejam correctas. Os ficheiros no obtero nenhuma sobreposio. Ter em ateno que os menus de contexto ainda funcionaro mesmo que as sobreposies no sejam mostradas. Como excepo especial a isto, as unidades A: e B: nunca so consideradas para a opo Mostrar pastas excludas como 'normais'. Isto porque o Windows fora a busca na unidade, o que pode resultar num atraso de vrios segundos quando o Explorador arranca, mesmo se o teu PC no tem uma unidade de disquete.

148

Guia de Uso Dirio

4.30.3.1. Seleco de Conjunto de cones

Figura 4.59. A Caixa de Dilogo preferncias, Pgina Conjunto de cones


Podes alterar o conjunto de sobreposies para o que mais gostares. De notar que se alterares o conjunto de sobreposies, poders ter de reiniciar o teu computador para as alteraes surtam efeito.

4.30.4. Preferncias de Rede

149

Guia de Uso Dirio

Figura 4.60. A Caixa de Dilogo Preferncias, Pgina de Rede


Aqui podes configurar o teu servidor proxy, se necessitas de passar atravs da firewall da tua empresa. Se necessitas de configurar as preferncias do proxy por repositrio, precisas de configurar isso no ficheiro servers do Subversion. Usa o Editar para ir l directamente. Consulta o Runtime Configuration Area [http://svnbook.red-bean.com/en/1.5/svn.advanced.confarea.html] para mais detalhes em como utilizar este ficheiro. Podes tambm especificar qual o programa que o TortoiseSVN dever usar para estabelecer uma ligao segura com um repositrio svn+ssh. Ns recomendamos que uses o TortoisePlink.exe. Este uma verso do popular programa Plink e includo com o TortoiseSVN, mas compilado como uma aplicao sem janelas, para que no tenhas uma caixa de dilogo de DOS a aparecer-te sempre que te autentiques. Devers especificar o caminho completo para o executvel. Que no caso do TortoisePlink.exe ser, por defeito, a pasta bin do TortoiseSVN. Usa o boto Navegar para te ajudar a localiz-lo. Tem em conta que, se o caminho contiver espaos devers p-los entre aspas, e.g.

"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" Um efeito secundrio de no ter uma janela que no h sitio para onde irem as mensagens de erro, pelo que se a autenticao falha, irs receber apenas uma mensagem dizendo algo como No foi possivel escerver para o destino por defeito. Por essa razo, ns recomendamos que primeiro configure usando o Plink padro. Quando tudo j est a funcionar, podes ento usar o TortoisePlink com exactamente os mesmos parmetros. O TortoisePlink no tem nenhuma documentao sua, porque apenas uma variante menor do Plink. Descobre mais sobre os parmetros de linha de comandos a partir de PuTTY website [http:// www.chiark.greenend.org.uk/~sgtatham/putty/] Para evitares estares sempre a ser interrompido para inserires a palavra-passe, poders considerar o uso de uma ferramenta de cache da palavra-passe como o Pageant. Esta est tambm disponvel para descarga no stio do PuTTY.

150

Guia de Uso Dirio

Finalmente, configurar o SSH no servidor e clientes um processo no trivial, que est para alm do mbito deste documento. No entanto poders encontrar um manual nas FAQs so TortoiseSVN, listadas em Subversion/TortoiseSVN SSH How-To [http://tortoisesvn.net/ssh_howto].

4.30.5. Preferncias de Programas Externos

Figura 4.61. A Caixa de Dilogo Preferncias, Pgina Visualizador de Comparao


Aqui, poders definir os teus prprios programas de Comparao/Integrao que o TortoiseSVN dever usar. A preferncia por defeito a utilizao do TortoiseMerge, que est instalado juntamente com o TortoiseSVN. Consulta o Seco 4.10.5, Ferramentas de Comparao/Integrao, para uma lista de alguns programas de Comparao/Integrao que as pessoas podem usar com o TortoiseSVN.

4.30.5.1. Visualizador de Comparaes


Um programa de comparao externo pode ser usado para comparar diferentes revises de ficheiros. O programa externo ir necessitar de obter os nomes dos ficheiros, a partir da linha de comandos juntamente como outras opes. O TortoiseSVN usa parmetros de substituio prefixados com %. Quando encontra um desses, ir substitui-lo pelo valor apropriado. A order dos parmetros ir depender do programa de comparao que usares. %base O ficheiro original sem as tuas alteraes %bname O ttulo da janela para o ficheiro base %mine O teu ficheiro, com as tuas alteraes. %yname O ttulo da janela do teu ficheiro Os ttulos das janelas no so nomes de ficheiros puros. O TortoiseSVN trata-os como nomes a mostrar e cria os nomes de acordo com tal. Pelo que e.g. se fores efectuar uma comparao de um ficheiro na reviso

151

Guia de Uso Dirio

123 com um ficheiro da tua cpia de trabalho, os nomes sero Nome do ficheiro : reviso 123 e Nome do ficheiro : cpia de trabalho For example, with ExamDiff Pro: C:\Path-To\ExamDiff.exe %base %mine --left_display_name:%bname --right_display_name:%yname or with KDiff3: C:\Path-To\kdiff3.exe %base %mine --L1 %bname --L2 %yname or with WinMerge: C:\Path-To\WinMerge.exe -e -ub -dl %bname -dr %yname %base %mine or with Araxis: C:\Path-To\compare.exe /max /wait /title1:%bname /title2:%yname %base %mine Se usares a propriedade svn:keywords para expandir as plavras-chave, e em particular a reviso do ficheiro, ento poder haver diferenas entre ficheiros, que so puramente devido a valor corrente da palavra-chave. Tambm se usares a svn:eol-style = native o ficheiro BASE ir ter fins-delinha LF puros, enquanto o teu ficheiro ir ter fins-de-linha CR-LF. O TortoiseSVN ir, normalmente e automaticamente, esconder essas diferenas ao analisar primeiro o ficheiro BASE, de modo a expandir as palavras-chave e fins de linha antes de efectuar a operao de comparao. No entanto isto poder levar bastante tempo com grandes ficheiros. Se Converter arquivos ao comparar com a BASE est desmarcado ento o TortoiseSVN ir saltar o pr-processamento dos ficheiros. Podes tambm especificar uma ferramenta diferente de comparao para usares nas propriedades do Subversion. Visto que essas tendem a ser pequenas peas de texto simples, poders querer usar um visualizador mais simples e compacto. Se configuraste uma ferramenta alternativa de comparao, poders aceder ao TortoiseMerge e a ferramenta de terceiros a partir dos menus de contexto.Menu de contexto Comparar usa a ferramenta de comparao primria,e Shift+ Menu de contexto Comparar usa a ferramenta de comparao secundria.

4.30.5.2. Ferramenta de Integrao


Um programa de integrao externo usado para solucionar ficheiros em conflito. A substituio de parmetros usada da mesma maneira que com o Programa de Comparao. %base O ficheiro original, sem as tuas alteraes ou as dos outros %bname O ttulo da janela para o ficheiro base %mine O teu ficheiro, com as tuas alteraes %yname O ttulo da janela do teu ficheiro %theirs o ficheiro, como est no repositrio

152

Guia de Uso Dirio

%tname O titulo da janela para o ficheiro no repositrio %merged o ficheiro em conflito, o resultado da operao de integrao %mname O titulo da janela para o ficheiro integrado Po exemplo para o Perforce Merge: C:\Path-To\P4Merge.exe %base %theirs %mine %merged ou com o KDiff3: C:\Path-To\kdiff3.exe %base %mine %theirs -o %merged --L1 %bname --L2 %yname --L3 %tname ou com o Araxis: C:\Path-To\compare.exe /max /wait /3 /title1:%tname /title2:%bname /title3:%yname %theirs %base %mine %merged /a2 ou com o WinMerge (2.8 ou superior): C:\Path-To\WinMerge.exe %merged

4.30.5.3. Preferncias Avanadas de Comparar/Integrar

Figura 4.62. A Caixa de Dilogo Preferncias, Caixa de Dilogo Comparar/ Integrar Avanados

153

Guia de Uso Dirio

Nas preferncias avanadas, poders definir um programa diferente para comparar e integrar por cada extenso de ficheiro. Por exemplo poders associar o Photoshop como o programa de Comparar para ficheiros .jpg :-) Podes tambm associar a propriedade svn:mime-type com um programa de comparao ou integrao. Para associar usando uma extenso de ficheiro, necessitars de associar a extenso. Usa o .bmp para descrever ficheiros de bitmap do Windows. Para associar usando a propriedade svn:mime-type, especifica o tipo mime incluindo a barrar, por exemplo text/xml.

4.30.5.4. Visualizador de Comparaes Unificadas


Um programa de visualizao para ficheiros de comparao-unificada (ficheiros remendo). No so requeridos parmetros. A opo por defeito verifica por uma associao para ficheiros .diff, e ento para ficheiros .txt. Se no tens um visualizador para ficheiros .diff irs, com muita probabilidade, obter o Notepad. O programa NotePad original do Windows no se comporta bem com ficheiros que no tm o fimde-linha padro CR-LF. Visto que a maioria dos ficheiros de comparao-unificada tm fins-de-linha com LF puro, eles no so visualizados correctamente no NotePad. No entanto podes descarregar uma substituio gratuita para o NotePad em Notepad2 [http://www.flos-freeware.ch/notepad2.html], que no apenas mostra os fins-de-linha correctamente, mas tambm colora as linhas adicionadas e removidas.

4.30.6. Preferncias de Dados Guardados

Figura 4.63. A Caixa de Dilogo, Pgina de Dados Guardados


Para tua comodidade o TortoiseSVN guarda muitas das preferncias que usas, e lembra-se de onde andaste ultimamente. Se quiseres limpar essa cache de dado poders o fazer aqui. Histrico de URL Sempre que povoas uma cpia de trabalho, integras alteraes ou usas o navegador de repositrio, o TortoiseSVN mantm um registo dos URLs recentemente usados e oferece-lhes uma combo box. Por vezes a lista povoada com URLs desactualizados pelo que ser til periodicamente limp-la.

154

Guia de Uso Dirio

Se queres remover um nico item de uma das combo boxes, poders faz-lo no local. Clica apenas na seta para abrir a lista da combo box, move o rato por cima do item que desejas remover e digita Shift+Del. Mensagens de registo (Caixa de dilogo de entrada) O TortoiseSVN armazena as mensagens de registo recentes, que tu introduziste. Elas so armazenadas por repositrio pelo que se acederes a muitos repositrios, essa lista poder crescer bastante. Mensagens de registo (Mostrar caixa de dilogo de registo) O TortoiseSVN faz cache das mensagens de registo trazidas pela caixa de dilogo Mostrar Registo, para te poupar tempo quando a seguir vs o registo. Se algum editar uma mensagem de registo e tens essa mensagem em cache, no irs ver a alterao at limpares a mesma. O uso da cache de mensagens est activado na pgina Caches de Registos. Dimenses e posies de caixas de dilogo Muitas caixas de dilogo lembram-se do tamanho e posio com que tu as usaste por ltimo. Dados de autenticao Quando te autenticas num servidor Subversion o nome de utilizador e a palavra-chave so guardadas localmente na cache, para que no tenhas de estar sempre a introduzi-las. Poders querer limpar esta informao, por razes de segurana, ou porque queres aceder ao repositrio com um nome de utilizador diferente... o Joo sabe que ests a usar este PC? Se queres limpar os dados de autenticao para um servidor em particular, consulta Seco 4.1.5, Autenticao para mais instrues em como encontrar os dados na cache. Registo de aces O TortoiseSVN mantm um registo de tudo o que foi escrito nas caixas de dilogo de progresso. Isto pode ser til para quando, por exemplo, quiseres verificar o que aconteceu num comando recente de actualizao. O ficheiro de registo limitado no seu tamanho e quando cresce demasiado, descartado o contedo mais antigo. Por defeito so mantidas 4000 linhas, mas podes personalizar este nmero. Daqui podes ver o contedo do ficheiro de registo, e tambm limp-lo.

4.30.7. Cache de Registo

155

Guia de Uso Dirio

Figura 4.64. A Caixa de Dilogo Preferncias, Pgina Cache de Registo


Esta caixa de dilogo permite-te configurar a funcionalidade de cache de registo do TortoiseSVN, que retm uma cpia local das mensagens de registo e caminhos alterados, para longas descargas a partir do servidor. O uso da cache de registos pode acelerar dramaticamente a caixa de dilogo de registo e o grfico de revises. Outra funcionalidade til que as mensagens de registo podem ainda ser acedidas em modo fora-de-linha. Activar cache de registos Activa a cache de registo sempre que forem requisitados dados de registo. Se verificada, os dados sero, quando disponveis, adquiridos da cache e qualquer mensagem adquirida do servidor que no j l esteja, ser adicionada. Se a cache estiver desactivada, os dados sero sempre adquiridos directamente do servidor, e no sero armazenados localmente. Permitir URLs ambguos Ocasionalmente poders ter de te ligar a um servidor que usa o mesmo URL para todos os repositrios. Verses antigas do svnbridge podero ter este comportamento. Se necessitas aceder a tais repositrios ters de verificar esta opo. Se no, deixa-a como no verificada, para melhoria da performance. Permitir UUIDs ambguos Alguns servios de hospedagem do a todos os seus repositrios o mesmo UUID. Poders tu prprio o teres feito ao copiar uma pasta de repositrio para criar um novo. Por todo tipo de razes, isto uma m ideia - um UUID deve ser nico. No entanto, a cache de registo poder funcionar nesta situao se tu verificares esta caixa. Se no precisas dela, deixa-a no verificada de modo a melhorar a performance. Se o repositrio no puder ser contactado Se ests a trabalhar fora-de-linha ou se o servidor do repositrio estiver em baixo, a cache de registo poder ser usada na mesma para fornecer as mensagens de registo j mantidas em cache. claro que a cache poder no estar actualizada, pelo que existem opes que te permitem seleccionar se esta funcionalidade dever ser usada.

156

Guia de Uso Dirio

Quando os dados de registo estiverem a ser retirados da cache sem contactar o servidor, a caixa de dilogo que usar essas mensagens, ir mostrar o estado fora-de-linha na sua barra de ttulo. Prazo excedido antes de actualizar a reviso HEAD Quando invocas a caixa de dilogo de registo, normalmente querers contactar o servidor para verificar alguma nova mensagem de registo. Se o valor de prazo excedido configurado aqui diferente de zero, ento o servidor s ser contactado quando o prazo foi excedido desde o ltimo contacto. Isto pode reduzir as viagens de ida e volta ao servidor, se abrires a caixa de dilogo de registo com frequncia e o servidor estiver em baixo, mas os dados aqui mostrados podero no estar completamente actualizados. Se quiseres usar esta funcionalidade, sugerimos o uso do valor de 300 (5 minutos) como um compromisso. Dias de inactividade at as caches pequenas serem removidas Se navegares em muitos repositrios irs acumular muitas caches de registos. Se no as usas activamente, a cache no ir crescer muito pelo que o TortoiseSVN limpa-as aps algum tempo configurado por defeito. Usa este item para controlar a limpeza da cache. Tamanho mximo [kByte] de uma cache inactiva removida Caches grandes so mais dispendiosas de adquirir pelo que o TortoiseSVN s limpa as pequenas. Afina o limite com este valor. Nmero mximo de falhas de ferramentas at remoo da cache Ocasionalmente algo corre mal com a cache e provocado um estoiro. Se isto acontecer a cache normalmente automaticamente removida de modo a prevenir novas ocorrncias do problema. Se usares as, menos estveis, construes nocturnas poders optar por manter a cache de qualquer modo.

4.30.7.1. Repositrios em Cache


Nesta pgina, tu podes ver a lista de repositrios que esto localmente em cache e o espao usado na cache. Se seleccionares um dos repositrios poders ento usar os botes por debaixo da lista. Clica no Actualizar para refrescar completamente a cache e preencher qualquer lacuna. Para um grande repositrio isto poder consumir muito tempo, mas ser til se estiveres prestes a entrar em modo forade-linha e queres a melhor cache disponvel. Clica no boto Exportar para exportar a cache inteira como um conjunto de ficheiros CSV. Isto poder ser til se quiseres processar os dados de registo usando um programa externo, embora seja maioritariamente til aos programadores. Clica no Remover para remover todos os dados em cache, para os repositrios seleccionados. Isto no desactiva a cache para o repositrio, pelo que a prxima vez que requisitares dados de registo, a nova cache ser criada.

157

Guia de Uso Dirio

4.30.7.2. Estatsticas da Cache de Registo

Figura 4.65. A Caixa de Dilogo Preferncias, Estatsticas da Cache de Registo


Clica no boto Pormenores para veres as estatsticas detalhadas para uma cache em particular. Muitos dos campos aqui mostrados so de especial interesse apenas para os programadores do TortoiseSVN, pelo que no sero descritos em detalhe. RAM A quantidade de memria requerida para o servio desta cache. Disco A quantidade de espao em disco usado pela cache. Os dados so comprimidos pelo que a utilizao de disco geralmente razoavelmente modesta. ligao Mostra se o repositrio estava disponvel, da ltima vez que a cache foi usada. ltima actualizao A ltima vez que o contedo da cache foi alterado. ltima actualizao da head A ltima vez que requisitmos a reviso HEAD do servidor. Autores O nmero de diferentes autores com mensagens gravadas na cache.

158

Guia de Uso Dirio

Caminhos O nmero de caminhos listados, como verias ao usar svn log -v. Intervalos omitidos O nmero de intervalos de revises que no adquiridas porque no foram simplesmente requisitadas. Esta uma medida do nmero de lacunas na cache. Reviso mxima O nmero de reviso mais alto armazenado na cache. Nmero de revises O nmero de revises armazenadas na cache. Esta outra medida da completude da cache.

4.30.8. Scripts de Gancho do Lado do Cliente

Figura 4.66. A Caixa de Dilogo Preferncias, Pgina Scripts de Gancho


Esta caixa de dilogo permite-te configurar scripts de gancho, que sero executados automaticamente, quando certas aces do Subversion so executadas. Ao contrrio dos scripts de gancho explicados em Seco 3.3, Scripts de gancho de servidor, estes so executados localmente no cliente. Uma aplicao para tais ganchos poderia ser, chamar um programa como SubWCRev.exe para actualizar os nmeros de verso aps uma submisso, e talvez disparar uma reconstruo. Por vrias razoes de segurana e implementao, os scripts de gancho so definidos localmente na mquina, em vez de propriedades do projecto. Tu defines o que acontece independentemente do que algum submete para o repositrio. claro que tu podes sempre escolher chamar um script que por sua vez est sob controlo de verses.

159

Guia de Uso Dirio

Figura 4.67. A Caixa de Dilogo Preferncias, Configurar Scripts de Gancho


Para adicionar um novo script de gancho, clica simplesmente em Adicionar e preenche os detalhes. Existem correntemente, seis tipos de scripts de gancho disponveis Incio-submisso Chamado antes de aparecer a caixa de dilogo submeter. Poders querer usa-lo, se o gancho modificar um ficheiro versionado e afectar uma lista de ficheiros que necessitam de ser submetidos e/ou de uma mensagem de submisso. No entanto devers ter em conta que, devido ao gancho ser chamado num estgio inicial, a lista completa de objectos seleccionados para submisso no est ainda disponvel. Pr-Submisso Chamado depois de o utilizador clicar no OK na caixa de dilogo submeter, e antes de realmente comear a submisso. Este gancho tem a lista do que ser exactamente submetido. Ps-submisso Chamado aps a submisso finalizar ( com sucesso ou no). Incio-actualizao Chamado antes da caixa de dilogo actualizar-para-reviso aparecer. Pr-actualizao Called before the actual Subversion update begins. Ps-actualizao Called after the update finishes (whether successful or not). Um gancho definido para um caminho em particular na cpia de trabalho. Tu s necessitas de especificar o caminho de nvel superior; se executares uma operao numa subpasta, o TortoiseSVN ir procurar automaticamente para cima, por um caminho que corresponda. A seguir, devers especificar a linha de comando a executar, a comear pelo caminho para o script de gancho ou executvel. Isto poder ser um ficheiro batch, executvel, ou outro qualquer ficheiro que tenha uma associao de ficheiro vlida no Windows, e.g. um script de perl. A linha de comando inclui vrios parmetros que sero preenchidos pelo TortoiseSVN. Os parmetros passados dependem do gancho que for invocado. Cada gancho tem os seus prprios parmetros, que so passados na seguinte ordem: Incio-submisso PATHMESSAGEFILECWD Pr-Submisso PATHDEPTHMESSAGEFILECWD Ps-submisso PATHDEPTHMESSAGEFILEREVISIONERRORCWD

160

Guia de Uso Dirio

Incio-actualizao PATHCWD Pr-actualizao PATHDEPTHREVISIONCWD Ps-actualizao PATHDEPTHREVISIONERRORCWD O significado de cada um desses parmetros descrito aqui: PATH O caminho para um ficheiro temporrio, que contm todos os caminhos para o qual a operao foi iniciada. Cada caminho est numa linha separada, no ficheiro temporrio. DEPTH A profundidade com que a submisso/actualizao executada. Valores possveis so: -2 svn_depth_unknown -1 svn_depth_exclude 0 svn_depth_empty 1 svn_depth_files 2 svn_depth_immediates 3 svn_depth_infinity MESSAGEFILE Caminho para um ficheiro que contm a mensagem de registo para a submisso. O ficheiro contm texto codificado em UTF-8. Aps execuo com sucesso do gancho Incio-de-submisso, a mensagem de registo novamente lida, dando ao gancho a oportunidade de modific-la. REVISION A reviso do repositrio para a qual a actualizao dever ser feita, ou a reviso aps a concluso de uma submisso. ERROR Caminho para um ficheiro contendo a mensagem de erro. Se no houve nenhum erro, o ficheiro estar vazio. CWD A pasta de trabalho corrente com a qual o script est a correr. Esta configurada para a pasta raiz comum a todos os caminhos afectados. Ter em conta que apesar de termos dado nomes por convenincia a esses parmetros, tu no ters de te referir a esses nomes nas configuraes dos ganchos. Todos os parmetros listados para um gancho em particular so sempre passados, quer os queiras ou no ;-) Se queres que ao funcionamento do Subversion espere at a execuo do gancho finalizar, verifica Espere que o script termine.

161

Guia de Uso Dirio

Normalmente tu querers esconder as caixas feias de DOS, enquanto o script corre, ento a Ocultar o script durante a sua execuo est verificada por defeito. Exemplos de scripts de gancho de cliente podem ser encontrados na pasta contrib no repositrio TortoiseSVN [http://tortoisesvn.googlecode.com/svn/trunk/contrib/hook-scripts]. (Seco 3, O TortoiseSVN grtis! explica como aceder ao repositrio).

4.30.8.1. Integrao do Controlador de Problemas


O TortoiseSVN pode usar um plugin COM para consultar os controladores de problemas quando estiver na caixa de dilogo submeter. O uso de tais plugins est descrito em Seco 4.28.2, Obter Informaes do Gestor de Problemas. Se o teu administrador de sistemas forneceu-te um plugin, que j instalaste e registaste, aqui o local para especificares como ele se integra com a tua cpia de trabalho.

Figura 4.68. A Caixa de Dilogo Preferncias, Pgina Integrao com Controlador de Problemas
Clica no Adicionar... para utilizar o plugin com uma cpia de trabalho em particular. Aqui podes especificar o caminho da cpia de trabalho, escolher qual o plugin a usar a partir de um lista drop-down com todos os controladores de problemas registados, e qualquer parmetro a passar. Os parmetros sero especficos ao plugin, mas podero incluir o teu nome de utilizador no controlador de problemas, para que o plugin possa consultar os problemas que te esto atribudos. If you want all users to use the same COM plugin for your project, you can specify the plugin also with the properties bugtraq:provideruuid and bugtraq:providerparams. bugtraq:provideruuid Esta propriedade especifica o UUID COM do IBugtraqProvider, por exemplo {91974081-2DC7-4FB1-B3BE-0DE1C8D6CE4E}. (Neste exemplo o UUID do fornecedor Gurtle bugtraq [http://code.google.com/p/gurtle/], que o fornecedor para o controlador de problemas Google Code [http://code.google.com/hosting/]). bugtraq:providerparams Esta propriedade especifica os parmetros passados para o IBugtraqProvider.

162

Guia de Uso Dirio

Please check the documentation of your IBugtraqProvider plugin to find out what to specify in these two properties.

4.30.9. Preferncias do TortoiseBlame

Figura 4.69. A Caixa de Dilogo Preferncias, Pgina do TortoiseBlame


As preferncias usadas pelo TortoiseBlame so controladas a partir do menu de contexto principal, e no directamente com o prprio TortoiseBlame. Cores O TortoiseBlame pode usar cores de fundo para indicar a idade das linhas num ficheiro. Tu configuras as pontas ao especificar as cores para a reviso mais nova e para a mais velha, e o TortoiseBlame usa uma interpolao linear entre essas duas cores de acordo com a reviso do repositrio, indicada para cada linha. Tipo de letra Tu podes seleccionar o tipo de letra usada para mostrar o texto e tambm o tamanho do ponto a usar. Isto aplica-se tambm ao contedo do ficheiro, ao autor e informao de reviso mostrada no painel esquerdo. Tabuladores Define quantos espaos devero ser usados na expanso, quando um caracter de tabulao for encontrado no contedo do ficheiro.

4.30.10. Registry Settings


A few infrequently used settings are available only by editing the registry directly. It goes without saying that you should only edit registry values if you know what you are doing. Configurao You can specify a different location for the Subversion configuration file using registry location HKCU\Software\TortoiseSVN\ConfigDir. This will affect all TortoiseSVN operations.

163

Guia de Uso Dirio

Cache tray icon To add a cache tray icon for the TSVNCache program, create a DWORD key with a value of 1 at HKCU\Software\TortoiseSVN\CacheTrayIcon. This is really only useful for developers as it allows you to terminate the program gracefully. Debug To show the command line parameters passed from the shell extension to TortoiseProc.exe create a DWORD key with a value of 1 at HKCU\Software\TortoiseSVN\Debug. Context Menu Icons This can be useful if you use something other than the windows explorer or if you get problems with the context menu displaying correctly. create a DWORD key with a value of 0 at HKCU\Software \TortoiseSVN\ShowContextMenuIcons if you don't want TortoiseSVN to not show icons for the shell context menu items. Set this value to 1 to show the icons again. Block Overlay Status If you don't want the explorer to update the status overlays while another TortoiseSVN command is running (e.g. Update, Commit, ...) then create a DWORD key with a value of 1 at HKCU\Software \TortoiseSVN\BlockStatus. Update Check URL HKCU\Software\TortoiseSVN\UpdateCheckURL contains the URL from which TortoiseSVN tries to download a text file to find out if there are updates available. You can also set this under HKLM instead of HKCU if you want, but HKCU overwrites the setting in HKLM. This might be useful for company admins who don't want their users to update TortoiseSVN until they approve it. Filenames without extensions in auto-completion list The auto-completion list shown in the commit message editor displays the names of files listed for commit. To also include these names with extensions removed, create a DWORD key with a value of 1 at HKCU\Software\TortoiseSVN\AutocompleteRemovesExtensions. Explorer columns everywhere The extra columns the TortoiseSVN adds to the details view in Windows Explorer are normally only active in a working copy. If you want those to be accessible everywhere, not just in working copies, create a DWORD key with a value of 1 at HKCU\Software\TortoiseSVN \ColumnsEveryWhere. Merge log separator When you merge revisions from another branch, and merge tracking information is available, the log messages from the revisions you merge will be collected to make up a commit log message. A pre-defined string is used to separate the individual log messages of the merged revisions. If you prefer, you can create a SZ key at HKCU\Software\TortoiseSVN\MergeLogSeparator containing a separator string of your choice. Always blame changes with TortoiseMerge TortoiseSVN allows you to assign external diff viewer. Most such viewers, however, are not suited for change blaming (Seco 4.23.2, Diferenas de responsabilidade), so you might wish to fall back to TortoiseMerge in this case. To do so, create a DWORD key with a value of 1 at HKCU\Software \TortoiseSVN\DiffBlamesWithTortoiseMerge. Current revision highlighting for folders in log dialog The log dialog highlights the current working copy revision when the log is shown for a file. To do the same thing for a folder requires a working copy crawl, which is the default action, but it can be a slow operation for large working copies. If you want to change the operation of this feature you must create a DWORD registry key at HKCU\Software\TortoiseSVN\RecursiveLogRev. A value of 0 disables the feature (no highlighting for folders), a value of 1 (default) will fetch the status recursively (find the highest revision in the working copy tree), and a value of 2 will check the revision of the selected folder itself, but will not check any child items.

164

Guia de Uso Dirio

Make checkout fail if an item of the same name exists By default, if you checkout a working copy over an existing unversioned folder structure, as you might do after import, then any existing which differ from the repository content will be left unchanged and marked as modified. When you come to commit, it is your local copy which will then be sent back to the repository. Some people would prefer the checkout to fail if the existing content differs, so that if two people add the same file the second person's version does not overwrite the original version by mistake. If you want to force checkouts to fail in this instance you must create a DWORD registry key with value 0 at HKCU\Software\TortoiseSVN \AllowUnversionedObstruction.

4.30.11. Pastas de Trabalho do Subversion


O VS.NET 2003 quando usado com projectos web no consegue lidar com as pastas .svn que o Subversion usa para armazenar a sua informao interna. Isto no um bug do Subversion. O bug do VS.NET 2003 e das extenses frontpage que ele usa.

Ter em ateno que o bug est reparado no VS2005 e posteriores verses. A partir da verso 1.3.0 do Subversion e TortoiseSVN, tu podes configurar a varivel de ambiente SVN_ASP_DOT_NET_HACK. Se essa varivel estiver configurada, o Subversion ir usar as pastas _svn em vez das .svn. Tu ters de reiniciar a tua shell para que essa varivel de ambiente tome efeito. Normalmente isso significa reiniciar o PC. Para tornar isto mais fcil, tu podes fazer isto agora a partir da pgina de preferncias gerais, usando uma simples caixa de verificao - consulta Seco 4.30.1, Preferncias Gerais. Para mais informaes, e outras formas de evitar este problema em primeiro lugar, verifica o artigo sobre este assunto nas nossas FAQs [http://tortoisesvn.net/aspdotnethack].

4.31. Passo Final


Doa! Mesmo que o TortoiseSVN e o TortoiseMerge sejam gratuitos, tu podes apoiar os programadores enviando correces e tomando uma papel activo no desenvolvimento. Podes tambm ajudar a alegrar-nos durante as interminveis horas que passamos em frente dos nossos computadores. Enquanto trabalhamos no TortoiseSVN adoramos ouvir msica. E visto que passamos tantas horas no projecto, precisamos de muita msica. Por isso crimos umas listas de desejos, com os nossos CDs e DVDs de msica favoritos : http://tortoisesvn.tigris.org/donate.html Por favor olha tambm para a lista de pessoas que contriburam para o projecto ao enviar correces ou tradues.

165

Captulo 5. O Programa SubWCRev


O SubWCRev um programa de consola do Windows que pode ser usado para ler o estado da cpia de trabalho do Subversion, e opcionalmente executar substituio de palavras-chave num ficheiro template. Isto frequentemente usado como parte do processo de construo, como meio de incorporar informao da cpia de trabalho no objecto que ests a construir. Poder ser usado tipicamente para incluir o nmero de reviso numa caixa Sobre.

5.1. A Linha de Comando SubWCRev


O SubWCRev, por defeito, l o estado Subversion de todos os ficheiros numa cpia de trabalho, incluindo os externos. Ele grava o nmero da mais alta reviso submetida que foi encontrada e a marca temporal dessa reviso, tambm grava se existem alteraes locais na cpia de trabalho ou misturadas, revises actualizadas. O SubWCRev.exe chamado a partir da linha de comando ou de um script e, configurado atravs de parmetros na linha de comandos.

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe] O WorkingCopyPath representa o caminho para a cpia de trabalho a ser verificada. Tu s podes usar o SubWCRev em cpias de trabalho e no directamente no repositrio. O caminho pode ser absoluto ou relativo pasta da cpia de trabalho corrente. Se queres que o SubWCRev execute substituio de palavras-chave, para que campos como a reviso do repositrio e URL sejam gravados num ficheiro de texto, irs necessitar de fornecer um ficheiro template SrcVersionFile e um ficheiro de destino DstVersionFile que contm a verso substituda do template. Existem um nmero de opes que afectam a maneira como o SubWCRev funciona. Se usares mais do que um, eles devem ser especificados como um nico grupo, e.g. teral>-nm

5.2. Substituio de Palavra-Chave


Se forem fornecidos os ficheiros de origem e destino, o SubWCRev copia da fonte para o destino, efectuando a substituio de palavras-chave da seguinte forma: Palavra-chave $WCREV$ $WCDATE$ Descrio Substituda pela mais alta reviso de submisso da cpia de trabalho. Substituda pela data/tempo de submisso da mais alta reviso submetida. Por defeito usado o formato internacional: yyyy-mmdd hh:mm:ss. Em alternativa poders especificar um formato personalizado que poder ser usado com strftime(), por exemplo: $WCDATE=%a %b %d %I:%M:%S %p$. Para uma lista de caracteres de formatao disponveis, consulta o referncia em linha [http://www.cppreference.com/stddate/strftime.html]. Substituda pela data/tempo corrente do sistema. Isto poder ser usado para indicar a altura de construo. A formatao do tempo pode ser usada como descrita para o $WCDATE$. Substituda pelo intervalo de revises actualizada na cpia de trabalho. Se a cpia de trabalho est num estado inconsistente, isto poder ser apenas uma reviso. Se a cpia de trabalho contem revises misturadas, seja devido a estar desactualizada, ou devido a uma actualizao para

$WCNOW$

$WCRANGE$

166

O Programa SubWCRev

Palavra-chave

Descrio reviso deliberada, ento o intervalo de revises ser mostrado no formato 100:200 $WCMIXED?TText:FText$ substituda por TText se existem revises de actualizao misturadas, ou FText se no for o caso. $WCMODS?TText:FText$ substituda por TText se existem alteraes locais, ou FText se no for o caso. Substituda pelo URL do repositrio correspondente ao caminho da cpia de trabalho passada ao SubWCRev. $WCINSVN?TText:FText$ substituda pelo TText se a entrada versionada, ou FText se no o . $WCNEEDSLOCK?TText:FText$ substituda por TText se a entrada tiver a propriedade svn:needs-lock configurada, ou por FText se no for o caso. $WCISLOCKED?TText:FText$ substituda por TText se a entrada estiver bloqueada, ou por FText se no o estiver. Substituda pela data de bloqueio. A formatao do tempo poder ser usada de acordo com o descrito para o $WCDATE$. Substituda pelo nome do autor do bloqueio. Substituda pelo comentrio do bloqueio.

$WCMIXED$ $WCMODS$ $WCURL$ $WCINSVN$ $WCNEEDSLOCK$

$WCISLOCKED$ $WCLOCKDATE$ $WCLOCKOWNER$ $WCLOCKCOMMENT$

Tabela 5.1. Lista de opes de linha de comando disponveis

Dica
Algumas dessas palavras-chave s se aplicam a um nico ficheiro, em vez de a toda a cpia de trabalho, pelo que s far sentido us-los quando o SubWCRev for chamado a examinar um nico ficheiro. Isto aplica-se ao $WCINSVN$, $WCNEEDSLOCK$, $WCISLOCKED$, $WCLOCKDATE$, $WCLOCKOWNER$ e $WCLOCKCOMMENT$.

5.3. Exemplo de Palavra-Chave


O exemplo abaixo mostra como palavras-chave num ficheiro template so substitudas no ficheiro de sada.

// Ficheiro de teste para o SubWCRev: testfile.tmpl char char char char char char *Revision *Modified *Date *Range *Mixed *URL = = = = = = "$WCREV$"; "$WCMODS?Modificado:No modificado$"; "$WCDATE$"; "$WCRANGE$"; "$WCMIXED?Reviso misturada CT:No misturada$"; "$WCURL$";

#if $WCMODS?1:0$ #error A fonte est modificada #endif // Fim de ficheiro Depois de correr o SubWCRev.exe path\to\workingcopy testfile.txt, o ficheiro de sada testfile.txt ir ficar assim: testfile.tmpl

167

O Programa SubWCRev

// Ficheiro de teste para o SubWCRev: testfile.txt char char char char char char *Revision *Modified *Date *Range *Mixed *URL = = = = = = "3701"; "Modificado"; "2005/06/15 11:15:12"; "3699:3701"; "Reviso misturada CT"; "http://project.domain.org/svn/trunk/src";

#if 1 #error A fonte est modificada #endif //Fim de ficheiro

Dica
Um ficheiro como este ser includo na construo, pelo que tu esperas que ele esteja sob controlo de verses. Tem a certeza de versionares o ficheiro template e no o gerado, de outra maneira de cada vez que regenerares o ficheiro de verso, ters de submeter a alterao o que por sua vez significa que o ficheiro de verso necessita ento de ser actualizado.

5.4. Interface COM


Se necessitas de aceder informao de reviso do Subversion a partir de outros programas, podes usar a interface COM do SubWCRev. O objecto a criar o SubWCRev.object e os mtodos suportados so os seguintes: Mtodo .GetWCInfo Descrio Este mtodo percorre a cpia de trabalho, reunindo a informao de reviso. Naturalmente, devers chamar este mtodo antes de poderes aceder informao usando os restantes mtodos. O primeiro parmetro o caminho. O segundo parmetro dever ser true se queres incluir as revises das pastas. Equivalente opo de linha de comando -f. O terceiro parmetro dever ser true se queres incluir svn:externals. Equivalente opo de linha de comando -e. A mais alta reviso de submisso na cpia de trabalho. Equivalente ao $WCREV$ A data/tempo de submisso da mais alta reviso de submisso. Equivalente ao $WCDATE$ O autor da mais alta reviso de submisso, isto , a ltima pessoa que submeteu alteraes na cpia de trabalho. A reviso de actualizao mnima, como mostrada em $WCRANGE$ A reviso de actualizao mxima, como mostrado em $WCRANGE$ True se existem modificaes locais Substitudo com o URL do repositrio, do caminho de cpia de trabalho, usado em GetWCInfo. Equivalente a $WCURL$ True se o item versionado. True se o item tem a propriedade svn:needs-lock configurada. True se o item est bloqueado.

.Revision .Date .Author .MinRev .MaxRev .HasModifications .Url .IsSvnItem .NeedsLocking .IsLocked

168

O Programa SubWCRev

Mtodo .LockCreationDate .LockOwner .LockComment

Descrio String que representa a data em que o bloqueio foi criado, ou uma string vazia se o item no est bloqueado. String que representa o autor do bloqueio, ou uma string vazia se o item no est bloqueado. A mensagem introduzida quando o bloqueio foi criado.

Tabela 5.2. Mtodos COM/automao suportados


O seguinte exemplo mostra como a interface pode ser usada. // testCOM.js - javascript file // test script for the SubWCRev COM/Automation-object filesystem = new ActiveXObject("Scripting.FileSystemObject"); revObject1 revObject2 revObject3 revObject4 = = = = new new new new ActiveXObject("SubWCRev.object"); ActiveXObject("SubWCRev.object"); ActiveXObject("SubWCRev.object"); ActiveXObject("SubWCRev.object");

revObject1.GetWCInfo( filesystem.GetAbsolutePathName("."), 1, 1); revObject2.GetWCInfo( filesystem.GetAbsolutePathName(".."), 1, 1); revObject3.GetWCInfo( filesystem.GetAbsolutePathName("SubWCRev.cpp"), 1, 1); revObject4.GetWCInfo( filesystem.GetAbsolutePathName("..\\.."), 1, 1); wcInfoString1 = "Revision = " + revObject1.Revision + "\nMin Revision = " + revObject1.MinRev + "\nMax Revision = " + revObject1.MaxRev + "\nDate = " + revObject1.Date + "\nURL = " + revObject1.Url + "\nAuthor = " + revObject1.Author + "\nHasMods = " + revObject1.HasModifications + "\nIsSvnItem = " + revObject1.IsSvnItem + "\nNeedsLocking = " + revObject1.NeedsLocking + "\nIsLocked = " + revObject1.IsLocked + "\nLockCreationDate = " + revObject1.LockCreationDate + "\nLockOwner = " + revObject1.LockOwner + "\nLockComment = " + revObject1.LockComment; wcInfoString2 = "Revision = " + revObject2.Revision + "\nMin Revision = " + revObject2.MinRev + "\nMax Revision = " + revObject2.MaxRev + "\nDate = " + revObject2.Date + "\nURL = " + revObject2.Url + "\nAuthor = " + revObject2.Author + "\nHasMods = " + revObject2.HasModifications + "\nIsSvnItem = " + revObject2.IsSvnItem + "\nNeedsLocking = " + revObject2.NeedsLocking + "\nIsLocked = " + revObject2.IsLocked + "\nLockCreationDate = " + revObject2.LockCreationDate + "\nLockOwner = " + revObject2.LockOwner + "\nLockComment = " + revObject2.LockComment;

169

O Programa SubWCRev

wcInfoString3 = "Revision = " + revObject3.Revision + "\nMin Revision = " + revObject3.MinRev + "\nMax Revision = " + revObject3.MaxRev + "\nDate = " + revObject3.Date + "\nURL = " + revObject3.Url + "\nAuthor = " + revObject3.Author + "\nHasMods = " + revObject3.HasModifications + "\nIsSvnItem = " + revObject3.IsSvnItem + "\nNeedsLocking = " + revObject3.NeedsLocking + "\nIsLocked = " + revObject3.IsLocked + "\nLockCreationDate = " + revObject3.LockCreationDate + "\nLockOwner = " + revObject3.LockOwner + "\nLockComment = " + revObject3.LockComment; wcInfoString4 = "Revision = " + revObject4.Revision + "\nMin Revision = " + revObject4.MinRev + "\nMax Revision = " + revObject4.MaxRev + "\nDate = " + revObject4.Date + "\nURL = " + revObject4.Url + "\nAuthor = " + revObject4.Author + "\nHasMods = " + revObject4.HasModifications + "\nIsSvnItem = " + revObject4.IsSvnItem + "\nNeedsLocking = " + revObject4.NeedsLocking + "\nIsLocked = " + revObject4.IsLocked + "\nLockCreationDate = " + revObject4.LockCreationDate + "\nLockOwner = " + revObject4.LockOwner + "\nLockComment = " + revObject4.LockComment; WScript.Echo(wcInfoString1); WScript.Echo(wcInfoString2); WScript.Echo(wcInfoString3); WScript.Echo(wcInfoString4);

170

Captulo 6. Interface IBugtraqProvider


Para obter uma integrao mais intima com os seguidores de problemas, do que usar simplesmente as propriedades bugtraq:, o TortoiseSVN pode fazer uso de plugins COM. Com tais plugins possvel adquirir informao directamente do seguidor de problemas, interagir com o utilizador e providenciar informao de volta ao TortoiseSVN sobre problemas abertos, verificar mensagens de registo introduzidas pelo utilizador, ou mesmo correr aces, aps uma submisso com sucesso, para e.g. fechar um problema. Ns no podemos fornecer informao e tutoriais em como implementar um objecto COM na tua linguagem de programao preferida, mas temos exemplos de plugins em C++/ATL e C#, no nosso repositrio na pasta contrib/issue-tracker-plugins. Nessa pasta poders tambm encontrar requeridos ficheiros de include que necessitas para construir o teu plugin. . (Seco 3, O TortoiseSVN grtis! explica como aceder ao repositrio).

6.1. O interface do IBugtraqProvider


TortoiseSVN 1.5 can use plugins which implement the IBugtraqProvider interface. The interface provides a few methods which plugins can use to interact with the issue tracker. HRESULT ValidateParameters ( // Janela Pai para cada UI que necessita de ser // mostrada durante a validao. [in] HWND hParentWnd, // O parametro de string que necessita de ser validada. [in] BSTR parameters, // A string valida? [out, retval] VARIANT_BOOL *valid ); This method is called from the settings dialog where the user can add and configure the plugin. The parameters string can be used by a plugin to get additional required information, e.g., the URL to the issue tracker, login information, etc. The plugin should verify the parameters string and show an error dialog if the string is not valid. The hParentWnd parameter should be used for any dialog the plugin shows as the parent window. The plugin must return TRUE if the validation of the parameters string is successful. If the plugin returns FALSE, the settings dialog won't allow the user to add the plugin to a working copy path. HRESULT GetLinkText ( // Janela pai para qualquer (erro) de UI que necessite de ser mostrado. [in] HWND hParentWnd, // O parametro string, para o caso de necessitares de falar com o teu // web service (e.g.) para descobrires qual o texto correcto. [in] BSTR parameters, // Que texto queres mostrar? // Use the current thread locale. [out, retval] BSTR *linkText ); The plugin can provide a string here which is used in the TortoiseSVN commit dialog for the button which invokes the plugin, e.g., "Choose issue" or "Select ticket". Make sure the string is not too long,

171

Interface IBugtraqProvider

otherwise it might not fit into the button. If the method returns an error (e.g., E_NOTIMPL), a default text is used for the button. HRESULT GetCommitMessage ( // Janela pai para o UI do teu fornecedor. [in] HWND hParentWnd, // Parmetros para o teu fornecedor. [in] BSTR parameters, [in] BSTR commonRoot, [in] SAFEARRAY(BSTR) pathList, // O texto j presente na mensagem de registo. // O teu fornecedor dever incluir este texto na nova mensagem, // quando apropriado. [in] BSTR originalMessage, // O novo texto para a mensagem de registo. // Isto substituir a mensagem original. [out, retval] BSTR *newMessage ); This is the main method of the plugin. This method is called from the TortoiseSVN commit dialog when the user clicks on the plugin button. The parameters string is the string the user has to enter in the settings dialog when he configures the plugin. Usually a plugin would use this to find the URL of the issue tracker and/or login information or more. The commonRoot string contains the parent path of all items selected to bring up the commit dialog. Note that this is not the root path of all items which the user has selected in the commit dialog. The pathList parameter contains an array of paths (as strings) which the user has selected for the commit. The originalMessage parameter contains the text entered in the log message box in the commit dialog. If the user has not yet entered any text, this string will be empty. The newMessage return string is copied into the log message edit box in the commit dialog, replacing whatever is already there. If a plugin does not modify the originalMessage string, it must return the same string again here, otherwise any text the user has entered will be lost.

6.2. A interface IBugtraqProvider2


No TortoiseSVN 1.6 foi adicionada uma nova interface que providncia mais funcionalidades aos plugins. Esta interface IBugtraqProvider2 herda da IBugtraqProvider. HRESULT GetCommitMessage2 ( // Janela pai para o UI do teu fornecedor. [in] HWND hParentWnd, // Parametros do teu fornecedor. [in] BSTR parameters, // O URL comum da submisso [in] BSTR commonURL, [in] BSTR commonRoot, [in] SAFEARRAY(BSTR) pathList, // O Texto j presente na tua mensagem de submisso. // O teu fornecedor dever incluir este texto na nova mensagem, // quando apropriado. [in] BSTR originalMessage, //Tu podes atribuir a uma submisso propriedades de reviso personalisadas // atravs da configurao dos dois prximos parmetros.

172

Interface IBugtraqProvider

// nota: Ambos os safearrays devero ser do mesmo comprimento. // Para cada nome de propriedade dever existir um valor de propriedade! // O contedo do campo bugID (se mostrado) [in] BSTR bugID, // Contedo modificado do campo bugID [out] BSTR * bugIDOut, // A lista de nomes das propriedades de reviso. [out] SAFEARRAY(BSTR) * revPropNames, // A lista de valores de propriedades de reviso. [out] SAFEARRAY(BSTR) * revPropValues, // O novo texto para a mensagem de submisso. // Isto substitui a mensagem original [out, retval] BSTR * newMessage ); This method is called from the TortoiseSVN commit dialog when the user clicks on the plugin button. This method is called instead of GetCommitMessage(). Please refer to the documentation for GetCommitMessage for the parameters that are also used there. The parameter commonURL is the parent URL of all items selected to bring up the commit dialog. This is basically the URL of the commonRoot path. The parameter bugID contains the content of the bug-ID field (if it is shown, configured with the property bugtraq:message). The return parameter bugIDOut is used to fill the bug-ID field when the method returns. The revPropNames and revPropValues return parameters can contain name/value pairs for revision properties that the commit should set. A plugin must make sure that both arrays have the same size on return! Each property name in revPropNames must also have a corresponding value in revPropValues. If no revision properties are to be set, the plugin must return empty arrays.

HRESULT CheckCommit ( [in] HWND hParentWnd, [in] BSTR parameters, [in] BSTR commonURL, [in] BSTR commonRoot, [in] SAFEARRAY(BSTR) pathList, [in] BSTR commitMessage, [out, retval] BSTR * errorMessage ); This method is called right before the commit dialog is closed and the commit begins. A plugin can use this method to validate the selected files/folders for the commit and/or the commit message entered by the user. The parameters are the same as for GetCommitMessage2(), with the difference that commonURL is now the common URL of all checked items, and commonRoot the root path of all checked items. The return parameter errorMessage must either contain an error message which TortoiseSVN shows to the user or be empty for the commit to start. If an error message is returned, TortoiseSVN shows the error string in a dialog and keeps the commit dialog open so the user can correct whatever is wrong. A plugin should therefore return an error string which informs the user what is wrong and how to correct it.

HRESULT OnCommitFinished ( // Janela pai para qualquer (erro) UI que precisa de ser mostrado. [in] HWND hParentWnd, // A raiz comum para todos os caminhos que foram submetidos.

173

Interface IBugtraqProvider

[in] BSTR commonRoot, // Todos os caminhos que foram submetidos. [in] SAFEARRAY(BSTR) pathList,

// O texto j presente na mensagem de submisso. [in] BSTR logMessage, // A reviso da submisso. [in] ULONG revision,

// Um erro a mostrar ao utilizador se esta funo // retorna algo para alm de S_OK [out, retval] BSTR * error ); This method is called after a successful commit. A plugin can use this method to e.g., close the selected issue or add information about the commit to the issue. The parameters are the same as for GetCommitMessage2.

HRESULT HasOptions( // Para quando o fornecedor providenciar opes [out, retval] VARIANT_BOOL *ret ); This method is called from the settings dialog where the user can configure the plugins. If a plugin provides its own configuration dialog with ShowOptionsDialog, it must return TRUE here, otherwise it must return FALSE.

HRESULT ShowOptionsDialog( // Janela pai para a caixa de dilogo opes [in] HWND hParentWnd, // Parmetros para o teu fornecedor. [in] BSTR parameters, // A string parmetros [out, retval] BSTR * newparameters ); This method is called from the settings dialog when the user clicks on the "Options" button that is shown if HasOptions returns TRUE. A plugin can show an options dialog to make it easier for the user to configure the plugin. The parameters string contains the plugin parameters string that is already set/ entered. The newparameters return parameter must contain the parameters string which the plugin constructed from the info it gathered in its options dialog. That paramameters string is passed to all other IBugtraqProvider and IBugtraqProvider2 methods.

174

Apndice A. Questes Mais Frequentes (FAQ)


Porque o TortoiseSVN est a ser desenvolvido a todo o momento, por vezes difcil manter a documentao completamente actualizada. Ns mantemos uma FAQ em linha [http:// tortoisesvn.tigris.org/faq.html] que contm a seleco das questes que nos so perguntadas na maioria das listas de correio do TortoiseSVN, <dev@tortoisesvn.tigris.org> e <users@tortoisesvn.tigris.org>. Ns tambm mantemos um projecto Issue Tracker [http://issues.tortoisesvn.net] que te pode dizer sobre algumas das coisas que ns temos nas nossas listas de afazeres, e bugs que j foram resolvidos. Se pensas que encontraste um bug, ou queres pedir uma nova funcionalidade, verifica primeiro aqui para veres se algum j antes teve a mesma ideia. If you have a question which is not answered anywhere else, the best place to ask it is on one of the mailing lists. <users@tortoisesvn.tigris.org> is the one to use if you have questions about using TortoiseSVN. If you want to help out with the development of TortoiseSVN, then you should take part in discussions on <dev@tortoisesvn.tigris.org>.

175

Apndice B. Como Farei Para...


Este apndice contm solues para problemas/questes que poders ter tido ao usar o TortoiseSVN.

B.1. Mover/copiar muitos ficheiros de uma vez s


Mover/Copiar ficheiros simples poder ser feito usando o TortoiseSVN Renomear.... Mas se pretendes mover/copiar muitos ficheiros, desta maneira ser muito lento e trabalhoso. A forma recomendada ser atravs do arrastar com o boto direito dos ficheiros para uma nova localizao. Simplesmente clica com o boto direito nos ficheiros que queres mover/copiar, sem largar o boto do rato. Ento arrasta os ficheiros para uma nova localizao e ento larga o boto do rato. O menu de contexto ir aparecer, onde poders escolher Menu de Contexto SVN Copiar para aqui arquivos com controlo de verses ou Menu de Contexto SVN Mover para aqui item(s) com controlo de verses.

B.2. Forar utilizadores a introduzir uma mensagem de registo


Existem duas maneiras de impedir os utilizadores de submeter com uma mensagem de registo vazia. Uma especfica ao TortoiseSVN, a outra funciona para todos os clientes do Subversion mas requerendo acesso directo ao servidor.

B.2.1. Script-gancho no servidor


Se tens acesso directo ao servidor do repositrio, poders instalar um script de gancho pre-commit, que rejeita todas as submisses com uma mensagem de registo vazia ou muito curta. Na pasta do repositrio no servidor, existe uma subpasta hooks que contm alguns exemplos de scripts de gancho que podes usar. O ficheiro pre-commit.tmpl contm uma amostra de script que ir rejeitar submisses se no for fornecida mensagem de registo, ou a mesma for muito curta. O ficheiro tambm contm comentrios em como instalar/usar este script. Segue apenas as instrues nesse ficheiro. Este mtodo o mtodo recomendado se os teus utilizadores, para alm do TortoiseSVN, tambm usam outros clientes de Subversion. A desvantagem que a submisso rejeitada pelo servidor, e por isso os utilizadores iro obter uma mensagem de erro. O cliente no pode saber, antes da submisso, que ela ser rejeitada. Se queres que o TortoiseSVN tenha o boto OK desactivado, at que a mensagem de registo seja suficientemente longa, ento usa por favor o mtodo descrito abaixo.

176

Como Farei Para...

B.2.2. Propriedades do projecto


O TortoiseSVN usa propriedades para controlar algumas das suas funcionalidades. Uma dessas propriedades a propriedade tsvn:logminsize. Se tu configuras essa propriedade numa pasta, ento o TortoiseSVN ir desactivar o boto OK em todas as caixas de dilogo submeter, at o utilizador introduza uma mensagem de registo com pelo menos um comprimento igual ao especificado na propriedade. Para informao detalhada sobre essas propriedades de projecto, por favor consulte Seco 4.17, Configuraes de Projecto

B.3. Actualizar ficheiros seleccionados a partir do repositrio


Normalmente tu actualizas a tua cpia de trabalho usando TortoiseSVN Actualizar. Mas se tu s queres seleccionar alguns ficheiros novos que um colega adicionou, sem simultaneamente integrar quaisquer alteraes em outros ficheiros, necessitas ento de uma abordagem diferente. Usa TortoiseSVN Verificar alteraes, e clica em Verificar repositrio para veres o que foi alterado no repositrio. Selecciona os ficheiros que queres actualizar localmente e usa o menu de contexto para actualizar apenas esses ficheiros.

B.4. Reverter (Anular) revises no repositrio


B.4.1. Usar a caixa de dilogo registo de reviso
A maneira mais fcil para reverter as alteraes de uma nica reviso, ou de um intervalo de revises, usar a caixa de dilogo registo de revises. Este tambm o mtodo a usar, se tu queres descartar alteraes recentes e criar uma reviso anterior nova HEAD. 1. Selecciona o ficheiro ou pasta na qual tu necessitas de reverter as alteraes. Se queres reverter todas as alteraes, esta dever ser a pasta de nvel de topo. 2. Selecciona TortoiseSVN Mostrar registo para mostrar uma lista de revises. Poders necessitar de usar os botes Mostrar Todos ou Prximos 100 para mostrar as revises em que ests interessado. 3. Selecciona a reviso que queres reverter. Se queres anular um intervalo de revises, selecciona o primeiro e mantm premida a tecla Shift enquanto seleccionas a ltima. Ter em conta que, para revises mltiplas, o intervalo dever ser continuo e sem falhas. Clicar com o boto direito nas revises seleccionadas e ento selecciona Menu de Contexto Reverter alteraes a partir desta reviso. 4. Ou se tu queres tornar uma reviso anterior a nova reviso HEAD, clica com o boto direito na reviso seleccionada e selecciona o Menu de Contexto Reverter para esta reviso. Isto ir descartar todas as alteraes aps a reviso seleccionada. Tu reverteste as alteraes na tua cpia de trabalho. Verifica os resultados, e ento submete as alteraes.

B.4.2. Usa a caixa de dilogo integrar


Para anular um grande intervalo de revises poders usar a caixa de dilogo Integrar. O mtodo anterior usa a integrao por detrs do pano; este mtodo usa-a explicitamente. 1. Na tua cpia de trabalho selecciona TortoiseSVN Integrar. 2. No campo De: introduz o URL completo da pasta do ramo ou etiqueta, contendo as alteraes que tu queres reverter na tua cpia de trabalho. Este dever surgir como o URL por defeito.

177

Como Farei Para...

3. No campo Da Reviso introduz o nmero de reviso em que correntemente ests. e tens a certeza que mais ningum est efectuar alteraes, podes usar a reviso HEAD. 4. Tem a certeza que est verificada a caixa Use "From:" URL 5. No campo Para Reviso introduz o nmero de reviso para o qual queres reverter, ou seja a anterior primeira reviso a ser revertida 6. Clica no OK para completar a integrao Tu reverteste as alteraes na tua cpia de trabalho. Verifica os resultados, e ento submete as alteraes.

B.4.3. Usa o svndumpfilter


Visto que o TortoiseSVN nunca perde dados, as tuas revises revertidas ainda existem como revises intermdias no repositrio. S a reviso HEAD foi alterada para um estado anterior. Se tu queres fazer desaparecer completamente revises do teu repositrio, apagando todos os vestgios de qualquer existncia, ters de usar medidas mais extremas. A no ser que exista uma razo muito boa para o fazer, no recomendado. Uma possvel razo seria a que algum submetesse um documento confidencial num repositrio pblico. A nica maneira de remover dados do repositrio usar a ferramenta de linha de comando do Subversion svnadmin. Tu poders encontrar a descrio de como isto se processa em Repository Maintenance [http://svnbook.red-bean.com/en/1.5/svn.reposadmin.maint.html].

B.5. Comparar duas revises de um ficheiro ou pasta


Se queres comparar duas revises na histria de um item, por exemplo as revises 100 e 200 do mesmo ficheiro, usa apenas TortoiseSVN Mostrar registo para listar a histria de revises desse ficheiro. Selecciona duas revises que queres comparar e ento usa Menu de Contexto Comparar Revises. Se queres comparar o mesmo item em duas rvores diferentes, por exemplo o trunk e um ramo, podes usar o navegador de repositrio para abrir ambas as rvores e seleccionar o ficheiro em ambos os locais, e ento usar Menu de Contexto Comparar Revises. Se tu queres comparar duas rvores para ver o que foi alterado, por exemplo o trunk e uma entrega etiquetada, podes usar TortoiseSVN Navegador de Repositrio Selecciona os dois ns a comparar e usa Menu de Contexto Comparar revises HEAD. Isto ir mostrar uma lista de ficheiros alterados, e tu podes ento seleccionar ficheiros individuais para ver as alteraes em detalhe. Tu podes tambm exportar a estrutura de rvore contendo todos os ficheiros alterados, ou simplesmente uma lista de ficheiros alterados. Consulta Seco 4.10.3, Comparando Pastas para mais informaes. Em alternativa usa Menu de Contexto Comparao Unificada de Revises HEAD para ver um sumrio de todas as diferenas com um contexto minimal.

B.6. Incluir um subprojecto comum


Por vezes tu querers incluir outro projecto na tua cpia de trabalho, talvez uma biblioteca de cdigo. Tu no querers criar um duplicado deste cdigo no teu repositrio, porque ento, tu irs perder ligao com o cdigo original (e mantido). Ou talvez tenhas vrios projectos que partilham cdigo aqui. Existem pelo menos 3 maneiras de lidar com isto.

B.6.1. Usa o svn:externals


Configurar a propriedade svn:externals para uma pasta no teu projecto. Esta propriedade consiste em uma ou mais linhas; cada linha tem o nome de uma subpasta que querers usar como pasta de checkout

178

Como Farei Para...

para cdigo comum, e o URL do repositrio do qual queres efectuar aqui checkout. Para mais detalhes consultar Seco 4.18, Itens Externos. Submeter a nova pasta. Agora quando actualizares, o Subversion trar uma cpia desse projecto do seu repositrio para a tua cpia de trabalho. As subpastas, se necessrio, sero automaticamente criadas. De cada vez que actualizares a tua principal cpia de trabalho, irs tambm receber a ltima verso de todos os projectos externos. If the external project is in the same repository, any changes you make there there will be included in the commit list when you commit your main project. Se o projecto externo est num repositrio diferente, qualquer alterao que fizeres no mesmo, ser notificada quando submeteres o teu projecto principal, no entanto, ters de submeter essas alteraes externas separadamente. Dos trs mtodos descritos, este o nico que no requer instalao no lado do cliente. Assim que os externos sejam especificados nas propriedades da pasta, todos os clientes iro adquirir pastas povoadas, assim que actualizarem.

B.6.2. Usar uma cpia de trabalho aninhada.


Cria uma nova pasta no teu projecto para conter o cdigo comum, mas no o adiciones ao Subversion. Selecciona TortoiseSVN Checkout para a nova pasta e efectua o checkout da cpia do cdigo comum l para dentro. Agora tu tens uma cpia de trabalho separada, aninhada na tua cpia de trabalho principal. As duas cpias de trabalho so independentes. Quando tu submetes alteraes na cpia pai as alteraes na CT aninhada so ignoradas. por sua vez quando tu actualizas o pai a CT aninhada no ser actualizada.

B.6.3. Usa uma localizao relativa


Se usas o mesmo ncleo de cdigo comum em vrios projectos, e no queres manter mltiplas cpias de trabalho em cada projecto que o usa, poders apenas efectuar um checkout numa localizao separada que estar relacionada com todos os outros projectos que a usam. Por exemplo:

C:\Projects\Proj1 C:\Projects\Proj2 C:\Projects\Proj3 C:\Projects\Common e referncia o cdigo comum recorrendo a um caminho relativo, e.g. ..\..\Common\DSPcore. Se os teus projectos esto espalhados por localizaes no relacionadas, poders usar uma variante que consiste em, colocar o cdigo comum numa localizao e usar uma letra de unidade de rede para mapear essa localizao para algo que possas fixar nos teus projectos, e.g. Efectuar checkout do cdigo comum para D:\Documents\Framework ou C:\Documents and Settings\{login}\My Documents\framework e ento usar

SUBST X: "D:\Documents\framework" para criar o mapeamento de unidade usado no teu cdigo. Ento o teu cdigo poder usar localizaes absolutas.

#include "X:\superio\superio.h" Este mtodo s ir funcionar num ambiente apenas-PCs, e precisars de documentar os mapeamentos de unidade de rede, para que a tua equipa saiba onde esto esses ficheiros misteriosos. Este mtodo para uso estrito em ambientes de desenvolvimento fechado e no recomendado para uso geral.

179

Como Farei Para...

B.7. Criar um atalho para um repositrio


Se precisas com frequncia de abrir o navegador de repositrio numa localizao especfica, podes criar um atalho de ambiente de trabalho, usando o interface de automao para o TortoiseProc. Cria apenas um novo atalho e aponta-o para:

TortoiseProc.exe /command:repobrowser /path:"url/to/repository" claro que necessitas de inserir o URL do repositrio real.

B.8. Ignorar ficheiros que j esto versionados


Se tu acidentalmente adicionaste alguns ficheiros que deveriam ter sido ignorados, como que os tiras do controlo de verses sem os perderes? Talvez tenhas o teu prprio ficheiro de configurao do IDE, que no faz parte do projecto, mas que levou bastante tempo a configurar ao teu modo. Se ainda no submeteste a adio, ento tudo o que tens de fazer usa o TortoiseSVN Reverter... para anular a adio. Devers ento adicionar o(s) ficheiro(s) lista de ignorados, para que eles no sejam adicionados outra vez por engano. If the files are already in the repository, you have to do a little more work. 1. Hold the Shift key to get the extended context menu and use TortoiseSVN Delete (keep local) to mark the file/folder for deletion from the repository without losing the local copy. 2. TortoiseSVN Commit the parent folder. 3. Add the file/folder to the ignore list so you don't get into the same trouble again.

B.9. Remover uma cpia de trabalho do controlo de verses


Se tu tens uma cpia de trabalho que queres converter de volta a uma pasta simples, sem as pastas .svn, podes simplesmente export-la para ela prpria. Consulta Seco 4.26.1, Remover uma cpia de trabalho do controlo de verses para descobrir como o fazer.

B.10. Remover uma cpia de trabalho


Se tu tens uma cpia de trabalho que j no necessitas, como te livrares dela de modo correcto? Fcil - apenas apaga-a no Explorador do Windows! Cpias de trabalho so entidades locais privadas auto contidas.

180

Apndice C. Dicas teis para Administradores


Este anexo contm solues para problemas/questes que tu possas ter quando s responsvel por instalar o TortoiseSVN em mltiplos computadores clientes.

C.1. Instalar o TortoiseSVN via politicas de grupo


O instalador do TortoiseSVN um ficheiro MSI, o que significa que no devers ter problemas a adicionar esse ficheiro MSI s polticas de grupo do teu controlador de domnio. Uma boa abordagem de como fazer isso poder ser encontrada no artigo 314934 da base de conhecimento da Microsoft: http://support.microsoft.com/?kbid=314934. As verses 1.3.0 e superior do TortoiseSVN tm de ser instaladas sob Configuration de Computador e no sob Configurao de Utilizador. Isto porque essas verses necessitam das novas DLLs CRT e MFC, que s podem ser instaladas por computador e no por utilizador. Se precisas mesmo de instalar o TortoiseSVN numa base por utilizador, ento deves primeiro instalar o pacote MFC e CRT verso 8 da Microsoft em cada computador, se queres instalar o TortoiseSVN como por utilizador.

C.2. Redireccionar a verificao de actualizao


O TortoiseSVN, com a periodicidade de alguns dias, verifica se existe uma nova verso disponvel. Se existir disponvel uma nova verso, uma caixa de dilogo aparece a informar o utilizador sobre esse facto.

Figura C.1. A Caixa de Dilogo Actualizao


Se s responsvel por muitos utilizadores num domnio poders querer que os teus utilizadores s usem verses que tu aprovaste, e no tenham instalada a ltima verso. Provavelmente no querers que aparea a caixa de dilogo de actualizao, para que os teus utilizadores no vo imediatamente actualizar. As verses 1.4.0 e superior do TortoiseSVN permitem-te redireccionar a verificao de actualizao para o teu servidor de intranec. Tu podes configurar a chave do registo HKCU\Software\TortoiseSVN \UpdateCheckURL (valor string) para um URL a apontar para um ficheiro de texto na tua intranet. Esse ficheiro de texto tem de ter o seguinte formato:

1.4.1.6000

181

Dicas teis para Administradores

Est disponvel uma nova verso do TortoiseSVN para descarregares!! http://192.168.2.1/downloads/TortoiseSVN-1.4.1.6000-svn-1.4.0.msi A primeira linha desse ficheiro a string da verso. Devers ter a certeza que esta condiz com a string da verso exacta do pacote de instalao do TortoiseSVN. A segunda linha um texto personalizado mostrado na caixa de dilogo de actualizao. Podes escrever aqui o que entenderes. Tem apenas em ateno que o espao limitado, mensagens muito longas sero truncadas! A terceira linha o URL para o pacote da nova instalao. Este URL aberto quando o utilizador clica na mensagem personalizada na caixa de dilogo de actualizao. Tu tambm podes apenas apontar o utilizador para uma pgina web em vez de directamente para um ficheiro MSI. O URL aberto com o browser por defeito, pelo que se especificares uma pgina web, essa pgina aberta e mostrada ao utilizador. Se especificares o pacote MSI o browser ir interrogar o utilizador a guardar o ficheiro MSI localmente.

C.3. Configurar a varivel de ambiente SVN_ASP_DOT_NET_HACK


As of version 1.4.0 and later, the TortoiseSVN installer doesn't provide the user with the option to set the SVN_ASP_DOT_NET_HACK environment variable anymore, since that caused many problems and confusions with users which always install everything no matter if they know what it is for. Mas essa opo est s escondida para o utilizador. Podes ainda forar o instalador do TortoiseSVN a configurar essa varivel de ambiente fixando a propriedade ASPDOTNETHACK a TRUE. Por exemplo, tu podes arrancar o instalador da seguinte forma:

msiexec /i TortoiseSVN-1.4.0.msi ASPDOTNETHACK=TRUE

C.4. Desactivar entradas do menu de contexto


Como na verso 1.5.0 e superior, o TortoiseSVN permite-te desactivar (na realidade, esconder) entradas do menu de contexto. Visto que esta funcionalidade, que no dever ser usada de nimo leve mas s se existir uma razo forte, no tem GUI para isto e ter de ser feita directamente no registo. Isto pode ser usado para desactivar certos comandos para que os utilizadores no os usem. Mas por favor, tem em conta que s as entradas do menu de contexto no explorador so escondidos, e os comandos continuam disponveis atravs de outros meios, e.g. a linha de comandos ou mesmo noutras caixas de dilogo no prprio TortoiseSVN! As chaves de registo que guardam a informao de que entradas de menu de contexto so mostradas, so HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskLow e HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskHigh. Cada uma dessas entradas de registo um valor DWORD, com cada bit a corresponder a uma entrada especfica do menu. Um bit activo, significa que a entrada de menu correspondente est desactivada. Valor 0x0000000000000001 0x0000000000000002 0x0000000000000004 0x0000000000000008 0x0000000000000010 0x0000000000000020 0x0000000000000040 0x0000000000000080 0x0000000000000100 Entrada de menu Checkout Actualizar Submeter Adicionar Reverter Limpar Resolver Trocar Importar

182

Dicas teis para Administradores

Valor 0x0000000000000200 0x0000000000000400 0x0000000000000800 0x0000000000001000 0x0000000000002000 0x0000000000004000 0x0000000000008000 0x0000000000010000 0x0000000000020000 0x0000000000040000 0x0000000000080000 0x0000000000100000 0x0000000000200000 0x0000000000400000 0x0000000000800000 0x0000000001000000 0x0000000002000000 0x0000000004000000 0x0000000008000000 0x0000000010000000 0x0000000020000000 0x0000000040000000 0x0000000080000000 0x2000000000000000 0x4000000000000000 0x8000000000000000

Entrada de menu Exportar Criar repositrio aqui Ramo/Etiqueta Integrar Remover Alterar nome Actualizar para reviso Comparar Mostrar Registo Editar Conflitos Reposicionar Verificar alteraes Ignorar Navegador de Repositrio Responsabilizar Criar Correco Aplicar Correco Grfico de revises Bloquear Libertar Bloqueio Propriedades Comparar com URL Remover itens no versionados Preferncias Ajuda Sobre

Tabela C.1. Entradas de menu e seus valores


Exemplo: para desactivar as entradas de menu Reposicionar, o Remover itens no versionados e o Preferncias, adiciona os valores atribuidos a essas entradas do seguinte modo:

0x0000000000080000 + 0x0000000080000000 + 0x2000000000000000 = 0x2000000080080000 o valor DWORDo mais baixo (0x80080000) dever ser ento armazenado na HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskLow, o valor DWORD mais alto (0x20000000) em HKEY_CURRENT_USER\Software\TortoiseSVN \ContextMenuEntriesMaskHigh. Para re-activar de novo as entradas do menu, simplesmente apaga as duas chaves de registo.

183

Apndice D. Automatizar o TortoiseSVN


Visto que todos os comandos do TortoiseSVN so controlados atravs de parmetros de linha de comandos, tu podes automatiz-los com scripts de batch ou arrancar comandos especficos e caixas de dilogo a partir de outros comandos (e.g. o teu editor de texto preferido).

Importante
Lembra-te que o TortoiseSVN um cliente de GUI e este guia de automao mostra-te como fazer as caixas de dilogo do TortoiseSVN aparecer, para colectar a entrada do utilizador. Se tu queres escrever um script que no requer entrada de dados, devers usar em alternativa, o cliente de linha de comandos oficial do Subversion.

D.1. Comandos TortoiseSVN


O programa de GUI do TortoiseSVN chama-se TortoiseProc.exe. Todos os comandos so especificados com o parmetro /command:abcd onde abcd o nome do comando requerido. A maioria desses comandos necessitam pelo menos de um argumento de caminho, que dado com / path:"some\path". Na tabela seguinte o comando refere-se ao parmetro /command:abcd e o caminho refere-se ao parmetro /path:"some\path". Visto que alguns dos comandos podem necessitar de uma lista de caminhos de destinos (e.g. submeter vrios ficheiros especficos), o parmetro /path pode requerer vrios caminhos, separados pelo caracter *. O TortoiseSVN usa ficheiros temporrios para passar mltiplos argumentos entre a extenso da shell e o programa principal. A partir do TortoiseSVN 1.5.0 o parmetro /notempfile obsoleto e no mais necessrio adicion-lo. A caixa de dilogo que usada para submisses, actualizaes e muitos mais comandos fica usualmente aberta depois do comando ter acabado at o utilizador premir o boto OK. Isto pode ser alterado ao verificar a opo correspondente na caixa de dilogo preferncias. Mas ao usar essa preferncia, ir-se- fechar a caixa de dilogo de progresso independentemente de iniciares o comando a partir de um ficheiro de batch ou a partir do menu de contexto do TortoiseSVN. Para especificar uma localizao diferente para o ficheiro de configurao, usa o parmetro /configdir:"path\to\config\directory". Isto ir substituir o caminho por defeito, incluindo qualquer configurao do registo. To close the progress dialog at the end of a command automatically without using the permanent setting you can pass the /closeonend parameter. /closeonend:0 no fechar automaticamente a caixa de dilogo /closeonend:1 fechar automaticamente se no existem erros /closeonend:2 fechar automaticamente se no existem erros e conflitos /closeonend:3 fechar automaticamente se no existem erros, conflitos e integraes /closeonend:4 auto close if no errors, conflicts and merges for local operations A tabela abaixo lista todos os comandos que podem ser acedidos usando a linha de comandos TortoiseProc.exe. Como descrito acima, esses devero ser usados na forma /command:abcd. Na tabela omitido o prefixo /command por questes de espao.

184

Automatizar o TortoiseSVN

Comando :about :log

Descrio Mosta a caixa de dilogo Sobre. Esta tambm mostrada se no dado nenhum comando. Opens the log dialog. The /path specifies the file or folder for which the log should be shown. Three additional options can be set: /startrev:xxx, /endrev:xxx and /strict Abre a caixa de dilogo checkout. O /path especfica a directoria destino e o /url especfica o URL de onde efectuar o checkout. Abre a caixa de dilogo importar. O /path especfica a pasta com os dados a importar. Updates the working copy in /path to HEAD. If the option /rev is given then a dialog is shown to ask the user to which revision the update should go. To avoid the dialog specify a revision number /rev:1234. Other options are /nonrecursive and /ignoreexternals. Abre a caixa de dilogo submeter. O /path especfica a pasta de destino ou a lista de ficheiros a submeter. Tu podes tambm especificar a opo / logmsg para passar uma mensagem de registo pr-definida para a caixa de dilogo submeter. Ou se no queres passar a mensagem de registo na linha de comandos, usa /logmsgfile:path, onde o caminho aponta para um ficheiro que contm a mensagem de registo. Para pr-preencher a caixa do ID-Problema ( no caso de teres configurado correctamente a integrao com os seguidores de bugs), podes usar para isso o /bugid:"o id do bug aqui". Adiciona ao controlo de verses os ficheiros em /path Reverte as modificaes locais de uma cpia de trabalho. O /path diz quais os itens a reverter. Cleans up interrupted or aborted operations and unlocks the working copy in /path. Marca um ficheiro em conflito em /path como resolvido. Se for dado o / noquestion ento a resoluo feita sem perguntar primeiro ao utilizador se ela dever ser mesmo feita. Cria um repositrio em /path Abre a caixa de dilogo trocar. O /path especfica a pasta destino. Exporta a cpia de trabalho em /path para outra pasta. Se o /path apontar para uma pasta no versionada, a caixa de dilogo perguntar por um URL para exportar para a pasta em /path. Abre a caixa de dilogo integrar. O /path especfica a pasta de destino. Para integrar um intervalo de revises esto disponveis as seguintes opes: /fromurl:URL, /revrange:string. Para integrar duas rvores de repositrio, esto disponveis as seguintes opes: /fromurl:URL, / tourl:URL, /fromrev:xxx e /torev:xxx. Estas pr-preencher os campos relevantes na caixa de dilogo integrar. Abre a caixa de dilogo integrar todos. O /path especfica a pasta de destino. Mostra a caixa de dilogo ramo/etiqueta. O /path a cpia de trabalho de onde efectuar o ramo/etiqueta. E o /url o URL destino. Tu tambm podes especificar a opo /logmsg para passar uma mensagem de registo prdefinida para a caixa de dilogo ramo/etiqueta. Ou se no queres passar a mensagem de registo na linha de comandos, usa o /logmsgfile:path, onde o caminho aponta para um ficheiro que contm a mensagem de registo.

:checkout :import :update

:commit

:add :revert :cleanup :resolve

:repocreate :switch :export

:merge

:mergeall :copy

185

Automatizar o TortoiseSVN

Comando :settings :remove :rename

Descrio Abre a caixa de dilogo preferncias. Remove do controlo de verses o(s) ficheiro(s) em /path. Altera o nome do ficheiro em /path. O novo nome do ficheiro ser pedido numa caixa de dilogo. Para evitar a pergunta sobre alterar o nome a ficheiros similares num s passo, passa /noquestion. Starts the external diff program specified in the TortoiseSVN settings. The /path specifies the first file. If the option /path2 is set, then the diff program is started with those two files. If /path2 is omitted, then the diff is done between the file in /path and its BASE. To explicitly set the revision numbers use /startrev:xxx and /endrev:xxx. If /blame is set and /path2 is not set, then the diff is done by first blaming the files with the given revisions. Dependendo dos URLs e revises a comparar, isto ou mostra uma comparao unificada (se a opo unified for usada), uma caixa de dilogo com a lista de ficheiros que foram alterados, ou se os URLs apontam para ficheiros arranca o visualizador de comparao para esses dois ficheiros. As opes url1, url2, revision1 e revision2 devem ser especificadas. As opes pegrevision, ignoreancestry, blame and unified so opcionais.

:diff

:showcompare

:conflicteditor :relocate :help :repostatus :repobrowser

Arranca o editor de conflitos especificado nas preferncias do TortoiseSVN com os ficheiros correctos para o ficheiro em conflito no /path. Abre a caixa de dilogo reposicionar. O /path especifica o caminho da cpia de trabalho a reposicionar. Abre o ficheiro de ajuda. Opens the check-for-modifications dialog. The /path specifies the working copy directory. Arranca o navegador de repositrio apontando para o URL da cpia de trabalho dada pelo /path, ou o /path aponta directamente para um URL. Uma opo adicional /rev:xxx, pode ser usada para especificar qual a reviso que o navegador de repositrio deve mostrar. Se for omitido o / rev:xxx, ser por defeito HEAD. Se o /path apontar para um URL, o /projectpropertiespath:path/to/wc especifica o caminho de onde deve ler e usar as propriedades do projecto. Adiciona todos os objectos em /path lista de ignorados, i.e. adiciona a propriedade svn:ignore a esses ficheiros. Abre a caixa de dilogo responsabilizar paa o ficheiro especificado em / path. Se as opes /startrev e /endrev so usadas, ento a caixa de dilogo que pergunta pelo intervalo de responsabilidade no ser mostrada, e em alternativa ser usado os valores dessas opes. Se a opo /line:nnn for usada, o TortoiseBlame ir abrir mostrando a linha cujo nmero foi especificado. As opes /ignoreeol, /ignorespaces e /ignoreallspaces so tambm suportadas.

:ignore :blame

:cat

Guarda um ficheiro de um URL ou cpia de trabalho dada em /path para a localizao especificada em /savepath:path. A reviso dada em

186

Automatizar o TortoiseSVN

Comando

Descrio /revision:xxx. Isto pode ser usado para obter um ficheiro com uma reviso especfica. Cria um ficheiro de correo para o caminho dado em /path. Mostra o grfico de revises para o caminho dado em /path. Bloqueia um ficheiro ou todos os ficheiros numa pasta dada por /path. mostrada a caixa de dilogo 'Bloquear' para que o utilizador possa introduzir um comentrio para o bloqueio. Desbloqueia um ficheiro ou todos os ficheiros numa pasta dada por /path. Reconstri a cache de cones do windows. Usa s isto no caso de os cones do Windows ficarem corrompidos. Um efeito secundrio disto (que no pode ser evitado) que os cones no ambiente de trabalho so reordenados. Para suprimir a caixa de mensagem, passa o /noquestion. Mostra a caixa de dilogo propriedades para o caminho dado por /path.

:createpatch :revisiongraph :lock

:unlock :rebuildiconcache

:properties

Tabela D.1. Lista de comandos e opes disponveis


Exemplos (que deveram ser introduzidos numa s linha):

TortoiseProc.exe /command:commit /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt" /logmsg:"test log message" /closeonend:0 TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0 TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt" /startrev:50 /endrev:60 /closeonend:0

D.2. Comandos TortoiseIDiff


A ferramenta de comparao de imagem tem algumas opes de linha de comandos que tu podes usar para controlar o modo como a ferramenta arranca. O programa chama-se TortoiseIDiff.exe. A tabela abaixo lista todas as opes que podem ser passadas, a partir da linha de comandos, para a ferramenta de comparao de imagens. Opo :left :lefttitle :right :righttitle :overlay :fit :showinfo Descrio Caminho para o ficheiro mostrado esquerda. A string de ttulo. Esta string usada no ttulo da vista da imagem em vez do caminho completo para o ficheiro da mesma. Caminho para o ficheiro mostrado direita. A string de ttulo. Esta string usada no ttulo da vista da imagem em vez do caminho completo para o ficheiro da mesma. Se especificada, a ferramenta de comparao de imagens comuta para o modo sobreposio (alpha blend). Se especificada, a ferramenta de comparao de imagens encaixa as duas imagens juntas. Mostra a caixa de informaes da imagem.

Tabela D.2. Lista de opes disponveis

187

Automatizar o TortoiseSVN

Exemplo (que dever ser introduzido numa linha s):

TortoiseIDiff.exe /left:"c:\images\img1.jpg" /lefttitle:"image 1" /right:"c:\images\img2.jpg" /righttitle:"image 2" /fit /overlay

188

Apndice E. Referncia Cruzada da Interface de Linha de Comandos


Por vezes este manual refere-se principal documentao do Subversion, que descreve o Subversion em termos da Interface de Linha de Comandos (ILC). Para te ajudar a compreender o que o tortoise faz nos bastidores, ns compilmos uma lista mostrando os comandos ILC equivalentes, para cada comando do GUI do TortoiseSVN.

Nota
Mesmo que hajam ILC equivalentes para o que o TortoiseSVN faz, lembra-te que o TortoiseSVN no chama o ILC mas usa directamente a biblioteca do Subversion. Se pensas que encontraste um bug no TortoiseSVN, podemos pedir-te para o reproduzir, usando o ILC, para que possamos distinguir os problemas do TortoiseSVN dos do Subversion. Esta referncia diz qual o comando a tentar.

E.1. Convenes e Regras Bsicas


In the descriptions which follow, the URL for a repository location is shown simply as URL, and an example might be http://tortoisesvn.googlecode.com/svn/trunk. The working copy path is shown simply as PATH, and an example might be C:\TortoiseSVN\trunk.

Importante
Porque o TortoiseSVN uma extenso da Shell do Windows, no capaz de usar a noo de pasta corrente de trabalho. Todos os caminhos da cpia de trabalho devero ser fornecidos usando o caminho absoluto e no o caminho relativo. Certos itens so opcionais, e esses no TortoiseSVN so frequentemente controlados por caixas de verificao ou botes de rdio. Essas opes so mostradas em [parnteses rectos] nas definies da linha de comandos.

E.2. Comandos TortoiseSVN


E.2.1. Checkout
svn checkout [-N] [--ignore-externals] [-r rev] URL PATH If Only checkout the top folder is checked, use the -N switch. Se estiver verificada a Omitir externos, usa o parmetro --ignore-externals Se estiveres efectuar checkout a uma reviso especfica, especifica o URL usando o parmetro -r.

E.2.2. Actualizar
svn info URL_of_WC svn update [-r rev] PATH

189

Referncia Cruzada da Interface de Linha de Comandos O actualizar de itens mltiplos no correntemente uma actividade atmica no Subversion. Ento o TortoiseSVN procura primeiro a reviso HEAD do repositrio e s ento actualiza todos os itens para o nmero de reviso em particular, para evitar criar de uma cpia de trabalho com revises misturadas. Se s um item est seleccionado para actualizar ou os itens seleccionados no so todos do mesmo repositrio, o TortoiseSVN apenas actualiza para a HEAD. No so usadas aqui opes de linha de comandos. O Actualizar para reviso tambm implementa o comando actualizar, mas oferece mais opes.

E.2.3. Actualizar para Reviso


svn info URL_of_WC svn update [-r rev] [-N] [--ignore-externals] PATH If Only update the top folder is checked, use the -N switch. Se estiver verificada a Omitir externos, usa o parmetro --ignore-externals

E.2.4. Submeter
No TortoiseSVN a caixa de dilogo submeter usa vrios comandos do Subversion. A primeira fase uma verificao de estado, que determina quais os itens, na tua cpia de trabalho, que podem ser potencialmente submetidos. Tu podes rever a lista, compara os ficheiros com a BASE, e seleccionar quais os itens que queres incluir na submisso.

svn status -v PATH Se a Mostrar ficheiros no versionados est verificada, o TortoiseSVN ir tambm mostrar todos os ficheiros e pastas no versionadas na hierarquia da cpia de trabalho, tendo em conta as regras de ignorar. Esta funcionalidade em particular, no tem equivalente no Subversion j que o comando svn status no desce s pastas no versionadas. Se tu seleccionares qualquer pasta ou ficheiro no versionado, esses itens sero primeiro adicionados tua cpia de trabalho

svn add PATH... Quando clicas no OK efectuada a submisso Subversion. Se deixaste todas as caixas de seleco de ficheiros no seu estado por defeito, o TortoiseSVN usa uma nica submisso recursiva da cpia de trabalho. Se desseleccionaste alguns ficheiros, ento ser usada uma submisso no recursiva (-N), e cada caminho ter de ser especificado individualmente na linha de comandos da submisso.

svn commit -m "LogMessage" [-N] [--no-unlock] PATH... A LogMessage representa aqui o contedo da caixa de edio da mensagem de registo. Esta pode ser vazia. Se a Manter bloqueios estiver verificada, usa o parmetro --no-unlock.

E.2.5. Comparar
svn diff PATH Se usa o Comparar a partir do menu de contexto principal, estars a comparar o ficheiro modificado com a sua reviso BASE. A sada do comando ILC acima, tambm faz isto e produz a sada no formato

190

Referncia Cruzada da Interface de Linha de Comandos comparao-unificada. No entanto este no o que o TortoiseSVN est a usar. O TortoiseSVN usa o TortoiseMerge (ou um programa de comparao tua escolha) para mostrar visualmente as diferenas entre os ficheiros de texto integral, pelo que no existe nenhum ILC equivalente. Tu tambm podes comparar quaisquer 2 ficheiros usando o TortoiseSVN, estejam eles ou no sob controlo de verses. O TortoiseSVN apenas carrega os dois ficheiros, para o programa de comparao escolhido, e deixa-o descobrir onde esto as diferenas.

E.2.6. Mostrar Registo


svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH or svn log -v -r M:N [--stop-on-copy] PATH Por defeito, o TortoiseSVN tenta obter 100 mensagens de registo usando o mtodo --limit. Se as preferncias lhe dizem para usar as APIs antigas, ento uma segunda forma usada para obter as mensagens de registo de 100 revises do repositrio. Se Parar ao copiar/mudar nome estiver verificado, usa a opo --stop-on-copy.

E.2.7. Verificar Modificaes


svn status -v PATH or svn status -u -v PATH A verificao do estado inicial olha s para a tua cpia de trabalho. Se clicares em Verificar repositrio ento o repositrio tambm verificado para ver que ficheiros poderam ter sido alterados por uma actualizao, o que requer a opo -u. Se a Mostrar ficheiros no versionados est verificada, o TortoiseSVN ir tambm mostrar todos os ficheiros e pastas no versionadas na hierarquia da cpia de trabalho, tendo em conta as regras de ignorar. Esta funcionalidade em particular, no tem equivalente no Subversion j que o comando svn status no desce s pastas no versionadas.

E.2.8. Grfico de Revises


O grfico de revises uma funcionalidade s do TortoiseSVN. No existe um equivalente no cliente de linha de comandos. O que faz o TortoiseSVN um

svn info URL_of_WC svn log -v URL onde o URL a raiz do repositrio, e ento analisa os dados retornados.

E.2.9. Navegador de Repositrio


svn info URL_of_WC svn list [-r rev] -v URL Podes usar o svn info para determinar a raiz do repositrio, que o nvel de topo mostrado no navegador de repositrio. Tu no podes navegar Para cima para alm deste nvel. Este comando tambm retorna toda a informao de bloqueio, mostrada no navegador de repositrio.

191

Referncia Cruzada da Interface de Linha de Comandos A chamada svn list ir listar os contedos de uma pasta, dado o URL e reviso.

E.2.10. Editar Conflitos


Este comando no tem equivalente ILC. Ele invoca o TortoiseMerge ou, uma ferramenta externa de comparao/integrao de 3 modos, para olhar para os ficheiros envolvidos no conflito e determinar quais as linhas a usar.

E.2.11. Resolvido
svn resolved PATH

E.2.12. Alterar nome


svn rename CURR_PATH NEW_PATH

E.2.13. Remover
svn delete PATH

E.2.14. Reverter
svn status -v PATH A primeira fase uma verificao do estado, que determina quais os itens na tua cpia de trabalho, que podem potencialmente ser revertidos. Tu podes rever a lista, comparar os ficheiros com a BASE e seleccionar os itens que queres que sejam includos na reverso. Quando tu clicas no OK, toma lugar a reverso Subversion. Se deixaste todas as caixas de seleco de ficheiros no seu estado por defeito, o TortoiseSVN usa uma reverso simples e recursiva (-R) da cpia de trabalho. Se desseleccionaste alguns ficheiros, ento cada caminho deve ser individualmente especificado na linha de comando da reverso.

svn revert [-R] PATH...

E.2.15. Limpar
svn limpar PATH

E.2.16. Obter "Lock"


svn status -v PATH A primeira fase uma verificao de estado, que determina os ficheiros na tua cpia de trabalho que podem potencialmente ser bloqueados. Tu podes seleccionar os itens que queres que sejam bloqueados.

svn lock -m "LockMessage" [--force] PATH... LockMessage representa aqui os contedos da caixa de edio da mensagem de bloqueio. Isto pode ser vazio. Se estiver verificada a Roubar bloqueios usa a opo --force.

192

Referncia Cruzada da Interface de Linha de Comandos

E.2.17. Libertar "Lock"


svn unlock PATH

E.2.18. Ramo/Etiqueta
svn copy -m "LogMessage" URL URL or svn copy -m "LogMessage" URL@rev URL@rev or svn copy -m "LogMessage" PATH URL A caixa de dilogo Ramo/Etiqueta executa uma cpia para o repositrio. Existem 3 botes de rdio com opes: A reviso HEAD do repositrio Reviso especfica no repositrio Cpia de trabalho que correspondem s 3 variantes de linha de comando acima mostradas. A LogMessage representa aqui o contedo da caixa de edio da mensagem de registo. Esta pode ser vazia.

E.2.19. Trocar
svn info URL_of_WC svn switch [-r rev] URL PATH

E.2.20. Integrar
svn merge [--dry-run] --force From_URL@revN To_URL@revM PATH O Integrao de Teste executa a mesma integrao com a opo --dry-run.

svn diff From_URL@revN To_URL@revM A Comparao unificada mostra a operao de comparao que ser usada para executar a integrao.

E.2.21. Exportar
svn export [-r rev] [--ignore-externals] URL Export_PATH Esta forma usada quando acedido a partir de uma pasta no versionada, e a pasta usada como destino. Exportar uma cpia de trabalho para uma localizao diferente, efectuada sem o uso da biblioteca do Subversion, pelo que no existe comando de linha equivalente. O que o TortoiseSVN faz copiar todos os ficheiros para uma nova localizao, enquanto mostra o progresso da operao. Ficheiros/pastas no versionados podero ser tambm exportados, opcionalmente. Em ambos os casos, se est verificada a Omitir externos, usa a opo --ignore-externals.

193

Referncia Cruzada da Interface de Linha de Comandos

E.2.22. Reposicionar
svn switch --relocate From_URL To_URL

E.2.23. Criar Repositrio Aqui


svnadmin create --fs-type fsfs PATH

E.2.24. Adicionar
svn add PATH... Se seleccionaste uma pasta, o TortoiseSVN primeiro examina-a recursivamente procura de itens que podem ser adicionados.

E.2.25. Importar
svn import -m LogMessage PATH URL A LogMessage representa aqui o contedo da caixa de edio da mensagem de registo. Esta pode ser vazia.

E.2.26. Responsabilizar
svn blame -r N:M -v PATH svn log -r N:M PATH Se usares o TortoiseBlame para ver a informao de responsabilidade, tambm requerido o ficheiro de registo para mostrar as mensagens de registo numa etiqueta de dica. Se vires a responsabilidade como um ficheiro de texto esta informao no ento requerida.

E.2.27. Addicionar list de tems a ignorar


svn propget svn:ignore PATH > tempfile {edit new ignore item into tempfile} svn propset svn:ignore -F tempfile PATH Porque a propriedade svn:ignore frequentemente um valor multi-linha, mostrado aqui como sendo alterado via um ficheiro de texto em vez de directamente na linha de comandos.

E.2.28. Criar Correco


svn diff PATH > patch-file O TortoiseSVN cria um ficheiro de correco no formato comparao-unificada ao comparar a cpia de trabalho com a sua verso BASE.

E.2.29. Aplicar Correco


Aplicar correces um trabalho complicado, a no ser que a correco e a cpia de trabalho estejam na mesma reviso. Afortunadamente para ti, poders usar o TortoiseMerge, que no tem equivalente directo no Subversion.

194

Apndice F. Detalhes de Implementao


Este anexo contm uma discusso mais detalhada da implementao de algumas das funcionalidades do TortoiseSVN.

F.1. Sobreposio de cones


Cada ficheiro e pasta tem um valor de estado no Subversion como reportado pela biblioteca do mesmo. No cliente de linha de comando, esse representado por uma letra de cdigo, mas no TortoiseSVN so mostrados graficamente como sobreposies de cones. Porque o nmero de sobreposies muito limitado, cada sobreposio poder representar vrios valores de estado.

A sobreposio em conflito usada para representar o estado em conflito, onde uma actualizao ou troca resultou em conflitos entre as alteraes locais e as alteraes descarregadas do repositrio. tambm usado para indicar o estado obstrudo, que pode ocorrer quando no concluida uma operao.

A sobreposio Modificado representa o estado modificado, quando efectuaste modificaes locais, o estado integrado, quando as alteraes do repositrio foram integradas com as alteraes locais, e o estado substitudo, quando o ficheiro foi removido e substitudo por outro ficheiro diferente com o mesmo nome.

A sobreposio Removido representa o estado removido, quando um item foi escalonado para remoo, ou o estado desaparecido, quando um item no est presente. Naturalmetne um item que est desaparecido no tem ele prprio uma sobreposio, mas a pasta pai pode ser sinalizada quando um dos seus filhos est desaparecido.

A sobreposio Adicionado usado simplesmente para representar o estado adicionado quando um item foi adicionado ao controlo de verses.

A sobreposio No Subversion usada para representar um item que est no estado normal, ou um item versionado cujo estado no ainda conhecido. Porque o TortoiseSVN usa um processo de cache em background para recolher o estado, poder levar alguns segundos a actualizar as sobreposies.

A sobreposio Necessita bloqueio usada para indicar quando um ficheiro tem configurada a propriedade svn:needs-lock. Para cpias de trabalho que foram criadas usando o Subversion 1.4.0 e superior, o estado svn:needs-lock guardado localmente em cache pelo Subversion, e isto usado para determinar quando se deve mostrar esta sobreposio. Para cpias de trabalho no formato pr-1.4, o TortoiseSVN mostra esta sobreposio quando o ficheiro tem o estado s-de-leitura. Tem ateno que o Subversion actualizada automaticamente a verso das cpias de trabalho quando tu as actualizas,

195

Detalhes de Implementao

embora poder no ser efectuada a cache da propriedade svn:needs-lock at o prprio ficheiro ser actualizado.

A sobreposio Bloqueado usado quando a cpia de trabalho local contm um bloqueio para esse ficheiro.

A sobreposio Ignorado usado para representar um item que est no estado ignorado, devido ao padro global de ignorados, ou propriedade svn:ignore da pasta pai. Esta sobreposio opcional.

A sobreposio No versionado usado para representar um item que est no estado no versionado. Isto um item numa pasta versionada, mas que no est ele prprio sob o controlo de verses. Esta sobreposio opcional. Se um item tem o estado subversion nenhum (o item no est dentro da cpia de trabalho) ento no mostrado nenhuma sobreposio. Se decidiste desactivar as sobreposies emphasis>Ignorado Um item s pode ter um valor de estado no Subversion. Por exemplo, um ficheiro pode ser modificado localmente e pode ser marcado para remoo ao mesmo tempo. O Subversion retorna um nico valor de estado - neste caso - removido. Essas propriedades esto definidas dentro do prprio Subversion. Quando o TortoiseSVN mostra recursivamente o estado (configurao por defeito), cada pasta mostra uma sobreposio que reflete o seu prprio estado e o estado de todos os seus filhos. De modo a mostrar uma simples sobreposio de summrio, ns usamos a ordem de prioridade mostrada acima para determinar qual a sobreposio a usar, com a sobreposio Em conflito a tomar a prioridade mais elevada. De facto, poders descobrir que nem todos esse cones so usados no teu sistema. Isot porque o nmero de sobreposies permitidas pelo Windows limitada a 15. O Windows usa 4 dessas, e as restantes podem ser usadas por outras aplicaes. Se no existirem disponveis em nmero suficiente sobreposies vagas, o TortoiseSVN tenta ser um bom cidado (Good Citizen (TM)) e limita o seu uso de sobreposies, para dar hipotese s outras aplicaes. Normal, Modificado e Em conflito so sempre carregadas e visveis. Removido se possivel carregado, mas descai para Modificado se no existem vagas suficientes. S-de-Leitura se possivel carregado, mas descai para Normal se no existem vagas suficientes. Bloqueado s carregada se existirem menos de 13 sobreposies j carregadas. Descai para Normal se no existirem vagas suficientes. Adicionado s carregada se existirem menos de 14 sobreposies j carregadas. Descai para Modificado se no existirem vagas suficientes.

196

Apndice G. Protegendo o Svnserve ao usar o SSH


Esta seco fornece um guia passo-a-passo para configurar o Subversion e o TortoiseSVN para usar o protocolo svn+ssh. Se j usas conexes autenticadas por SSH para efectuares login no teu servidor, ento j l ests e poders encontrar mais detalhes no livro do Subversion. Se no ests a usar o SSH mas gostarias de o fazer para proteger a tua instalao do Subversion este guia fornece-te um mtodo simples, que no envolve criar uma conta de utilizador SSH separada no servidor, para cada utilizador do Subversion. Nesta implementao criamos uma nica conta de utilizador SSH para todos os utilizadores do Subversion, e usar diferentes chaves de autenticao para diferenciar entre os utilizadores reais do Subversion. Neste anexo assumimos que j instalaste as ferramentas do Subversion, e que criaste um repositrio como detalhado algures neste manual. Tem ateno que tu no deves arrancar o svnserve como um servio or daemon quando usado com o SSH. Much of the information here comes from a tutorial provided by Marc Logemann, which can be found at www.logemann.org [http://www.logemann.org/2007/03/13/subversion-tortoisesvn-ssh-howto/] Additional information on setting up a Windows server was provided by Thorsten Mller. Thanks guys!

G.1. Configurao de um Servidor Linux


Tu precisas de ter o SSH activado no servidor e assumimos que irs usar o OpenSSH. Na maioria das distribuies este j est instalado. Para descobrires escreve:

ps xa | grep sshd e procura por jobs ssh. Um ponto a salientar que ao construres o Subversion a partir das fontes, e no forneceres qualquer parmetro para o ./configure, o Subversion cria uma pasta bin sob /usr/local e coloca aqui os binrios. Se queres usar o modo tunel com o SSH deves ter em ateno que o utilizador autenticado via SSH necessita de executar o programa svnserve e outros binrios. Por esta razo coloca o /usr/ local/bin na varivel PATH ou cria links simblicos dos teus binrios para a pasta /usr/sbin, ou para qualquer outra pasta que normalmente est no PATH. Para verificares se est tudo OK, autentica-te atravs do SSH como um utilizador alvo e digita:

which svnserve Este comando dever informar-te se o svnserve est disponvel. Cria um novo utilizador que ser ento usado para aceder ao repositrio svn:

useradd -m svnuser Tem a certeza que ds a este utilizador permisso total de acesso ao repositrio.

G.2. Configurar um Servidor Windows


Instala o daemon SSH Cygwin como descrito aqui: http://pigtail.net/LRP/printsrv/cygwin-sshd.htmlSSH Client Tools for use with TortoiseSVN

197

Protegendo o Svnserve ao usar o SSH

Cria uma nova conta de utilizador Windows svnuser, que ser usada para aceder ao repositrio. Tem a certeza que ds a este utilizador todos os privilgios de acesso ao repositrio. Se ainda no existe nenhum ficheiro de palavra-passe, cria um a partir da consola do Cygwin usando o: mkpasswd -l > /etc/passwd

G.3. Ferramentas de cliente SSH para uso com o TortoiseSVN


Adquire as ferramentas que necessitas para usar o SSH no cliente Windows a partir deste stio: http:// www.chiark.greenend.org.uk/~sgtatham/putty/ Vai seco de descarga e obtm o Putty, Plink, Pageant e Puttygen.

G.4. Criao de certificados OpenSSH


O prximo passo criar um par de chaves para autenticao. Existem duas maneiras possveis para criar as chaves. A primeira criar as chaves com o PuTTYgen no cliente, carregar a chave pblica para o teu servidor e usar a chave privada com o PuTTY. A outra criar o par de chaves com a ferramenta do OpenSSH ssh-keygen, descarrega a chave privada para o teu cliente e converte-a numa chave privada ao estilo do PuTTY.

G.4.1. Criar chaves com o ssh-keygen


Entra no teu servidor como root ou svnuser e digita: ssh-keygen -b 1024 -t dsa -N passphrase -f keyfile substituindo a palavra-passe real (que s tu conheces) e o ficheiro chave.Ns apenas crimos uma chave SSH2 DSA com uma palavra-chave de 1024 bites. Se digitares ls -l keyfile* irs ver dois ficheiros, keyfile e keyfile.pub. Como podes adivinhar o ficheiro .pub o ficheiro de chave pblica, o outro o da chave privada. Anexa a chave pblica aquelas que esto na pasta .ssh dentro da pasta home svnuser: cat keyfile.pub >> /home/svnuser/.ssh/authorized_keys De modo a poder usar a chave privada que germos, temos de a converter para um formato putty. Isto porque o formato de ficheiro da chave privada no especificado por um organismo de standartizao. Depois de descarregares para o teu PC cliente o ficheiro da chave privada, arranca o PuTTYgen e vai ao menu Conversions Import key. Navega at ao teu ficheiro keyfile, do qual obtiveste do servidor a palavra-passe usada aquando da criao da chave. Finalmente clica no Save private key e guarda o ficheiro como keyfile.PPK.

G.4.2. Criar chaves usando o PuTTYgen


Usa o PuTTYgen para gerar o par chave-pblica/chave-privada e guarda-a. Copia a chave pblica para o servidor e anexa-a s que esto na pasta .ssh, dentro da pasta me svnuser: cat keyfile.pub >> /home/svnuser/.ssh/authorized_keys

G.5. Testar com o PuTTY


Para testar a conexo iremos usar o PuTTY. Arranca o programa e na aba Session configura o hostname para o nome ou endereo IP do teu servidor, o protocolo para SSH e guarda a sesso como

198

Protegendo o Svnserve ao usar o SSH

SvnConnection, ou outro nome que preferires. Na aba SSH configura verso preferida do protocolo SSH para 2, e na Auth fixa o caminho completo para o ficheiro de chave privada .PPK, que converteste anteriormente. Volta aba Sessions e pressiona o boto Save. Irs agora ver a SvnConnection na lista das sesses guardadas. Clica no Open e irs ver uma janela de login ao estilo do telnet. Usa como utilizador o nome svnuser e se tudo estiver bem dever-te-s ligar directamente, sem seres questionado pela palavra-passe. Poders necessitar de editar o /etc/sshd_config no servidor. Edita as linhas como mostrado em seguida, e depois re-arranca o servio SSH.

PubkeyAuthentication yes PasswordAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no

G.6. Testar SSH com o TortoiseSVN


At agora s testmos se consegues efectuar login usando o SSH. Agora precisamos de ter a certeza que a ligao SSH pode efectivamente correr o svnserve. No servidor modifica o /home/svnuser/.ssh/ authorized_keys do seguinte modo para permitir que vrios autores do Subversion usem a mesma conta, svnuser. Tem em ateno que cada autor Subversion usa o mesmo login mas com uma chave de autenticao diferente, pelo que ters de adicionar uma linha por cada autor. Nota: Esta tudo numa linha muito longa.

command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>", no-port-forwarding,no-agent-forwarding,no-X11-forwarding, no-pty ssh-rsa <PublicKey> <Comment> Existe vrios valores que necessitas de configurar, de acordo com a tua instalao. <ReposRootPath> dever ser substitudo com o caminho para a pasta onde esto os teus repositrios. Isto evita a necessidade de especificar os caminhos completos de servidor nos URLs. Tem ateno que devers usar barras direitas, mesmo em servidores Windows, e.g. c:/svn/reposroot. Nos exemplos abaixo assumimos que tu tens uma pasta no repositrio, dentro da raiz, chamada repos. O <author> dever ser substitudo pelo autor svn que tu queres que seja armazenado na submisso. Isto permite tambm que o svnserve use os seus direitos de acesso dentro do svnserve.conf. O <PublicKey> dever ser substitudo pela chave pblica que geraste anteriormente. O <Comment> pode ser qualquer comentrio que desejares, mas ser til para mapear o nome de um autor svn com o nome real da pessoa. Clica com o boto direito em qualquer pasta no explorador do Windows, e selecciona TortoiseSVN Navegador-de-repositrio. Sers solicitado a introduzir o URL, que introduzirs deste modo:

svn+ssh://svnuser@SvnConnection/repos O que que significa este URL? O nome da Schema svn+ssh que diz ao TortoiseSVN como lidar com os pedidos ao servidor. Depois da dupla barra especifica o utilizador a ligar-se ao servidor, que no nosso caso svnuser. Depois do @ fornecemos o nome da nossa sesso PuTTY. Este nome de sesso contm todos os detalhes, como por exemplo, onde encontrar a chave privada, o IP e DNS do servidor. Por ltimo temos de fornecer o caminho para o repositrio, relativamente raiz do repositrio no servidor, como especificado no ficheiro authorized_keys.

199

Protegendo o Svnserve ao usar o SSH

Clica no OK, e devers conseguir navegar no contedo do repositrio. Se tal acontecer, significa que tens um tunel SSH em conjunto com o TortoiseSVN. Tem em ateno que, por defeito, o TortoiseSVN usa a sua prpria verso do Plink para se ligar. Isto evita que, para cada tentativa de autenticao, aparea uma janela de consola, mas tambm significa que no aparecer em nenhum lado mensagens de erro. Se receberes um erro No foi possivel escrever para a saida padro, poders tentar especificar o Plink como cliente nas preferncias de rede do TortoiseSVN. Isto permite-a ver as mensagens de erro reais, geradas pelo Plink.

G.7. Variantes da Configurao do SSH


Uma maneira de simplificar o URL no TortoiseSVN configurar o utilizador dentro da sesso PuTTY. Para tal ters de carregar no PuTTY as tuas sesses j definidas SvnConnection e na aba Connection inserir para nome de utilizador Auto login user, e.g. svnuser. Guarda de novo a tua sesso PuTTY e tenta o seguinte URL no TortoiseSN:

svn+ssh://SvnConnection/repos Desta vez s fornecemos a sesso PuTTY SvnConnection ao cliente SSH que o TortoiseSVN usa (TortoisePlink.exe). Este cliente ir verificar na sesso todos os detalhes necessrios. At altura da escrita o PuTTY na verificava todas as configuraes guardadas, pelo que se tiveres mltiplas configuraes para o mesmo nome de servidor, ele ir pegar na primeira que condizer com este. Se tambm editares a configurao por defeito e a guardares, o nome de utilizador auto login no ser guardado. Muitas pessoas gostam de usar o Pageant para armazenarem as suas chaves. Porque uma sesso de PuTTY capaz de armazenar uma chave, tu nem sempre precisas do Pageant. Mas imagina que tu queres armazenar chaves para vrios servidores diferentes; nesse caso terias de editar a sesso do Putty vez aps vez, para cada servidor que estejas a tentar-te ligar. Nessa situao o Pageant tem todo o sentido porque quando o PuTTY, Plink, TortoisePlink e qualquer outra ferramenta baseada em PuTTY est a tentar-se ligar a um servidor SSH, esta verifica todas as chaves privadas que o Pageant armazena, para iniciar a ligao. Para esta tarefa corre simplesmente o Pageant e adiciona a chave privada. Dever ser a mesma chave privada que tu definiste acima na sesso do PuTTY. Se usares o Pageant para armazenar a chave privada, tu podes remover na tua sesso de PuTTY guardada, a referncia ao ficheiro de chave privada. Tu podes adicionar mais chaves para outros servidores ou, claro, para outros utilizadores. Se no queres repetir este procedimento aps cada reincio do sistema do teu cliente, devers colocar o Pageant no grupo de auto-arranque do teu sistema Windows. Tu podes acrescentar as chaves com caminhos completos, como parmetros de linha de comandos do Pageant.exe. A ltima maneira de se conectar a um servidor SSH, ser simplesmente atravs do uso deste URL dentro do TortoiseSVN:

svn+ssh://svnuser@100.101.102.103/repos svn+ssh://svnuser@mydomain.com/repos Como podes ver, no usamos uma sesso PuTTY guardada, mas um endereo IP (ou nome de dominio) como o destino da ligao. Tambm fornecemos o utilizador, mas poders perguntar como ser encontrado o ficheiro de chave privada. Porque o TortoisePlink.exe apenas uma verso modificada da ferramenta Plink padro da suite PuTTY, o TortoiseSVN ir tambm tentar todas as chaves armazenadas no Pageant. Se usares o ltimo mtodo, tem a certeza que no tens configurado por defeito um nome de utilizador no PuTTY. Temos tido relatrios de um problema no PuTTY que causa, neste caso, perdas de ligao.

200

Protegendo o Svnserve ao usar o SSH

Para remover o utilizador por defeito, simplesmente limpa a HKEY_CURRENT_USER\Software \SimonTatham\Putty\Sessions\Default%20Settings\HostName

201

Glossrio
Actualizar Este comando do Subversion adquire as ltimas alteraes do repositrio para a tua cpia de trabalho, integrando quaisquer alteraes efectuadas por outros com as alteraes locais. Comando Subversion que usado para adicionar um ficheiro ou pasta tua cpia de trabalho. Os novos itens so adicionados ao repositrio quando os submeteres. BD Berkeley. Uma base de dados extensamente testada em aplicaes de "backend" que no utilizvel em "shares" de rede. Opo automtica para repositrios anteriores verso 1.2. Quando efectuas um bloqueio no item versionado, tu irs marc-lo no repositrio como no submetvel, excepo da cpia de trabalho de onde foi efectuado o bloqueio. Comando Subversion que criar uma cpia de trabalho local numa simples pasta, atravs da descarga de ficheiros versionados a partir do repositrio. Abreviatura para Mostrar Diferenas. Muito til quando queres ver exactamente que alteraes foram feitas. Quando as alteraes do repositrio so integradas com as tuas alteraes locais, por vezes essas alteraes ocorrem nas mesmas linhas. Neste caso o Subversion no pode decidir automaticamente qual a verso a usar e o ficheiro tido como em conflito. Ters de editar manualmente esse ficheiro e resolver o conflito antes de submeteres posteriormente mais alteraes. No repositrio Subversion tu podes criar uma cpia de um simples ficheiro ou de uma rvore inteira. Essas so implementadas como cpias baratas que funcionam um pouco como um apontador para o original, pelo que no ocupam quase nenhum espao. Criar cpias preserva o histrico do item na cpia, para que possas seguir as alteraes efectuadas antes de a teres feito. Esta a tua caixa de areia local, a rea onde tu trabalhas nos ficheiros versionados que normalmente reside no teu disco local. Tu crias uma cpia local a partir do repositrio ao efectuar o comando Checkout, e envias as tuas alteraes de volta para o repositrio com o comando Submeter. Este comando produz uma cpia de uma pasta versionada, tal como uma cpia de trabalho, mas sem as pastas locais .svn. um sistema de ficheiros proprietrio do Subversion para suporte aos repositrios. Pode ser usado em partilhas de rede. Por defeito para repositrios na verso 1.2 e nos mais recentes. Objecto de poltica de grupo Mostra o histrico de revises de um ficheiro ou pasta. Tambm conhecido como Registo. Comando do Subversion para importar uma hierarquia completa de pastas, para o repositrio numa nica reviso. Adicionar

BDB

Bloquear

Checkout

Comparar

Conflito

Cpia

Cpia de Trabalho

Exportar

FSFS

GPO Histria

Importar

202

Glossrio

Integrar

O processo pelo qual as alteraes do repositrio so adicionadas tua cpia de trabalho destruir quaisquer alteraes que tenhas efectuado localmente. Por vezes essas alteraes no podem ser conciliadas automaticamente e, dito que a cpia de trabalho est em conflito. A integrao ocorre automticamente quando actualizas a tua cpia de trabalho. Tu podes tambm integrar alteraes especficas de outro ramo usando o comando TortoiseSVN's Merge.

Limpar

Para citar o livro do Subversion: Recursively clean up the working copy, removing locks and resuming unfinished operations. If you ever get a working copy locked error, run this command to remove stale locks and get your working copy into a usable state again. Tem ateno que neste contexto o lock (bloqueio) refere-se ao bloqueio do sistema de ficheiros local e no ao bloqueio do repositrio. Alm de versionar as tuas pastas e ficheiros, o Subversion permitete adicionar metadados versionados - referidos como propriedades a cada um das tuas pastas e ficheiros versionados. Cada propriedade tem um nome e valor, tal como uma chave do registo. O Subversion tem algumas propriedades especiais que usa internamente, como as svn:eol-style. O TortoiseSVN tambm tem algumas, tais como tsvn:logminsize. Tu podes tambm adicionar as tuas prprias propriedades com qualquer nome e valor que escolhas. de Reviso Tal como os ficheiros podem ter propriedades, assim pode cada reviso no repositrio. Algumas revprops especiais so automaticamente adicionadas quando criada a reviso, nomeadamente: svn:date svn:author svn:log que representa a data/hora de submisso, o nome de quem submeteu e a respectiva mensagem de registo. Essas propriedades podem ser editadas, mas no esto versionadas pelo que qualquer alterao permanente, e no poder ser desfeita. Um termo usado frequentemente em sistemas de controlo de verses para descrever o que acontece quando o desenvolvimento se divide, no determinado ponto, e segue dois caminhos separados. Tu podes criar um ramo a partir da linha principal de desenvolvimento, para o desenvolvimento de uma nova funcionalidade sem tornar instvel a linha principal. Ou tu podes criar um ramo estvel de uma entrega para o qual s efectuas reparaes de problemas, enquanto novos desenvolvimentos tm lugar no instvel trunk. No Subversion um ramo implementado como cpia barata. Mosta o histrico de revises de um ficheiro ou pasta. Tambm conhecido como Histrico. Se uma cpia de trabalho tem alteraes, s em ficheiros de texto, possvel usar o comando comparar do Subversion para gerar nico ficheiro de sumrio dessas alteraes, no formato comparaounificada. Um ficheiro desse tipo normalmente referido como Correco, e pode ser enviado por email para algum (ou para uma lista de correio) e aplicado noutra cpia de trabalho. Algum sem permisso para submeter pode efectuar as alteraes, e submeter o ficheiro de correco para algum com autorizao para submeter, para seja este a aplicar a correco. Ou se no estiveres seguro da alterao efectuada, podes submeter a correco para que outros a possam rever.

Propriedade

Propriedade (revprop)

Ramo

Registo

Remendo

203

Glossrio

Remover

Quando tu removes um item versionado (e submetes a alterao) o item deixa de existir no repositrio, aps a reviso submetida. Mas claro que continuar a existir em revises anteriores do repositrio, pelo que poders continuar a aced-lo. Se necessrio, tu podes copiar um item removido e ressuscit-lo por completo com histrico. Se o teu repositrio mudou de localizao, talvez porque o alteraste para uma pasta diferente no teu servidor, ou o nome de domnio do servidor foi alterado, ser necessrio reposicionar a tua cpia de trabalho para que o seu URL de repositrio aponte para a nova localizao. Nota: s devers usar este comando se a tua cpia de trabalho se refere mesma localizao no mesmo repositrio, mas apenas o prprio repositrio foi movido. Em qualquer outra circunstncia, o que provavelmente necessitars, do comando Trocar.

Reposicionar

Repositrio

Um repositrio e um local central onde so armazenados e mantidos dados. Um repositrio pode ser um local onde mltiplas bases de dados ou ficheiros esto localizados para distribuio pela rede, ou poder tambm ser um local que est acessvel ao utilizador directamente, sem o obrigar a navegar pela rede. Quando na cpia de trabalho, so deixados ficheiros num estado de conflito aps uma integrao, esses conflitos tm de ser observados por um humano com o recurso a um editor (ou talvez o TortoiseMerge). Este processo referido como Resoluo de Conflitos. Quando estiver concludo, poders marcar os ficheiros em conflito como estando resolvidos, o que permite que estes possam ser submetidos. Este comando dirige-se apenas a ficheiros de texto, e anota cada linha de modo a mostrar a reviso do repositrio em que foi alterada por ltimo, o autor que efectuou a alterao. A nossa implementao de GUI chama-se TortoiseBlame, e tambm mostra a data/Hora de submisso e a mensagem de registo, quando passas com o rato sobre o nmero de reviso. O Subversion mantm um cpia prstina local de cada ficheiro como era, quando tu actualizaste pela ltima vez a tua cpia de trabalho. Se efectuaste alteraes e decidiste que queres desfazlas, podes ento usar o comando reverter para retornares cpia prstina. Cada vez que submetes um conjunto de alteraes, tu crias uma nova reviso no repositrio. Cada reviso representa o estado da rvore do repositrio, num determinado ponto da sua histria. Se quiseres voltar atrs, poders examinar o repositrio tal e qual estava na reviso N. De outro modo, uma reviso refere-se a um conjunto de alteraes que foram efectuadas, quando essa mesma reviso foi criada.

Resolver

Responsabilizar

Reverter

Reviso

Reviso BASE

A reviso base corrente para o ficheiro ou pasta na tua cpia de trabalho. Esta a reviso que o ficheiro ou pasta tinha na ltima execuo do checkout, actualizao ou submisso. A reviso BASE normalmente diferente da reviso HEAD. A ltima reviso de um ficheiro ou pasta no repositrio.

Reviso HEAD

204

Glossrio

Submeter

Este comando Subversion usado para transferir as alteraes, na tua cpia de trabalho local, de volta para o repositrio, criando uma nova reviso do mesmo. Uma abreviatura para Subversion, frequentemente utilizada. O nome do protocolo personalizado do Subversion, usado pelo servidor de repositrio svnserve.

SVN

Trocar

Tal como o Actualizar-para-reviso altera a janela temporal da cpia de trabalho, para olhar para um ponto diferente na histria, o Trocar altera a janela de espao da cpia de trabalho, para que aponte para uma parte diferente do repositrio. particularmente til quando se est a trabalhar com o trunk e com ramos, onde apenas alguns ficheiros diferem. Podes assim trocar a tua cpia de trabalho entre esses dois e s os ficheiros alterados sero transferidos.

205

ndice Remissivo
Smbolos
"plugin", 171 "Shell" de Wiindows, 1 'cpia de trabalho' no versionada, 127

A
a bloquear, 112 aces lado-do-servidor, 120 Aceder, 17 actualizar, 52, 177 adicionar, 82 adicionar ficheiros ao repositrio, 41 alterao de tamanho de letra, 89 alteraes, 178 anotar, 117 Apache, 26 arrastar , 39 arrastar com o boto direito, 39 arrastar-e-largar, 39 atalho, 180 autenticao, 40 Autenticao mltipla, 33 auto-props, 95 automao, 184, 187 Autorizao, 31

cpia de trabalho, 10 copiar ficheiros, 83 correco, 116 corretor ortogrfico, 3 corrpondncia de padres, 85 Criar Command Line Client, 16 TortoiseSVN, 16 criar repositrio, 16 criar uma cpia de trabalho, 44 culpa, 117

D
dar entrada, 46 desfazer, 90 desfazer alterao, 177 desfazer submisso, 177 desligar do repositrio, 180 desversionar, 129, 180 dicionrio, 3 dif, 77, 116 diff unificado, 116 domaincontroller, 31 Domnio Windows, 31

E
editar registo/autor, 72 elogiar, 117 entradas do menu de contexto, 182 enviar alteraes, 46 estado, 58, 60 estado da cpia de trabalho, 58 estatsticas, 73 etiqueta, 83, 100 expande as palavras-chave, 93 explorador, 1 exportar, 127 exportar alteraes, 79 externos, 98, 178 extraco de verso, 166

B
bugtracker, 130

C
cache de registo, 155 caminhos UNC, 17 caracteres de substituio, 85 CLI, 189 cliente de linha de comando, 189 clique com o boto direito, 37 colunas do Explorador, 59 COM, 166, 171 COM SubWCRev interface, 168 comparar, 62, 77 comparar ficheiros, 178 comparar imagens, 81 comparar pastas, 178 comparar revises, 79 conflito, 9, 54 conflito de rvore, 54 controlador de assuntos, 130, 171 controlador de domnio, 181 controlador de problemas, 130 controlo de problema, 130 Controlo de verses, 1 cpia, 100, 120 cpia de segurana, 19

F
FAQ, 175 ferramentas de comparao, 82 ferramentas de integrao, 82 ficheiros especiais, 43 ficheiros temporrios, 41 ficheiros/pastas no-versionadas, 84 filtro, 73 funes desactivadas, 182

G
ganchos, 20 ganchos de cliente, 159 GPO, 181 grfico, 123 grfico de revises, 123

206

ndice Remissivo

H
hiperligao, 20 hiperligao de checkout, 20 hiperligao TortoiseSVN, 20 histria, 64

I
IBugtraqProvider, 171 cones, 58 ignorados globais, 136 ignorar, 84 Importar, 41 importar no local, 43 ndice de projectos, 30 instalar, 3 Instalar, 181 integrar, 103 duas rvores, 107 faixa de reviso, 105 re-integrar, 106 integrar conflitos, 110

Partilha de rede, 17 pasta .svn, 165 pasta _svn, 165 politicas de grupo, 181, 182 preferncias, 135 prioridade de sobreposio, 195 projectos ASP, 182 projectos comuns, 178 projectos proprietrios, 178 propriedades, 91 propriedades de projecto, 96 propriedades de reviso, 72 Propriedades do TortoiseSVN, 96 Propriedades Subversion, 92

R
ramo, 83, 100 re-integrar integrao, 111 readonly, 112 rebobinar, 177 registo, 64, 163 registo de controlo de integrao, 71 remover, 87, 87 remover versionamento, 180 renomear, 88, 120, 176 renomear ficheiros, 83 reorganizar, 176 reposicionar, 129 repositrio, 5, 41 repositrios externos, 98 resolver, 54 reverter, 90, 177 reviso, 12, 123 revprops, 72

L
limpeza, 91 linha de comando, 184, 187 lista de alteraes, 62 Livro sobre Subversion, 5

M
marcar verso, 100 maximizar, 41 mensagem de registo, 176 mensagem de submisso, 176 mensagem vazia, 176 mensagens de registo, 64 mensagens de submisso, 64 menu de contexto, 37 modificaes, 60 mod_authz_svn, 28, 31 Monitorizar a integrao, 110 mover, 88, 176 mover ficheiros, 83 msi, 181

S
SASL, 25 scripts de gancho, 20, 159 scripts de gancho do lado do servidor, 20 servidor movido, 129, 129 servidor proxy, 149 stio de internet, 20 sobreposies, 58, 195 sons, 135 SSL, 34 SSPI, 31 submeter, 46 SubWCRev, 166 SVN exportar, 44 SVNParentPath, 29, 30 SVNPath, 29 svnserve, 21, 23 SVN_ASP_DOT_NET_HACK, 182

N
navegador-de-repositrio, 120 NTLM, 31 nmeros de verso nos ficheiros, 166

O
obter alteraes, 52

P
pacotes de linguas, 3 padro de excluso, 136 palavras-chave, 93

T
TortoiseIDiff, 81 tradues, 3

207

ndice Remissivo

trocar, 102

U
unidades SUBST, 148 URL alterado, 129 URL do repositrio alterado, 129

V
ver alteraes, 58 verificar actualizaes, 181 verificar nova verso, 181 verso, 181 versionar ficheiros novos, 82 ViewVC, 134 visualizador de repositrio, 134 visualizador de servidor, 120 visualizador web, 134 VS2003, 182

W
WebDAV, 26 WebSVN, 134

208

You might also like