Beruflich Dokumente
Kultur Dokumente
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
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.
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.
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.
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.
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
ps uns dos outros? muito fcil os utilizadores escreverem acidentalmente por cima das alteraes de outros utilizadores no repositrio.
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
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.
10
11
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
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.
13
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.
14
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.
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.
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.
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.
/trunk /ramos /etiquetas Se o repositrio conter vrios projectos, as pessoas normalmente indexaro a sua estrutura por ramo:
/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
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.
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
<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
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
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.
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:
[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
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.
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.
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.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
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.
30
O Repositrio
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
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.
33
O Repositrio
</Location>
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 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 ...
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.
35
O Repositrio
<Location /svn> DAV svn SVNParentPath D:\SVN SSLRequireSSL AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location>
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
4.1. Comeando
4.1.1. Sobreposio de cones
37
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
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.
39
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.5. Autenticao
Se o repositrio a que tentas aceder est protegido por palavra-passe, uma caixa de dilogo de autenticao ir surgir.
40
41
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:
42
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.
43
44
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.
45
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.
46
47
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.
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
49
50
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.
51
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.
52
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.
53
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.
54
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.
55
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.
56
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.
57
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.
Uma cpia de trabalho exportada de fresco possui uma marca de verificao verde como sobreposio. Isto significa que o estado Subversion normal.
58
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.
59
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.
60
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
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.
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.
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
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
63
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.
64
Se uma reviso modificou um ficheiro ou pasta, o cone modificado mostrado na primeira coluna.
65
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
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
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.
68
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
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.
70
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.
71
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.
72
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.
73
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 ;-)
74
75
76
77
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.
78
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.
79
80
81
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.
82
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....
83
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.
84
85
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].
86
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
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.
88
89
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.
90
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.
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.
91
92
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
Para mais informao sobre as propriedades no Subversion, consulta Special Properties [http:// svnbook.red-bean.com/en/1.5/svn.advanced.props.html].
94
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.
Submeter as propriedades
As propriedades do Subversion so versionadas. Depois de alterares ou adicionares uma propriedade, ters de submeter essa alterao.
95
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.
96
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.
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
repositrio para impor as polticas de projecto. Propriedades de projecto s podem ajudar a implementar uma poltica, nuca podem imp-la.
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.
98
../../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
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.19. Ramificando/Etiquetando
100
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.
101
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/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.
102
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.
4.20. Integrar
103
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
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.
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
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
106
107
108
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.
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
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.
110
111
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
113
114
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
116
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.
117
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.
118
119
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.
120
121
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
nela e usa o Menu de contexto Copiar mensagem de erro para a rea de transferncia, ou usa simplesmenteCtrl+C.
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
124
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
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.
126
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.
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.
127
128
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
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.
130
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.
131
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.
132
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.
133
134
% 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.
135
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
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
138
139
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
141
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.
142
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.
143
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.
144
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
146
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 :
147
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.
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
149
"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
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].
151
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.
152
%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
Figura 4.62. A Caixa de Dilogo Preferncias, Caixa de Dilogo Comparar/ Integrar Avanados
153
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.
154
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.
155
156
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.
157
158
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.
159
160
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
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).
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
Please check the documentation of your IBugtraqProvider plugin to find out what to specify in these two properties.
163
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
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.
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].
165
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
$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.
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$.
// 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";
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.
.Revision .Date .Author .MinRev .MaxRev .HasModifications .Url .IsSvnItem .NeedsLocking .IsLocked
168
O Programa SubWCRev
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.
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
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.
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
175
176
177
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.
178
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.
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
TortoiseProc.exe /command:repobrowser /path:"url/to/repository" claro que necessitas de inserir o URL do repositrio real.
180
1.4.1.6000
181
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.
182
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
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
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.
184
Automatizar o TortoiseSVN
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.
:commit
:merge
:mergeall :copy
185
Automatizar o TortoiseSVN
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
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.
:unlock :rebuildiconcache
:properties
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
187
Automatizar o TortoiseSVN
188
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.
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.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.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.
svn info URL_of_WC svn log -v URL onde o URL a raiz do repositrio, e ento analisa os dados retornados.
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.11. Resolvido
svn resolved 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.
E.2.15. Limpar
svn limpar PATH
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
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
E.2.22. Reposicionar
svn switch --relocate From_URL To_URL
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.
194
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
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.
197
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
198
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.
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
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.
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
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