Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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. TortoiseSVN's Features .................................................................................................... 1 1.4. Instalando o TortoiseSVN ................................................................................................ 2 1.4.1. Requesitos de sistema ........................................................................................... 2 1.4.2. Instalao ............................................................................................................ 2 1.4.3. Pacotes de Linguas ............................................................................................... 3 1.4.4. Corretor Ortogrfico ............................................................................................. 3 2. Conceitos Bsicos de Controle de Verses ..................................................................................... 4 2.1. O Repositrio ................................................................................................................. 4 2.2. Modelos de Controle de Verses ....................................................................................... 4 2.2.1. O Probelma de Partilha de Ficheiros ........................................................................ 4 2.2.2. A soluo de Bloquear-Moficar-Desbloquear ............................................................. 5 2.2.3. A soluo de Copiar-Modificar-Integrar .................................................................... 6 2.2.4. What does Subversion Do? .................................................................................... 9 2.3. Subversion em Aco ...................................................................................................... 9 2.3.1. Cpias de trabalho. ............................................................................................... 9 2.3.2. Repository URLs ................................................................................................ 11 2.3.3. Revisions .......................................................................................................... 11 2.3.4. How Working Copies Track the Repository ............................................................. 13 2.4. Summary ..................................................................................................................... 13 3. O Repositrio ......................................................................................................................... 14 3.1. Repository Creation ....................................................................................................... 14 3.1.1. Creating a Repository with the Command Line Client ................................................ 14 3.1.2. Creating The Repository With TortoiseSVN ............................................................ 14 3.1.3. Local Access to the Repository ............................................................................. 15 3.1.4. Accessing a Repository on a Network Share ............................................................ 15 3.1.5. Repository Layout .............................................................................................. 16 3.2. Repository Backup ........................................................................................................ 17 3.3. Server side hook scripts ................................................................................................. 17 3.4. Checkout Links ............................................................................................................. 18 3.5. Accessing the Repository ................................................................................................ 18 3.6. Svnserve Based Server ................................................................................................... 19 3.6.1. Introduo ......................................................................................................... 19 3.6.2. Instalar svnserve ................................................................................................. 19 3.6.3. Executar svnserver .............................................................................................. 19 3.6.4. Basic Authentication with svnserve ........................................................................ 21 3.6.5. Better Security with SASL ................................................................................... 22 3.6.6. Authentication with svn+ssh ................................................................................. 23 3.6.7. Path-based Authorization with svnserve .................................................................. 23 3.7. Apache Based Server ..................................................................................................... 24 3.7.1. Introduo ......................................................................................................... 24 3.7.2. Installing Apache ................................................................................................ 24 3.7.3. Installing Subversion ........................................................................................... 25 3.7.4. Configuration ..................................................................................................... 25 3.7.5. Multiple Repositories .......................................................................................... 27 3.7.6. Path-Based Authorization ..................................................................................... 27
iii
TortoiseSVN
3.7.7. Authentication With a Windows Domain ................................................................ 3.7.8. Multiple Authentication Sources ............................................................................ 3.7.9. Securing the server with SSL ................................................................................ 3.7.10. Using client certificates with virtual SSL hosts ....................................................... 4. Daily Use Guide ..................................................................................................................... 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 ..............................................................................
28 29 30 32 34 34 34 34 36 37 37 38 38 38 40 40 40 41 43 43 45 45 45 47 48 49 50 50 54 54 55 55 57 58 60 61 61 62 66 67 67 68 69 69 73 73 73 74 75 75 77 78 78 79 80 81 82 82
iv
TortoiseSVN
4.14.2. Movendo ficheiros e pastas ................................................................................. 83 4.14.3. Mudando maisculas e minsculas no nome do ficheiro ........................................... 84 4.14.4. Lidando com conflitos de maisculas e minsculas no nome do ficheiro ...................... 84 4.14.5. Reparando Renomeaes de Ficheiros ................................................................... 84 4.14.6. Removendo Ficheiros No Versionados ................................................................ 85 4.15. Desfazer Alteraes ..................................................................................................... 85 4.16. Limpar ....................................................................................................................... 86 4.17. Configuraes de Projecto ............................................................................................. 86 4.17.1. Propriedades Subversion ..................................................................................... 87 4.17.2. Propriedades de Projecto TortoiseSVN .................................................................. 91 4.18. Itens Externos ............................................................................................................. 92 4.18.1. Pastas Externas ................................................................................................. 92 4.18.2. Ficheiros Externos ............................................................................................. 95 4.19. Ramificando/Etiquetando .............................................................................................. 95 4.19.1. Criando um Ramo ou Etiqueta ............................................................................ 95 4.19.2. SVN Exportar ou Trocar... .................................................................................. 97 4.20. Integrar ...................................................................................................................... 98 4.20.1. A Integrar Um Intervalo de Revises .................................................................... 99 4.20.2. Reintegrar um ramo ......................................................................................... 101 4.20.3. A Integrar Duas rvores Diferentes .................................................................... 102 4.20.4. Opes de Integrao ....................................................................................... 103 4.20.5. Rever os Resultados de Integrao ...................................................................... 104 4.20.6. Rastreamento de Integrao ............................................................................... 105 4.20.7. Lidando com Conflitos durante a Integrao ......................................................... 105 4.20.8. Integrar um Ramo Completo ............................................................................. 106 4.20.9. Manuteno do Ramo de Funcionalidade ............................................................. 107 4.21. A bloquear ............................................................................................................... 107 4.21.1. Como Funciona o Sistema de Bloqueio no Subversion ............................................ 108 4.21.2. Obter um Bloquieo .......................................................................................... 108 4.21.3. Libertar um Bloqueio ....................................................................................... 109 4.21.4. Verificar o Estado dos Bloqueio ......................................................................... 110 4.21.5. Tornar os Ficheiros No-Bloqueados S de Leitura ................................................ 110 4.21.6. Os Scripts do Gancho de Bloqueio ..................................................................... 111 4.22. Criar e Applicar Correces ......................................................................................... 111 4.22.1. Criar um Ficheiro de Correco ......................................................................... 111 4.22.2. Aplicar um Ficheiro de Correco ...................................................................... 112 4.23. Quem Alterou Que Linha ............................................................................................ 112 4.23.1. Responsabilidade para Ficheiros ......................................................................... 113 4.23.2. Diferenas de responsabilidade .......................................................................... 115 4.24. O Navegador de Repositrio ........................................................................................ 115 4.25. Grficos de Revises .................................................................................................. 118 4.25.1. Ns do Grfico de Revises .............................................................................. 119 4.25.2. Alterando a Vista ............................................................................................ 119 4.25.3. Utilizar o Grfico ............................................................................................ 121 4.25.4. Refrescar a Vista ............................................................................................. 122 4.25.5. Podar as rvores ............................................................................................. 122 4.26. Exportar uma Cpia de Trabalho do Subversion .............................................................. 122 4.26.1. Remover uma cpia de trabalho do controlo de verses .......................................... 124 4.27. Reposicionar uma cpia de trabalho .............................................................................. 124 4.28. Integrao com Sistemas de identificao de Bugs/Gestores de Problemas ............................ 125 4.28.1. Adicionar Nmeros de Problemas nas Mensagens de Registo ................................... 125 4.28.2. Obter Informaes do Gestor de Problemas .......................................................... 128 4.29. Integrao com visualizadores de repositrio Web-based ................................................... 129 4.30. Preferncias do TortoiseSVN ....................................................................................... 129 4.30.1. Preferncias Gerais .......................................................................................... 130 4.30.2. Preferncias do Grfico de Revises ................................................................... 137 4.30.3. Preferncias de Sobreposio de cones ............................................................... 140 4.30.4. Preferncias de Rede ........................................................................................ 143
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. Revision Graph ................................................................................................ E.2.9. Repo Browser .................................................................................................. E.2.10. Editar Conflitos .............................................................................................. E.2.11. Resolved .......................................................................................................
144 147 148 151 155 155 157 157 158 158 158 159 160 163 163 164 167 168 168 168 168 168 169 169 169 169 170 170 170 170 171 171 171 171 172 172 173 173 173 174 174 176 176 179 181 181 181 181 181 182 182 182 183 183 183 183 183 183
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. Pormenores de Implemtao .................................................................................................... F.1. Sobreposio de cones ................................................................................................ G. Proteco de Svnserve com SSH .............................................................................................. G.1. Instalao de um servidor Linux .................................................................................... G.2. Instalao de um servidor Windows ............................................................................... G.3. Utilitrios de client SSH para utilizao com TortoiseSVN ................................................. G.4. Criao de certificados OpenSSH .................................................................................. G.4.1. Criar chaves com ssh-keygen .............................................................................. G.4.2. Criar chaves com PuTTYgen .............................................................................. G.5. Testar com PuTTY ..................................................................................................... G.6. Testar SSH com TortoiseSVN ....................................................................................... G.7. Variantes de Configurao de SSH ................................................................................ Glossrio .................................................................................................................................. ndice Remissivo .......................................................................................................................
184 184 184 184 184 184 184 185 185 185 185 185 185 186 186 186 186 186 187 187 189 189 189 190 190 190 190 190 191 192 193 196
vii
Lista de Figuras
2.1. Um sistema tpico Cliente/Servidor ............................................................................................ 4 2.2. O Problema a Evitar ............................................................................................................... 5 2.3. A soluo de Bloquear-Moficar-Desbloquear ............................................................................... 6 2.4. A soluo de Copiar-Modificar-Integrar ...................................................................................... 7 2.5. ...Copiar-Modificar-Integrar Continuao ..................................................................................... 8 2.6. The Repository's Filesystem .................................................................................................... 10 2.7. O Repositrio ....................................................................................................................... 12 3.1. The TortoiseSVN menu for unversioned folders ......................................................................... 14 4.1. O explorador mostrando os cones sobrepostos ........................................................................... 34 4.2. Menu de Contexto de uma pasta sob controlo de verses. ............................................................. 35 4.3. Explorer file menu for a shortcut in a versioned folder ................................................................. 36 4.4. Menu arrastar com o boto direito para uma pasta sob controlo de verses. ...................................... 37 4.5. Caixa de dilogo de autenticao ............................................................................................. 38 4.6. Caixa de dilogo Importar ...................................................................................................... 39 4.7. The Checkout dialog .............................................................................................................. 41 4.8. A Caixa de Dilogo Submeter ................................................................................................. 43 4.9. A Verificao de Sintaxe na Caixa de Dilogo Submeter .............................................................. 46 4.10. A caixa de dialogo de Progresso, mostrando a submisso em progresso ......................................... 47 4.11. Caixa de dilogo de progresso mostrando uma actualizao finalizada. .......................................... 48 4.12. O explorador mostrando os cones sobrepostos ......................................................................... 54 4.13. Verificar Modificaes ......................................................................................................... 56 4.14. Caixa de dilogo Submeter com Listas de Alteraes ................................................................. 59 4.15. A Caixa de Dilogo Registo de Reviso .................................................................................. 61 4.16. O Painel de Topo da Caixa de Dilogo Registo de Revises com Menu de Contexto ......................... 62 4.17. Menu de Contexto do Painel Superior para 2 revises seleccionadas ............................................. 64 4.18. The Log Dialog Bottom Pane with Context Menu ..................................................................... 65 4.19. A Caixa de Dilogo Registo Mostra Rasto das Revises de Integrao ........................................... 68 4.20. Histograma de Submisses-por-Autor ...................................................................................... 70 4.21. Grfico de queijo Submisses-por-Autor .................................................................................. 71 4.22. Grfico de Submisses-por-data ............................................................................................. 72 4.23. Caixa de dilogo Colocar-se em Fora de Linha ......................................................................... 73 4.24. A Caixa de Dilogo Comparar Revises .................................................................................. 76 4.25. O leitor de diferenas de imagem ........................................................................................... 77 4.26. Menu de contexto do Explorador para ficheiros no versionados .................................................. 78 4.27. Menu arrastar com o boto direito para uma pasta sob controlo de verses. ..................................... 79 4.28. Menu de contexto do Explorador para ficheiros no versionados .................................................. 80 4.29. Menu de contexto do Explorador para ficheiros versionados ........................................................ 82 4.30. Caixa de Dilogo Reverter .................................................................................................... 85 4.31. Pgina de propriedades do explorador, aba do Subversion ........................................................... 87 4.32. Pgina de propriedades do Subversion ..................................................................................... 88 4.33. Adicionando propriedades ..................................................................................................... 89 4.34. A Caixa de Dilogo de Ramificar/Etiquetar .............................................................................. 96 4.35. A Caixa de Dilogo Trocar ................................................................................................... 98 4.36. O Assistente de Integrao - Seleciona o Intervalo de Revises .................................................. 100 4.37. O Assistente de Integrao - Integrao para Reintegrar ............................................................ 102 4.38. O Assistente de Integrao - Integrao de rvores .................................................................. 103 4.39. A Caixa de Dilogo Conflitos de Integrao ........................................................................... 106 4.40. Caixa de Dilogo de reintegrao de Integrao ...................................................................... 107 4.41. A Caixa de Dilogo Bloquear .............................................................................................. 109 4.42. A Caixa de Dilogo Verificar Alteraes ............................................................................... 110 4.43. A caixa de dilogo de Criar Correco .................................................................................. 111 4.44. A Caixa de Dilogo de Anotar/Responsabilizar ....................................................................... 113 4.45. TortoiseBlame ................................................................................................................... 114 4.46. O Navegador de Repositrio ................................................................................................ 116 4.47. O Grfico de Revises ........................................................................................................ 118
viii
TortoiseSVN
4.48. A Caixa de Dilogo Exportar-do-URL ................................................................................... 4.49. The Relocate Dialog ........................................................................................................... 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 ..........................................................................................
123 124 128 130 132 133 135 136 137 138 140 142 143 144 146 147 148 150 151 152 154 155 173
ix
Lista de Tabelas
2.1. Repository Access URLs ........................................................................................................ 11 3.1. Apache httpd.conf Settings ............................................................................................... 26 5.1. Lista de opes de linha de comando disponveis ...................................................................... 158 5.2. Mtodos COM/automao suportados ..................................................................................... 160 C.1. Entradas de menu e seus valores ............................................................................................ 174 D.1. Lista de comandos e opes disponveis ................................................................................. 176 D.2. Lista de opes disponveis .................................................................................................. 179
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. In Captulo 2, Conceitos Bsicos de Controle de Verses we give a short introduction to the Subversion revision control system which underlies TortoiseSVN. This is borrowed from the documentation for the Subversion project and explains the different approaches to version control, and how Subversion works. The chapter on Captulo 3, O Repositrio explains how to set up a local repository, which is useful for testing Subversion and TortoiseSVN using a single PC. It also explains a bit about repository administration which is also relevant to repositories located on a server. There is also a section here on how to setup a server if you need one. The Captulo 4, Daily Use Guide is the most important section as it explains all the main features of TortoiseSVN and how to use them. It takes the form of a tutorial, starting with checking out a working copy, modifying it, committing your changes, etc. It then progresses to more advanced topics. Captulo 5, O Programa SubWCRev is a separate program included with TortoiseSVN which can extract the information from your working copy and write it into a file. This is useful for including build information in your projects. The Apndice B, Como Farei Para... section answers some common questions about performing tasks which are not explicitly covered elsewhere. The section on Apndice D, Automatizar o TortoiseSVN shows how the TortoiseSVN GUI dialogs can be called from the command line. This is useful for scripting where you still need user interaction. The Apndice E, Referncia Cruzada da Interface de Linha de Comandos give a correlation between TortoiseSVN commands and their equivalents in the Subversion command line client svn.exe.
xi
Prefcio
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
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
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 hardlink. Sendo assim, estas operaes necessitam de apenas de uma pequena e constante fraco de tempo , necessitando de muito pouco espao no repositrio. Hackabilidade O Subversion no tem bagagem histrica; est implementado como uma coleco de bibliotecas partilhadas em C com APIs bem definidas. Isto torna o Subversion extremamente manutenvel e usvel por outras aplicaes e linguagens.
1.4.2. Instalao
Introduo
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.
2.1. O Repositrio
O Subversion um sistema centralizado para partilha de informao. No seu cerne est o repository
moments later) Sally could accidentally overwrite them with her own new version of the file. While Harry's version of the file won't be lost forever (because the system remembers every change), any changes Harry made won't be present in Sally's newer version of the file, because she never saw Harry's changes to begin with. Harry's work is still effectively lost - or at least missing from the latest version of the file - and probably by accident. This is definitely a situation we want to avoid!
Users then work in parallel, modifying their private copies. Finally, the private copies are merged together into a new, final version. The version control system often assists with the merging, but ultimately a human being is responsible for making it happen correctly. Here's an example. Say that Harry and Sally each create working copies of the same project, copied from the repository. They work concurrently, and make changes to the same file A within their copies. Sally saves her changes to the repository first. When Harry attempts to save his changes later, the repository informs him that his file A is out-of-date. In other words, that file A in the repository has somehow changed since he last copied it. So Harry asks his client to merge any new changes from the repository into his working copy of file A. Chances are that Sally's changes don't overlap with his own; so once he has both sets of changes integrated, he saves his working copy back to the repository.
But what if Sally's changes do overlap with Harry's changes? What then? This situation is called a conflict, and it's usually not much of a problem. When Harry asks his client to merge the latest repository changes into his working copy, his copy of file A is somehow flagged as being in a state of conflict: he'll be able to see both sets of conflicting changes, and manually choose between them. Note that software can't automatically resolve conflicts; only humans are capable of understanding and making the necessary intelligent choices. Once Harry has manually resolved the overlapping changes (perhaps by discussing the conflict with Sally!), he can safely save the merged file back to the repository. The copy-modify-merge model may sound a bit chaotic, but in practice, it runs extremely smoothly. Users can work in parallel, never waiting for one another. When they work on the same files, it turns out that most of their concurrent changes don't overlap at all; conflicts are infrequent. And the amount of time it takes to resolve conflicts is far less than the time lost by a locking system. In the end, it all comes down to one critical factor: user communication. When users communicate poorly, both syntactic and semantic conflicts increase. No system can force users to communicate perfectly, and no system can detect semantic conflicts. So there's no point in being lulled into a false promise that a locking system will somehow prevent conflicts; in practice, locking seems to inhibit productivity more than anything else. There is one common situation where the lock-modify-unlock model comes out better, and that is where you have unmergeable files. For example if your repository contains some graphic images, and two people change the image at the same time, there is no way for those changes to be merged together. Either Harry or Sally will lose their changes.
10
file:///X:/path/to/repos ... file:///X|/path/to/repos ... Note that a URL uses ordinary slashes even though the native (non-URL) form of a path on Windows uses backslashes. You can safely access a FSFS repository via a network share, but you cannot access a BDB repository in this way.
Ateno
Do not create or access a Berkeley DB repository on a network share. It cannot exist on a remote filesystem. Not even if you have the network drive mapped to a drive letter. If you attempt to use Berkeley DB on a network share, the results are unpredictable - you may see mysterious errors right away, or it may be months before you discover that your repository database is subtly corrupted.
2.3.3. Revisions
A svn commit operation can publish changes to any number of files and directories as a single atomic transaction. In your working copy, you can change files' contents, create, delete, rename and copy files and directories, and then commit the complete set of changes as a unit. In the repository, each commit is treated as an atomic transaction: either all the commits changes take place, or none of them take place. Subversion retains this atomicity in the face of program crashes, system crashes, network problems, and other users' actions. Each time the repository accepts a commit, this creates a new state of the filesystem tree, called a revision. Each revision is assigned a unique natural number, one greater than the number of the previous revision. The initial revision of a freshly created repository is numbered zero, and consists of nothing but an empty root directory.
11
A nice way to visualize the repository is as a series of trees. Imagine an array of revision numbers, starting at 0, stretching from left to right. Each revision number has a filesystem tree hanging below it, and each tree is a snapshot of the way the repository looked after each commit.
calc/Makefile:4 integer.c:4 button.c:4 At the moment, this working directory corresponds exactly to revision 4 in the repository. However, suppose you make a change to button.c, and commit that change. Assuming no other commits have taken place, your commit will create revision 5 of the repository, and your working copy will now look like this:
calc/Makefile:4 integer.c:4 button.c:5 Suppose that, at this point, Sally commits a change to integer.c, creating revision 6. If you use svn update to bring your working copy up to date, then it will look like this:
12
calc/Makefile:6 integer.c:6 button.c:6 Sally's changes to integer.c will appear in your working copy, and your change will still be present in button.c. In this example, the text of Makefile is identical in revisions 4, 5, and 6, but Subversion will mark your working copy of Makefile with revision 6 to indicate that it is still current. So, after you do a clean update at the top of your working copy, it will generally correspond to exactly one revision in the repository.
2.4. Summary
We've covered a number of fundamental Subversion concepts in this chapter: We've introduced the notions of the central repository, the client working copy, and the array of repository revision trees. We've seen some simple examples of how two collaborators can use Subversion to publish and receive changes from one another, using the 'copy-modify-merge' model. We've talked a bit about the way Subversion tracks and manages information in a working copy.
13
Captulo 3. O Repositrio
No matter which protocol you use to access your repositories, you always need to create at least one repository. This can either be done with the Subversion command line client or with TortoiseSVN. If you haven't created a Subversion repository yet, it's time to do that now.
svnadmin create --fs-type fsfs MyNewRepository Now you've got a new repository located at D:\SVN\MyNewRepository.
14
O Repositrio
A repository is then created inside the new folder. Don't edit those files yourself!!!. If you get any errors make sure that the folder is empty and not write protected.
Dica
TortoiseSVN no longer offers the option to create BDB repositories, although you can still use the command line client to create them. FSFS repositories are generally easier for you to maintain, and also makes it easier for us to maintain TortoiseSVN due to compatibility issues between the different BDB versions. 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. Of course we also recommend that you don't use file:// access at all, apart from local testing purposes. Using a server is more secure and more reliable for all but single-developer use.
Ateno
Do not create or access a Berkeley DB repository on a network share. It cannot exist on a remote file system. Not even if you have the network drive mapped to a drive letter. If you attempt to use Berkeley DB on a network share, the results are unpredictable - you may see mysterious errors right away, or it may be months before you discover that your repository database is subtly corrupted.
15
O Repositrio
/trunk /branches /tags If a repository contains multiple projects, people often index their layout by branch:
/paint/trunk /paint/branches /paint/tags /calc/trunk /calc/branches /calc/tags Indexing by project makes sense if the projects are not closely related and each one is checked out individually. For related projects where you may want to check out all projects in one go, or where the projects are all tied together in a single distribution package, it is often better to index by branch. This way you have only one trunk to checkout, and the relationships between the sub-projects is more easily visible. If you adopt a top level /trunk /tags /branches approach, there is nothing to say that you have to copy the entire trunk for every branch and tag, and in some ways this structure offers the most flexibility. For unrelated projects you may prefer to use separate repositories. When you commit changes, it is the revision number of the whole repository which changes, not the revision number of the project. Having 2 unrelated projects share a repository can mean large gaps in the revision numbers. The Subversion and TortoiseSVN projects appear at the same host address, but are completely separate repositories allowing independent development, and no confusion over build numbers. Of course, you're free to ignore these common layouts. You can create any sort of variation, whatever works best for you or your team. Remember that whatever you choose, it's not a permanent commitment. You can reorganize your repository at any time. Because branches and tags are ordinary directories, TortoiseSVN can move or rename them however you wish. Switching from one layout to another is just a matter of issuing a series of server-side moves; If you don't like the way things are organized in the repository, just juggle the directories around. So if you haven't already created a basic folder structure inside your repository you should do that now. There are two ways to achieve this. If you simply want to create a /trunk /tags /branches structure, you can use the repository browser to create the three folders (in three separate commits). If you want to create a deeper hierarchy then it is simpler to create a folder structure on disk first and import it in a single commit, like this:
16
O Repositrio
1. create a new empty folder on your hard drive 2. create your desired top-level folder structure inside that folder - don't put any files in it yet! 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. Note that the name of the folder you are importing does not appear in the repository, only its contents. For example, create the following folder structure:
C:\Temp\New\trunk C:\Temp\New\branches C:\Temp\New\tags Import C:\Temp\New into the repository root, which will then look like this:
svnadmin hotcopy path/to/repository path/to/backup --clean-logs to create a copy of your repository in a safe manner. Then backup the copy. The --clean-logs option is not required, but removes any redundant log files when you backup a BDB repository, which may save some space. The svnadmin tool is installed automatically when you install the Subversion command line client. If you are installing the command line tools on a Windows PC, the best way is to download the Windows installer version. It is compressed more efficiently than the .zip version, so the download is smaller, and it takes care of setting the paths for you. You can download the latest version of the Subversion command line client from http:// subversion.apache.org/getting.html.
17
O Repositrio
Sample hook scripts can be found in the hooks directory of the repository. These sample scripts are suitable for Unix/Linux servers but need to be modified if your server is Windows based. The hook can be a batch file or an executable. The sample below shows a batch file which might be used to implement a pre-revprop-change hook.
rem Only allow log messages to be changed. if "%4" == "svn:log" exit 0 echo Property '%4' cannot be changed >&2 exit 1 Note that anything sent to stdout is discarded. if you want a message to appear in the Commit Reject dialog you must send it to stderr. In a batch file this is achieved using >&2
<a href="tsvn:http://project.domain.org/svn/trunk"> </a> Of course it would look even better if you included a suitable picture. You can use the TortoiseSVN logo [http:// tortoisesvn.tigris.org/images/TortoiseCheckout.png] or you can provide your own image.
<a href="tsvn:http://project.domain.org/svn/trunk"> <img src=TortoiseCheckout.png></a> You can also make the link point to a specific revision, for example
18
O Repositrio
The next sections are a step-by-step guide on how you can set up such a server on a Windows machine. Of course you can also set up a server on a Linux machine, but that is beyond the scope of this guide. More detailed information on the Subversion server options, and how to choose the best architecture for your situation, can be found in the Subversion book under Server Configuration [http://svnbook.red-bean.com/en/1.5/svn.serverconfig.html].
svnserve.exe --daemon svnserve will now start waiting for incoming requests on port 3690. The --daemon switch tells svnserve to run as a daemon process, so it will always exist until it is manually terminated. If you have not yet created a repository, follow the instructions given with the Apache server setup Seco 3.7.4, Configuration. To test that svnserve is working, use TortoiseSVN Repo-Browser to view a repository. Assuming your repository is located in c:\repos\TestRepo, and your server is called localhost, enter:
svn://localhost/repos/TestRepo when prompted by the repo browser. You can also increase security and save time entering URLs with svnserve by using the --root switch to set the root location and restrict access to a specified directory on the server:
19
O Repositrio
svnserve.exe --daemon --root drive:\path\to\repository\root Using the previous test as a guide, svnserve would now run as:
svnserve.exe --daemon --root c:\repos And in TortoiseSVN our repo-browser URL is now shortened to:
svn://localhost/TestRepo Note that the --root switch is also needed if your repository is located on a different partition or drive than the location of svnserve on your server. Svnserve will service any number of repositories. Just locate them somewhere below the root folder you just defined, and access them using a URL relative to that root.
Ateno
Do not create or access a Berkeley DB repository on a network share. It cannot exist on a remote filesystem. Not even if you have the network drive mapped to a drive letter. If you attempt to use Berkeley DB on a network share, the results are unpredictable - you may see mysterious errors right away, or it may be months before you discover that your repository database is subtly corrupted.
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)" Note the rather unusual command line format used by sc. In the key= value pairs there must be no space between the key and the = but there must be a space before the value.
Dica
Microsoft now recommend services to be run as under either the Local Service or Network Service account. Refer to The Services and Service Accounts Security Planning Guide [http://
20
O Repositrio
www.microsoft.com/technet/security/topics/serversecurity/serviceaccount/default.mspx]. To create the service under the Local Service account, append the following to the example above.
obj= "NT AUTHORITY\LocalService" Note that you would have to give the Local Service account appropriate rights to both Subversion and your repositories, as well as any applications which are used by hook scripts. The built-in group for this is called "LOCAL SERVICE". Once you have installed the service, you need to go to the services manager to start it (this time only; it will start automatically when the server reboots). For more detailed information, refer to Windows Service Support for Svnserve [http://svn.collab.net/repos/svn/ trunk/notes/windows-service.txt]. If you installed an earlier version of svnserve using the SVNService wrapper, and you now want to use the native support instead, you will need to unregister the wrapper as a service (remember to stop the service first!). Simply use the command
[general] anon-access = write However, you will not know who has made changes to a repository, as the svn:author property will be empty. You will also be unable to control who makes changes to a repository. This is a somewhat risky setup! One way to overcome this is to create a password database:
[general] anon-access = none auth-access = write password-db = userfile Where userfile is a file which exists in the same directory as svnserve.conf. This file can live elsewhere in your file system (useful for when you have multiple repositories which require the same access rights) and may be referenced using an absolute path, or a path relative to the conf directory. If you include a path, it must be written /the/unix/way. Using \ or drive letters will not work. The userfile should have a structure of:
21
O Repositrio
... This example would deny all access for unauthenticated (anonymous) users, and give read-write access to users listed in userfile.
Dica
If you maintain multiple repositories using the same password database, the use of an authentication realm will make life easier for users, as TortoiseSVN can cache your credentials so that you only have to enter them once. More information can be found in the Subversion book, specifically in the sections 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 Credentials Caching [http://svnbook.red-bean.com/en/1.5/ svn.serverconfig.netmodel.html#svn.serverconfig.netmodel.credcache]
use-sasl = true Second, create a file called svn.conf in a convenient location - typically in the directory where subversion is installed. Thirdly, create two new registry entries to tell SASL where to find things. Create a registry key named [HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library] and place two new string values inside it: SearchPath set to the directory path containing the sasl*.dll plugins (normally in the Subversion install directory), and ConfFile set to the directory containing the svn.conf file. If you used the CollabNet installer, these registry keys will already have been created for you. Edit the svn.conf file to contain the following:
pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: DIGEST-MD5 sasldb_path: C:\TortoiseSVN\sasldb The last line shows the location of the authentication database, which is a file called sasldb. This could go anywhere, but a convenient choice is the repository parent path. Make sure that the svnserve service has read access to this file.
22
O Repositrio
If svnserve was already running, you will need to restart it to ensure it reads the updated configuration. Now that everything is set up, all you need to do is create some users and passwords. To do this you need the saslpasswd2 program. If you used the CollabNet installer, that program will be in the install directory. Use a command something like this:
saslpasswd2 -c -f C:\TortoiseSVN\sasldb -u realm username The -f switch gives the database location, realm must be the same as the value you defined in your repository's svnserve.conf file, and username is exactly what you expect it to be. Note that the realm is not allowed to contain space characters. You can list the usernames stored in the database using the sasldblistusers2 program.
[sasl] use-sasl = true min-encryption = 128 max-encryption = 256 The min-encryption and max-encryption variables control the level of encryption demanded by the server. To disable encryption completely, set both values to 0. To enable simple checksumming of data (i.e., prevent tampering and guarantee data integrity without encryption), set both values to 1. If you wish to allow (but not require) encryption, set the minimum value to 0, and the maximum value to some bit-length. To require encryption unconditionally, set both values to numbers greater than 1. In our previous example, we require clients to do at least 128-bit encryption, but no more than 256-bit encryption.
[general] authz-db = authz Here, authz is a file you create to define the access permissions. You can use a separate file for each repository, or you can use the same file for several repositories. Read Seco 3.7.6, Path-Based Authorization for a description of the file format.
23
O Repositrio
Ateno
Please note that Windows XP without the service pack 1 will lead to bogus network data and could therefore corrupt your repository! 1. Download the latest version of the Apache web server from http://httpd.apache.org/download.cgi. Make sure that you download the version 2.2.x - the version 1.3.xx won't work! The msi installer for Apache can be found by clicking on other files, then browse to binaries/win32. You may want to choose the msi file apache-2.2.x-win32-x86-openssl-0.9.x.msi (the one that includes OpenSSL). 2. Once you have the Apache2 installer you can double click on it and it will guide you through the installation process. Make sure that you enter the server-URL correctly (if you don't have a DNS name for your server just enter the IP-address). I recommend to install Apache for All Users, on Port 80, as a Service. Note: if you already have IIS or any other program running which listens on port 80 the installation might fail. If that happens, go to the programs directory, \Apache Group\Apache2\conf and locate the file httpd.conf. Edit that file so that Listen 80 is changed to a free port, e.g. Listen 81. Then restart the installation - this time it should finish without problems. 3. Now test if the Apache web server is running correctly by pointing your web browser to http://localhost/ - a preconfigured Website should show up.
Cuidado
If you decide to install Apache as a service, be warned that by default it will run as the local system account. It would be a more secure practice for you to create a separate account for Apache to run as. Make sure that the account on the server that Apache is running as has an explicit entry in the repository directory's access control list (right-click directory | properties | security), with full control. Otherwise, users will not be able to commit their changes.
24
O Repositrio
Even if Apache runs as local system, you still need such an entry (which will be the SYSTEM account in this case). If Apache does not have this permission set up, your users will get Access denied error messages, which show up in the Apache error log as error 500.
#LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so Add the following two lines to the end of the LoadModule section.
3.7.4. Configuration
Now you have set up Apache and Subversion, but Apache doesn't know how to handle Subversion clients like TortoiseSVN yet. To get Apache to know which URL will be used for Subversion repositories you have to edit the Apache configuration file (usually located in c:\program files\apache group\apache2\conf \httpd.conf) with any text editor you like (e.g. Notepad): 1. At the end of the config file add the following lines:
<Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\SVN #SVNIndexXSLT "/svnindex.xsl" AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user
25
O Repositrio
</Location> This configures Apache so that all your Subversion repositories are physically located below D:\SVN. The repositories are served to the outside world from the URL: http://MyServer/svn/ . Access is restricted to known users/passwords listed in the passwd file. 2. To create the passwd file, open the command prompt (DOS-Box) again, change to the apache2 folder (usually c:\program files\apache group\apache2) and create the file by entering
bin\htpasswd -c passwd <username> This will create a file with the name passwd which is used for authentication. Additional users can be added with
bin\htpasswd passwd <username> 3. Restart the Apache service again. 4. Point your browser to http://MyServer/svn/MyNewRepository (where MyNewRepository is the name of the Subversion repository you created before). If all went well you should be prompted for a username and password, then you can see the contents of your repository. A short explanation of what you just entered: Setting <Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\SVN SVNIndexXSLT "/svnindex.xsl" AuthType Basic Explanation means that the Subversion repositories are available from the URL http://MyServer/svn/ tells Apache which module will be responsible to serve that URL - in this case the Subversion module. For Subversion version 1.3 and higher, this directive enables listing all the available repositories under SVNParentPath. tells Subversion to look for repositories below D:\SVN Used to make the browsing with a web browser prettier. is to activate basic authentication, i.e. Username/password
AuthName "Subversion repositori- is used as an information whenever an authentication dialog pops up to es" tell the user what the authentication is for AuthUserFile passwd AuthzSVNAccessFile Require valid-user specifies which password file to use for authentication Location of the Access file for paths inside a Subversion repository specifies that only users who entered a correct username/password are allowed to access the URL
Require valid-user to
26
O Repositrio
<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> Using a passwd file limits and grants access to all of your repositories as a unit. If you want more control over which users have access to each folder inside a repository you can uncomment the line
#AuthzSVNAccessFile svnaccessfile and create a Subversion access file. Apache will make sure that only valid users are able to access your / svn location, and will then pass the username to Subversion's AuthzSVNAccessFile module so that it can enforce more granular access based upon rules listed in the Subversion access file. Note that paths are specified either as repos:path or simply path. If you don't specify a particular repository, that access rule will apply to all repositories under SVNParentPath. The format of the authorization-policy file used by mod_authz_svn is described in Seco 3.7.6, Path-Based Authorization To make browsing the repository with a web browser 'prettier', uncomment the line
#SVNIndexXSLT "/svnindex.xsl" and put the files svnindex.xsl, svnindex.css and menucheckout.ico in your document root directory (usually C:/Program Files/Apache Group/Apache2/htdocs). The directory is set with the DocumentRoot directive in your Apache config file. You can get those three files directly from our source repository at http://tortoisesvn.googlecode.com/svn/trunk/ contrib/svnindex. (Seco 3, O TortoiseSVN grtis! explains how to access the TortoiseSVN source repository). The XSL file from the TortoiseSVN repository has a nice gimmick: if you browse the repository with your web browser, then every folder in your repository has an icon on the right shown. If you click on that icon, the TortoiseSVN checkout dialog is started for this URL.
[groups] admin = john, kate devteam1 = john, rachel, sally devteam2 = kate, peter, mark
27
O Repositrio
docs = bob, jane, mike training = zak # Default access rule for ALL repositories # Everyone can read, admins can write, Dan German is excluded. [/] * = r @admin = rw dangerman = # Allow developers complete access to their project repos [proj1:/] @devteam1 = rw [proj2:/] @devteam2 = rw [bigproj:/] @devteam1 = rw @devteam2 = rw trevor = rw # Give the doc people write access to all the docs folders [/trunk/doc] @docs = rw # Give trainees write access in the training repository only [TrainingRepos:/] @training = rw Note that checking every path can be an expensive operation, particularly in the case of the revision log. The server checks every changed path in each revision and checks it for readability, which can be time-consuming on revisions which affect large numbers of files. Authentication and authorization are separate processes. If a user wants to gain access to a repository path, she has to meet both, the usual authentication requirements and the authorization requirements of the access file.
28
O Repositrio
to
SSPIAuth On SSPIAuthoritative On SSPIDomain <domaincontroller> SSPIOmitDomain on SSPIUsernameCase lower SSPIPerRequestAuth on SSPIOfferBasic On within the <Location /svn> block. If you don't have a domain controller, leave the name of the domain control as <domaincontroller>. Note that if you are authenticating using SSPI, then you don't need the AuthUserFile line to define a password file any more. Apache authenticates your username and password against your windows domain instead. You will need to update the users list in your svnaccessfile to reference DOMAIN\username as well.
Importante
The SSPI authentication is only enabled for SSL secured connections (https). If you're only using normal http connections to your server, it won't work. To enable SSL on your server, see the chapter: Seco 3.7.9, Securing the server with SSL
Dica
Subversion AuthzSVNAccessFile files are case sensitive in regard to user names (JUser is different from juser). In Microsoft's world, Windows domains and user names are not case sensitive. Even so, some network administrators like to create user accounts in CamelCase (e.g. JUser). This difference can bite you when using SSPI authentication as the windows domain and user names are passed to Subversion in the same case as the user types them in at the prompt. Internet Explorer often passes the username to Apache automatically using whatever case the account was created with. The end result is that you may need at least two entries in your AuthzSVNAccessFile for each user -- a lowercase entry and an entry in the same case that Internet Explorer passes to Apache. You will also need to train your users to also type in their credentials using lower case when accessing repositories via TortoiseSVN. Apache's Error and Access logs are your best friend in deciphering problems such as these as they will help you determine the username string passed onto Subversion's AuthzSVNAccessFile module. You may need to experiment with the exact format of the user string in the svnaccessfile (e.g. DOMAIN\user vs. DOMAIN//user) in order to get everything working.
29
O Repositrio
A common scenario is to use both Windows domain authentication and a passwd file, so that you can provide SVN access to users who don't have a Windows domain login. To enable both Windows domain and passwd file authentication, add the following entries within the <Location> block of your Apache config file:
AuthBasicAuthoritative Off SSPIAuthoritative Off Here is an example of the full Apache configuration for combined Windows domain and passwd file authentication:
<Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\SVN AuthName "Subversion repositories" AuthzSVNAccessFile svnaccessfile.txt # NT Domain Logins. AuthType SSPI SSPIAuth On SSPIAuthoritative Off SSPIDomain <domaincontroller> SSPIOfferBasic On # Htpasswd Logins. AuthType Basic AuthBasicAuthoritative Off AuthUserFile passwd Require valid-user </Location>
30
O Repositrio
SSLMutex default 2. Next you need to create an SSL certificate. To do that open a command prompt (DOS-Box) and change to the Apache folder (e.g. C:\program files\apache group\apache2) and type the following command:
bin\openssl req -config conf\openssl.cnf -new -out my-server.csr You will be asked for a passphrase. Please don't use simple words but whole sentences, e.g. a part of a poem. The longer the phrase the better. Also you have to enter the URL of your server. All other questions are optional but we recommend you fill those in too. Normally the privkey.pem file is created automatically, but if it isn't you need to type this command to generate it:
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)
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. Restart the Apache service. 4. Point your browser to https://servername/svn/project ...
31
O Repositrio
Offer browsing with unencrypted authentication (without SSL) too. Strangely IE doesn't have any problems with authenticating if the connection is not secured with SSL. In the SSL "standard" setup there's often the following statement in Apache's virtual SSL host:
SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 There are (were?) good reasons for this configuration, see http://www.modssl.org/docs/2.8/ ssl_faq.html#ToC49 But if you want NTLM authentication you have to use keepalive. If You uncomment the whole SetEnvIf you should be able to authenticate IE with windows authentication over SSL against the Apache on Win32 with included mod_auth_sspi.
<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" This directive grants access to the directory only if a client certificate was received and verified successfully. To summarise, the relevant lines of the Apache configuration are:
32
O Repositrio
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>
33
4.1. Comeando
4.1.1. Sobreposio de cones
34
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!
35
36
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.
37
@echo off rmdir /s /q "%APPDATA%\Subversion\auth" Poders obter uma descrio de como instalar tal script em windows-help-central.com [http://www.windows-helpcentral.com/windows-shutdown-script.html]. Para mais informaes em como configurar o teu servidor em autenticao e controlo de acessos, consulta Seco 3.5, Accessing the Repository
38
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:
39
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.
40
41
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.
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!
42
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.
43
A caixa de dilogo submeter mostra-te cada ficheiro alterado, incluindo os adicionados, apagados e no versionados. Se no queres que um ficheiro alterado seja submetido, limpa a caixa de verificao desse ficheiro. Se quiseres adicionar um ficheiro no versionado, ento verifica esse ficheiro, para o adicionar submisso. Itens que foram comutados para um repositrio diferente so tambm indicados com o uso do marcador (s). Poders ter comutado algo enquanto trabalhavas num ramo, e esquecido de comutar de novo para o trunk. Isto um sinal de aviso!
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
44
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.
45
46
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.
47
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.
48
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.
49
conflitos de ficheiro Um conflito de ficheiro ocorre quando dois (ou mais) programadores alteraram o mesmo punhado de linhas do ficheiro. conflitos de rvore Um conflito de rvore ocorre quando um programador move/renomeia/apaga um ficheiro ou pasta, que outro programador tambm moveu/renomeou/apagou ou apenas modificou.
<<<<<<< filename your changes ======= code merged from repository >>>>>>> revision
Also, for every conflicted file Subversion places three additional files in your directory: filename.ext.mine This is the file that was theEste o teu ficheiro como existia na cpia de trabalho antes de a teres actualizado - Isto , sem marcadores de conflito. Este ficheiro tem as tuas ltimas alteraes a mais nada. filename.ext.rOLDREV Este o ficheiro que foi a reviso BASE antes de actualizares a cpia de trabalho. Isto , o ficheiro que tu SVN exportaste antes de efectuares as tuas ltimas alteraes. filename.ext.rNEWREV Este o ficheiro que o teu cliente Subversion acabou de receber do servidor, quando actualizaste a tua cpia de trabalho. Este ficheiro corresponde reviso HEAD do repositrio. Podes ento lanar uma ferramenta externa de fuso/editor de conflitos com TortoiseSVN Editar Conflitos ou podes usar qualquer outro editor para resolver o conflito manualmente. Deves decidir a aparncia do cdigo, efectuar as alteraes necessrias e guardar o ficheiro. 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.
50
Quando no Subversion, um ficheiro apagado localmente esse ficheiro tambm apagado no sistema de ficheiros local e, mesmo que este seja parte de um conflito de rvore no poder mostrar um cone de conflito sobreposto, e tu no poders clicar nele com o boto direito do rato para resolver o conflito. Usa ento a caixa de dilogo Verificar alteraes para aceder opo Editar conflito. O TortoiseSVN pode ajudar a encontrar o stio correcto para fundir as alteraes mas, poder ser necessrio trabalho adicional para resolver os conflitos. Lembra-te que aps a actualizao a reviso BASE de trabalho ir conter sempre a reviso de cada item como estava no repositrio, na altura da actualizao. Se reverteres uma alterao aps a actualizao esta voltar ao estado do repositrio e no, verso que estava quando comeaste a efectuar as tuas alteraes locais.
51
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.
52
53
Uma cpia de trabalho exportada de fresco possui uma marca de verificao verde como sobreposio. Isto significa que o estado Subversion normal.
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-deleitura 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.
54
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 torna-se 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.
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.
55
56
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, 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.
57
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 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
58
59
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.
60
Se uma reviso modificou um ficheiro ou pasta, o cone modificado mostrado na primeira coluna.
61
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. 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.
62
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.... 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.
63
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 Edit the log message or author attached to a previous commit. Read Seco 4.9.7, Alterando a Mensagem de Registo e Autor to find out how this works. 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.
64
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. The Log Dialog Bottom Pane with Context Menu
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. 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.
65
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.
66
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.
67
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.
68
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.
69
70
71
72
73
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.
74
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.
75
76
77
78
Se criastes novos ficheiros e/ou pastas durante o teu processo de desenvolvimento, ento precisas de adicion-los tambm ao controlo de verses. Selecciona o(s) ficheiro(s) e/ou pasta e usa TortoiseSVN Adicionar... Aps adicionares os ficheiros/pastas ao controlo de verses, o ficheiro aparece com o cone de sobreposio adicionado, o que significa que ters primeiro de submeter a tua cpia de trabalho para tornar esses ficheiros/pastas disponveis a outros programadores. Adicionar um ficheiro/pasta no afecta o repositrio!
Muitas Adies
Podes tambm usar o comando Adicionar em pastas j versionadas. Neste caso, a caixa de dilogo adicionar ir mostrar todos os ficheiros no versionados dentro dessa mesma pasta versionada. Isto ajuda no caso de teres muitos ficheiros novos, e precisares de os adicionares de uma s vez. Para adicionar ficheiros, de fora da tua cpia de trabalho, podes usar o manpulo para arrastar-e-largar: 1. Selecciona os ficheiros que queres adicionar 2. Arrasta-os com o boto direito para a nova localizao dentro da cpia de trabalho 3. Larga o boto direito do rato 4. Selecciona Menu de Contexto SVN Copiar e adicionar arquivos a esta Cpia de Trabalho. Os ficheiros sero ento copiados para a cpia de trabalho e adicionados ao controle de verses. Podes tambm adicionar ficheiros de dentro da cpia de trabalho, simplesmente arrastando com o boto direito e largando-os na caixa de dilogo submeter. Se adiconaste um ficheiro ou pasta por engano, podes desfazer a adio, antes de submeteres, usando TortoiseSVN Desfazer adio....
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.
79
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.
80
Se tu clicares com o boto direito num nico ficheiro no versionado e seleccionares, a partir do menu de contexto, o comando TortoiseSVN Adiconar lista de ignorados, um submenu aparecer permitindo-te seleccionar s aquele ficheiro ou todos com a mesma extenso. Se seleccionares mltiplos ficheiros, no haver submenu e s podes adicionar esses ficheiros/pastas especficos. Se queres remover um ou mais itens da lista de ignorados, clica com o boto direito nesse itens e selecciona TortoiseSVN Remover da lista de ignorados Podes ainda aceder propriedade svn:ignore da pasta. Isso permite-te especificar padres mais gerais usando caracteres de substituio de nome de ficheiros, descritos na seguinte seco. Consultar Seco 4.17, Configuraes de Projecto para mais informaes para configurar propriedades directamente. Por favor, ter em ateno que cada padro para ignorar tem de ser colocado numa linha separada, separ-los por espaos no resulta.
81
fazias em verses anteriores. Se queres ignorar todas as pastas tmp quando elas existem dentro da pasta prog, mas no dentro da pasta doc, devers usar em alternativa a propriedade svn:ignore. No h maneira fivel de conseguir isto com recurso a padres globais de ignorados.
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.
82
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. 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.
83
trio pai, provavelmente irritando muitas outras pessoas. Se necessitas de mover uma pasta de externos, devers usar um vulgar mover de linha de comando (shell), e ento ajustar as propriedades svn:externals das pastas pai de origem e destino.
84
desaparecido e o novo como ficheiro no versionado. Poderias apenas adicionar o ficheiro ao controlo de verses, mas assim perderias a sua histria, j que o Subversion no sabe que ambos os ficheiros esto relacionados. 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.
85
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.
86
87
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.red-bean.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. Para mais informao sobre as propriedades no Subversion, consulta Special Properties [http://svnbook.redbean.com/en/1.5/svn.advanced.props.html].
88
89
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.
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.
90
91
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 seguimento de problemas. Isto usa as propriedades de projecto que comeam com bugtraq:. Consulta Seco 4.28, Integrao com Sistemas de identificao de Bugs/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 repositrio para impor as polticas de projecto. Propriedades de projecto s podem ajudar a implementar uma poltica, nuca podem imp-la.
92
fixar as propriedades. Clica Adicionar.... Selecciona a propriedade svn:externals a partir da combobox e, escreve na caixa de edio o URL do repositrio, no formato url folder, ou se quiseres especificar uma reviso particular, -rREV url folder. Podes adicionar mltiplos projectos externos, 1 por linha.Supem que fixaste essas propriedades no D:\dev\project1:
http://sounds.red-bean.com/repos sounds http://graphics.red-bean.com/repos/fast%20graphics "quick graphs" -r21 http://svn.red-bean.com/repos/skin-maker skins/toolkit Agora clica Fixar e submete as tuas alteraes. Quando tu (ou outro utilizador qualquer) actualizar a cpia de trabalho, o Subversion ir criar uma subpasta D:\dev\project1\sounds e SVN exporta o projecto sounds, outra subpasta D:\dev\project1\quick_graphs, contendo o projecto graphics, e finalmente uma subpasta encadeada D:\dev\project1\skins\toolkit, contendo a reviso 21 do projecto skin-maker. Os URLs tm de ser convenientemente escapados, ou no iro funcionar, e.g. devers substituir cada espao com %20, como mostrado no segundo exemplo, em cima. Se queres que o caminho local inclua espaos ou outro caracter especial, tens rode-lo em aspas, ou usar o caracter \ (barra invertida), como um caracter de escape, ao estilo da linha de comandos do linux, precedendo cada caracter especial. claro que isto tambm significa que tens de necessriamente usar / (barra), como delimitador de caminho. De notar que este comportamento novo no Subversion 1.6 e, no funcionar com clientes mais antigos.
93
Relativo pasta pai Esses URLs comeam sempre com a cadeia de caracteres ../, por exemplo:
../../widgets/foo
common/foo-widget
. Isto ir extrair http://example.com/svn/repos-1/widgets/foo em C:\Working\common\foo-widget. De notar que, o URL relativo ao URL da pasta com a propriedade svn:externals e no, pasta onde o externo est escrito no disco. Relativo ao repositrio raiz Esses URLs comeam sempre com a cadeia de caracteres ^/, por exemplo:
^/widgets/foo
common/foo-widget
. Isto ir extrair http://example.com/svn/repos-1/widgets/foo em C:\Working\common\foo-widget. Poders facilmente referir-te a outros repositrios com o mesmo SVNParentPath (uma pasta comum contendo vrios repositrios). Por exemplo:
^/../repos-2/hammers/claw
common/claw-hammer
Isto ir extrair http://example.com/svn/repos-2/hammers/claw em C:\Working\common\claw-hammer. Relativo ao esquema URLs a comear com a cadeia de caracteres // copiam s a parte do esquema do URL. Isto til quando a mesma mquina necessita de ser acedida com esquemas diferentes, dependendo da 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.redbean.com/repos@19. Se necessitas de mais informao em como o TortoiseSVN lida com Propriedades, consulta Seco 4.17, Configuraes de Projecto.
94
Para saberes mais sobre os diferentes mtodos de aceder a subprojectos comuns, consulta Seco B.6, Incluir um subprojecto comum.
4.19. Ramificando/Etiquetando
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.
95
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.
96
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.
97
4.20. Integrar
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 us-los, 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.
98
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. 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.red-bean.com/en/1.5/svn.advanced.vendorbr.html] no livro do Subversion.
99
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. 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.
100
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
101
102
103
onados, mas no no repositrio. Por exemplo tu podes ter verses importadas 1 e 2 de 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.redbean.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 remove-lo do repositrio, se for requerido.
104
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.
105
106
4.21. A bloquear
Geralmente o Subversion funciona melhor sem bloqueios usando os mtodos Copiar-Modificar-Integrar descritos anteriormente em Seco 2.2.3, A soluo de 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.
107
108
109
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.
110
111
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.
112
Este comando lista, para cada linha num ficheiro, o autor e a reviso em que a linha foi alterada.
113
114
e linhas mais antigas em azul. A colorao por defeito algo clara, mas podes alter-lo 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.
115
116
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
117
problema no servidor. Se queres copiar esta mensagem, para a incluir num email, clica apenas 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.
118
119
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 desde a tua ltima actualizao, a tua CT poder estar algumas revises abaixo da HEAD. O n marcado com uma moldura a negrito.
120
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.
121
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.
122
123
Ateno
Esta uma operao muito raramente usada. O comando reposicionar s usado se o URL da raiz do repositrio foi alterado. Possveis razes: The IP address of the server has changed. The protocol has changed (e.g. http:// to https://). The repository root path in the server setup has changed. 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. No se aplica se:
124
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.
125
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-de-problema est vazio. Valores vlidos so true/false. Se no definido assumido o valor false.
126
If you want to catch bug IDs as used in the expression above inside a log message, you could use the following regex strings, which are the ones used by the TortoiseSVN project: [Ii]ssues?:?(\s*(,|and)?\s*# \d+)+ and (\d+) The first expression picks out issues #23, #24 and #25 from the surrounding log message. The second regex extracts plain decimal numbers from the output of the first regex, so it will return 23, 24 and 25 to use as bug IDs. Breaking the first regex down a little, it must start with the word issue, possibly capitalised. This is optionally followed by an s (more than one issue) and optionally a colon. This is followed by one or more groups each having zero or more leading whitespace, an optional comma or and and more optional space. Finally there is a mandatory # and a mandatory decimal number. If only one expression is set, then the bare bug IDs must be matched in the groups of the regex string. Example: [Ii]ssue(?:s)? #?(\d+) This method is required by a few issue trackers, e.g. trac, but it is harder to construct the regex. We recommend that you only use this method if your issue tracker documentation tells you to. If you are unfamiliar with regular expressions, take a look at the introduction at http://en.wikipedia.org/wiki/Regular_expression, and the online documentation and tutorial at http://www.regular-expressions.info/. If both the bugtraq:message and bugtraq:logregex properties are set, logregex takes precedence.
Dica
Even if you don't have an issue tracker with a pre-commit hook parsing your log messages, you still can use this to turn the issues mentioned in your log messages into links! And even if you don't need the links, the issue numbers show up as a separate column in the log dialog, making it easier to find the changes which relate to a particular issue. Algumas propriedades tsvn: requerem um valor true/false. O TortoiseSVN tambm entende yes como sinnimo para true e no como sinonimo para false.
127
doc/issuetrackers.txt] in the TortoiseSVN source repository. (Seco 3, O TortoiseSVN grtis! explains how to access the repository).
128
Neste exemplo tu podes seleccionar um ou mais problemas abertos. O plugin pode ento gerar um texto, especialmente formatado, que adicionar tua mensagem de registo.
129
130
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.redbean.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-de-verificao 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.
131
132
133
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.
134
135
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 precommit 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.
136
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.
137
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.
138
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.
139
140
Shell A cache executada directamente do interior da dll da extenso da shell, mas apenas para a pasta correntemente visvel. De cada vez que navegas para outra pasta, a informao de estado novamente adquirida. Vantagem: necessita apenas de muito pouca memria ( volta de 1MB de RAM) e pode mostrar o estado em tempo real. Desvantagem: Visto que s uma pasta posta em cache, as sobreposies no mostram recursivamente o estado. Para cpias de trabalho grandes, pode demorar mais tempo a mostrar uma pasta no explorador do que a opo por omisso. A coluna mime-type tambm no est disponvel. Nenhum Com esta preferncia o TortoiseSVN no adquire de modo algum o estado no Explorador. Devido a isso, os ficheiros no obtm uma sobreposio e as pastas s obtm a sobreposio 'normal', se estiverem versionadas. Nenhuma outra sobreposio mostrada, e tambm no est disponveis colunas extra. Vantagem: No usa absolutamente nenhuma memria adicional e no desacelera o Explorador ao navegar. Desvantagem: No mostrada no Explorador a informao de estado de ficheiros e pastas.Para veres se as tuas cpias de trabalho foram modificadas ters de usar a caixa de dilogo Verificar alteraes. O prximo grupo permite-te seleccionar quais as classes de armazenamento que devem mostrar sobreposies. Por defeito s unidades fixas esto seleccionadas. Podes mesmos desactivar todas as sobreposies de cones, mas qual seria a piada? Unidades de rede podem ser muito lentas, pelo que por defeito, os cones no so mostrados para cpias de trabalho localizadas em partilhas de rede. Unidades Flash USB parecem ser um caso especial em que o tipo de unidade identificado pelo prprio dispositivo. Algumas aparecem como unidades fixas e outra como amovveis. O Excluir caminhos usado para comunicar ao TortoiseSVN que esses caminhos para os quais no deve ser mostrado sobreposies de cones e colunas de estado. Isto til se tens algumas cpias de trabalho muito grandes, contendo s bibliotecas que no irs alterar e por isso no necessitam de sobreposies. por exemplo: f:\development\SVN\Subversion ir desactivar as sobreposies s nessa pasta especfica. Podes no entanto ver ainda as sobreposies, em todas as pastas e ficheiros, dentro dessa pasta. f:\development\SVN\Subversion* ir desactivar as sobreposies em todos os ficheiros e pastas cujos caminhos comecem por f:\development\SVN\Subversion. Isso significa que no vers sobreposies para qualquer ficheiro ou pasta debaixo desse caminho. O mesmo se aplica para o Incluir caminhos. excepo de que para esses caminhos as sobreposies so mostradas mesmo se estiverem desactivadas para esse tipo de unidade, ou por um caminho de excluso, especificado acima. Os utilizadores por vezes perguntam como essas preferncias interagem, e a resposta definitiva :
if (path is in include list) 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.
141
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 lembrar-te- 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.
142
"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.
143
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].
144
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\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-de-linha 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.
145
%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
146
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.
147
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.
148
Esta caixa de dilogo permite-te configurar a funcionalidade de cache de registo do TortoiseSVN, que retm uma cpia local das mensagens de registo e caminhos alterados, para longas descargas a partir do servidor. O uso da cache de registos pode acelerar dramaticamente a caixa de dilogo de registo e o grfico de revises. Outra funcionalidade til que as mensagens de registo podem ainda ser acedidas em modo fora-de-linha. Activar cache de registos Activa a cache de registo sempre que forem requisitados dados de registo. Se verificada, os dados sero, quando disponveis, adquiridos da cache e qualquer mensagem adquirida do servidor que no j l esteja, ser adicionada. Se a cache estiver desactivada, os dados sero sempre adquiridos directamente do servidor, e no sero armazenados localmente. Permitir URLs ambguos Ocasionalmente poders ter de te ligar a um servidor que usa o mesmo URL para todos os repositrios. Verses antigas do svnbridge podero ter este comportamento. Se necessitas aceder a tais repositrios ters de verificar esta opo. Se no, deixa-a como no verificada, para melhoria da performance. Permitir UUIDs ambguos Alguns servios de hospedagem do a todos os seus repositrios o mesmo UUID. Poders tu prprio o teres feito ao copiar uma pasta de repositrio para criar um novo. Por todo tipo de razes, isto uma m ideia um UUID deve ser nico. No entanto, a cache de registo poder funcionar nesta situao se tu verificares esta caixa. Se no precisas dela, deixa-a no verificada de modo a melhorar a performance. Se o repositrio no puder ser contactado Se ests a trabalhar fora-de-linha ou se o servidor do repositrio estiver em baixo, a cache de registo poder ser usada na mesma para fornecer as mensagens de registo j mantidas em cache. claro que a cache poder no estar actualizada, pelo que existem opes que te permitem seleccionar se esta funcionalidade dever ser usada. 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.
149
Clica no Actualizar para refrescar completamente a cache e preencher qualquer lacuna. Para um grande repositrio isto poder consumir muito tempo, mas ser til se estiveres prestes a entrar em modo fora-de-linha e queres a melhor cache disponvel. Clica no boto Exportar para exportar a cache inteira como um conjunto de ficheiros CSV. Isto poder ser til se quiseres processar os dados de registo usando um programa externo, embora seja maioritariamente til aos programadores. Clica no Remover para remover todos os dados em cache, para os repositrios seleccionados. Isto no desactiva a cache para o repositrio, pelo que a prxima vez que requisitares dados de registo, a nova cache ser criada.
150
ltima actualizao A ltima vez que o contedo da cache foi alterado. ltima actualizao da head A ltima vez que requisitmos a reviso HEAD do servidor. Autores O nmero de diferentes autores com mensagens gravadas na cache. 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.
151
152
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.
153
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-4FB1B3BE-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.
154
Please check the documentation of your IBugtraqProvider plugin to find out what to specify in these two properties.
155
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. 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.
156
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].
157
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$
$WCMIXED$ $WCMODS$
158
O Programa SubWCRev
Descrio 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.tmpl testfile.txt, o ficheiro de sada testfile.txt ir ficar assim:
// Ficheiro de teste para o SubWCRev: testfile.txt char char char char *Revision *Modified *Date *Range = = = = "3701"; "Modificado"; "2005/06/15 11:15:12"; "3699:3701";
159
O Programa SubWCRev
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 .LockCreationDate .LockOwner .LockComment
160
O Programa SubWCRev
// testCOM.js - javascript file // test script for the SubWCRev COM/Automation-object filesystem = new ActiveXObject("Scripting.FileSystemObject"); revObject1 revObject2 revObject3 revObject4 = = = = new new new new ActiveXObject("SubWCRev.object"); ActiveXObject("SubWCRev.object"); ActiveXObject("SubWCRev.object"); ActiveXObject("SubWCRev.object");
revObject1.GetWCInfo( filesystem.GetAbsolutePathName("."), 1, 1); revObject2.GetWCInfo( filesystem.GetAbsolutePathName(".."), 1, 1); revObject3.GetWCInfo( filesystem.GetAbsolutePathName("SubWCRev.cpp"), 1, 1); revObject4.GetWCInfo( filesystem.GetAbsolutePathName("..\\.."), 1, 1); wcInfoString1 = "Revision = " + revObject1.Revision + "\nMin Revision = " + revObject1.MinRev + "\nMax Revision = " + revObject1.MaxRev + "\nDate = " + revObject1.Date + "\nURL = " + revObject1.Url + "\nAuthor = " + revObject1.Author + "\nHasMods = " + revObject1.HasModifications + "\nIsSvnItem = " + revObject1.IsSvnItem + "\nNeedsLocking = " + revObject1.NeedsLocking + "\nIsLocked = " + revObject1.IsLocked + "\nLockCreationDate = " + revObject1.LockCreationDate + "\nLockOwner = " + revObject1.LockOwner + "\nLockComment = " + revObject1.LockComment; wcInfoString2 = "Revision = " + revObject2.Revision + "\nMin Revision = " + revObject2.MinRev + "\nMax Revision = " + revObject2.MaxRev + "\nDate = " + revObject2.Date + "\nURL = " + revObject2.Url + "\nAuthor = " + revObject2.Author + "\nHasMods = " + revObject2.HasModifications + "\nIsSvnItem = " + revObject2.IsSvnItem + "\nNeedsLocking = " + revObject2.NeedsLocking + "\nIsLocked = " + revObject2.IsLocked + "\nLockCreationDate = " + revObject2.LockCreationDate + "\nLockOwner = " + revObject2.LockOwner + "\nLockComment = " + revObject2.LockComment; 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 = " +
161
O Programa SubWCRev
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);
162
HRESULT ValidateParameters ( // Janela Pai para cada UI que necessita de ser // mostrada durante a validao. [in] HWND hParentWnd, // O parametro de string que necessita de ser validada. [in] BSTR parameters, // A string valida? [out, retval] VARIANT_BOOL *valid ); This method is called from the settings dialog where the user can add and configure the plugin. The parameters string can be used by a plugin to get additional required information, e.g., the URL to the issue tracker, login information, etc. The plugin should verify the parameters string and show an error dialog if the string is not valid. The hParentWnd parameter should be used for any dialog the plugin shows as the parent window. The plugin must return TRUE if the validation of the parameters string is successful. If the plugin returns FALSE, the settings dialog won't allow the user to add the plugin to a working copy path.
HRESULT GetLinkText ( // Janela pai para qualquer (erro) de UI que necessite de ser mostrado. [in] HWND hParentWnd, // O parametro string, para o caso de necessitares de falar com o teu // web service (e.g.) para descobrires qual o texto correcto. [in] BSTR parameters, // Que texto queres mostrar? // Use the current thread locale. [out, retval] BSTR *linkText ); The plugin can provide a string here which is used in the TortoiseSVN commit dialog for the button which invokes the plugin, e.g., "Choose issue" or "Select ticket". Make sure the string is not too long, 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 (
163
Interface IBugtraqProvider
// 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.
HRESULT GetCommitMessage2 ( // Janela pai para o UI do teu fornecedor. [in] HWND hParentWnd, // Parametros do teu fornecedor. [in] BSTR parameters, // O URL comum da submisso [in] BSTR commonURL, [in] BSTR commonRoot, [in] SAFEARRAY(BSTR) pathList, // O Texto j presente na tua mensagem de submisso. // O teu fornecedor dever incluir este texto na nova mensagem, // quando apropriado. [in] BSTR originalMessage, //Tu podes atribuir a uma submisso propriedades de reviso personalisadas // atravs da configurao dos dois prximos parmetros. // 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)
164
Interface IBugtraqProvider
[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. [in] BSTR commonRoot, // Todos os caminhos que foram submetidos. [in] SAFEARRAY(BSTR) pathList,
165
Interface IBugtraqProvider
// 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.
166
167
168
Se tu configuras essa propriedade numa pasta, ento o TortoiseSVN ir desactivar o boto OK em todas as caixas de dilogo submeter, at o utilizador introduza uma mensagem de registo com pelo menos um comprimento igual ao especificado na propriedade. Para informao detalhada sobre essas propriedades de projecto, por favor consulte Seco 4.17, Configuraes de Projecto
169
6. Click OK to complete the merge. Tu reverteste as alteraes na tua cpia de trabalho. Verifica os resultados, e ento submete as alteraes.
170
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.
TortoiseProc.exe /command:repobrowser /path:"url/to/repository" claro que necessitas de inserir o URL do repositrio real.
171
Se ainda no submeteste a adio, ento tudo o que tens de fazer usa o TortoiseSVN Reverter... para anular a adio. Devers ento adicionar o(s) ficheiro(s) lista de ignorados, para que eles no sejam adicionados outra vez por engano. If the files are already in the repository, you have to do a little more work. 1. Hold the Shift key to get the extended context menu and use TortoiseSVN Delete (keep local) to mark the file/folder for deletion from the repository without losing the local copy. 2. TortoiseSVN Commit the parent folder. 3. Add the file/folder to the ignore list so you don't get into the same trouble again.
172
1.4.1.6000 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
173
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.
174
Valor 0x0000000000004000 0x0000000000008000 0x0000000000010000 0x0000000000020000 0x0000000000040000 0x0000000000080000 0x0000000000100000 0x0000000000200000 0x0000000000400000 0x0000000000800000 0x0000000001000000 0x0000000002000000 0x0000000004000000 0x0000000008000000 0x0000000010000000 0x0000000020000000 0x0000000040000000 0x0000000080000000 0x2000000000000000 0x4000000000000000 0x8000000000000000
Entrada de menu 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.
175
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.
176
Automatizar o TortoiseSVN
Comando :log
Descrio 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 path 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:"the bug id here". 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 pr-definida 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 path aponta para um ficheiro que contm a mensagem de registo. Abre a caixa de dilogo preferncias. Remove do controlo de verses o(s) ficheiro(s) em /path.
:commit
:merge
:mergeall :copy
:settings :remove
177
Automatizar o TortoiseSVN
Comando :rename
Descrio 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 / 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.
:createpatch :revisiongraph
178
Automatizar o TortoiseSVN
Comando :lock
Descrio 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
179
Automatizar o TortoiseSVN
/fit /overlay
180
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 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.
181
Referncia Cruzada da Interface de Linha de Comandos 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 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.
182
E.2.11. Resolved
183
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.
E.2.18. Ramo/Etiqueta
svn copy -m "LogMessage" URL URL or svn copy -m "LogMessage" URL@rev URL@rev
184
Referncia Cruzada da Interface de Linha de Comandos 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 Specific revision in repository 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.
E.2.22. Reposicionar
svn switch --relocate From_URL To_URL
E.2.24. Adicionar
185
Referncia Cruzada da Interface de Linha de Comandos 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.
186
The Conflicted overlay is used to represent the conflicted state, where an update or switch results in conflicts between local changes and changes downloaded from the repository. It is also used to indicate the obstructed state, which can occur when an operation is unable to complete.
The Modified overlay represents the modified state, where you have made local modifications, the merged state, where changes from the repository have been merged with local changes, and the replaced state, where a file has been deleted and replaced by another different file with the same name.
The Deleted overlay represents the deleted state, where an item is scheduled for deletion, or the missing state, where an item is not present. Naturally an item which is missing cannot have an overlay itself, but the parent folder can be marked if one of its child items is missing.
The Added overlay is simply used to represent the added status when an item has been added to version control.
The In Subversion overlay is used to represent an item which is in the normal state, or a versioned item whose state is not yet known. Because TortoiseSVN uses a background caching process to gather status, it may take a few seconds before the overlay updates.
The Needs Lock overlay is used to indicate when a file has the svn:needs-lock property set. For working copies which were created using Subversion 1.4.0 and later, the svn:needs-lock status is cached locally by Subversion and this is used to determine when to show this overlay. For working copies which are in pre-1.4.x format, TortoiseSVN shows this overlay when the file has read-only status. Note that Subversion automatically upgrades working copies when you update them, although the caching of the svn:needs-lock property may not happen until the file itself is updated.
The Locked overlay is used when the local working copy holds a lock for that file.
187
Pormenores de Implemtao
The Ignored overlay is used to represent an item which is in the ignored state, either due to a global ignore pattern, or the svn:ignore property of the parent folder. This overlay is optional.
The Unversioned overlay is used to represent an item which is in the unversioned state. This is an item in a versioned folder, but which is not under version control itself. This overlay is optional. If an item has subversion status none (the item is not within a working copy) then no overlay is shown. If you have chosen to disable the Ignored and Unversioned overlays then no overlay will be shown for those files either. An item can only have one Subversion status value. For example a file could be locally modified and it could be marked for deletion at the same time. Subversion returns a single status value - in this case deleted. Those priorities are defined within Subversion itself. When TortoiseSVN displays the status recursively (the default setting), each folder displays an overlay reflecting its own status and the status of all its children. In order to display a single summary overlay, we use the priority order shown above to determine which overlay to use, with the Conflicted overlay taking highest priority. In fact, you may find that not all of these icons are used on your system. This is because the number of overlays allowed by Windows is limited to 15. Windows uses 4 of those, and the remaining 11 can be used by other applications. If there are not enough overlay slots available, TortoiseSVN tries to be a Good Citizen (TM) and limits its use of overlays to give other apps a chance. Normal, Modified and Conflicted are always loaded and visible. Deleted is loaded if possible, but falls back to Modified if there are not enough slots. Read-Only is loaded if possible, but falls back to Normal if there are not enough slots. Locked is only loaded if there are fewer than 13 overlays already loaded. It falls back to Normal if there are not enough slots. Added is only loaded if there are fewer than 14 overlays already loaded. It falls back to Modified if there are not enough slots.
188
ps xa | grep sshd and look for ssh jobs. One point to note is that if you build Subversion from source and do not provide any argument to ./configure, Subversion creates a bin directory under /usr/local and places its binaries there. If you want to use tunneling mode with SSH, you have to be aware that the user logging in via SSH needs to execute the svnserve program and some other binaries. For this reason, either place /usr/local/bin into the PATH variable or create symbolic links of your binaries to the /usr/sbin directory, or to any other directory which is commonly in the PATH. To check that everything is OK, login in as the target user with SSH and type:
which svnserve This command should tell you if svnserve is reachable. Create a new user which we will use to access the svn repository:
useradd -m svnuser Be sure to give this user full access rights to the repository.
189
If there is no password file yet then create one from the Cygwin console using:
ssh-keygen -b 1024 -t dsa -N passphrase -f keyfile substituting a real pass-phrase (which only you know) and key file. We just created a SSH2 DSA key with 1024 bit key-phrase. If you type
ls -l keyfile* you will see two files, keyfile and keyfile.pub. As you might guess, the .pub file is the public key file, the other is the private one. Append the public key to those in the .ssh folder within the svnuser home directory:
cat keyfile.pub >> /home/svnuser/.ssh/authorized_keys In order to use the private key we generated, we have to convert it to a putty format. This is because the private key file format is not specified by a standards body. After you download the private key file to your client PC, start PuTTYgen and use Conversions Import key. Browse to your file keyfile which you got from the server the passphrase you used when creating the key. Finally click on Save private key and save the file as keyfile.PPK.
190
Click on Open and you should see a telnet style login prompt. Use svnuser as the user name and if all is well you should connect directly without being prompted for a password. You may need to edit /etc/sshd_config on the server. Edit lines as follows and restart the SSH service afterwards.
command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>", no-port-forwarding,no-agent-forwarding,no-X11-forwarding, no-pty ssh-rsa <PublicKey> <Comment> There are several values that you need to set according to your setup. <ReposRootPath> should be replaced with the path to the directory containing your repositories. This avoids the need to specify full server paths within URLs. Note that you must use forward slashes even on a Windows server, e.g. c:/svn/reposroot. In the examples below we assume that you have a repository folder within the repository root called repos. <author> should be replaced with the svn author that you want to be stored on commit. This also allows svnserve to use its own access rights within svnserve.conf. <PublicKey> should be replaced with the public key that you generated earlier. <Comment> can be any comment you like, but it is useful for mapping an svn author name to the person's real name. Right click on any folder in Windows Explorer and select TortoiseSVN Repo-Browser. You will be prompted to enter a URL, so enter one in this form:
svn+ssh://svnuser@SvnConnection/repos What does this URL mean? The Schema name is svn+ssh which tells TortoiseSVN how to handle the requests to the server. After the double slash, you specify the user to connect to the server, in our case svnuser. After the @ we supply our PuTTY session name. This session name contains all details like where to find the private key and the server's IP or DNS. Lastly we have to provide the path to the repository, relative to the repository root on the server, as specified in the authorized_keys file. Click on OK and you should be able to browse the repository content. If so you now have a running SSH tunnel in conjunction with TortoiseSVN. Note that by default TortoiseSVN uses its own version of Plink to connect. This avoids a console window popping up for every authentication attempt, but it also means that there is nowhere for error messages to appear. If you receive the error Unable to write to standard output, you can try specifying Plink as the client in TortoiseSVN's network settings. This will allow you to see the real error message generated by Plink.
191
svn+ssh://SvnConnection/repos This time we only provide the PuTTY session SvnConnection to the SSH client TortoiseSVN uses (TortoisePlink.exe). This client will check the session for all necessary details. At the time of writing PuTTY does not check all saved configurations, so if you have multiple configurations with the same server name, it will pick the first one which matches. Also, if you edit the default configuration and save it, the auto login user name is not saved. Many people like to use Pageant for storing all their keys. Because a PuTTY session is capable of storing a key, you don't always need Pageant. But imagine you want to store keys for several different servers; in that case you would have to edit the PuTTY session over and over again, depending on the server you are trying to connect with. In this situation Pageant makes perfect sense, because when PuTTY, Plink, TortoisePlink or any other PuTTY-based tool is trying to connect to an SSH server, it checks all private keys that Pageant holds to initiate the connection. For this task, simply run Pageant and add the private key. It should be the same private key you defined in the PuTTY session above. If you use Pageant for private key storage, you can delete the reference to the private key file in your saved PuTTY session. You can add more keys for other servers, or other users of course. If you don't want to repeat this procedure after every reboot of your client, you should place Pageant in the auto-start group of your Windows installation. You can append the keys with complete paths as command line arguments to Pageant.exe The last way to connect to an SSH server is simply by using this URL inside TortoiseSVN:
svn+ssh://svnuser@100.101.102.103/repos svn+ssh://svnuser@mydomain.com/repos As you can see, we don't use a saved PuTTY session but an IP address (or domain name) as the connection target. We also supply the user, but you might ask how the private key file will be found. Because TortoisePlink.exe is just a modified version of the standard Plink tool from the PuTTY suite, TortoiseSVN will also try all the keys stored in Pageant. If you use this last method, be sure you do not have a default username set in PuTTY. We have had reports of a bug in PuTTY causing connections to close in this case. To remove the default user, simply clear HKEY_CURRENT_USER\Software\SimonTatham\Putty\Sessions\Default%20Settings\HostName
192
Glossrio
Actualizar This Subversion command pulls down the latest changes from the repository into your working copy, merging any changes made by others with local changes in the working copy. A Subversion command that is used to add a file or directory to your working copy. The new items are added to the repository when you commit. A Berkeley DB. 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. When you take out a lock on a versioned item, you mark it in the repository as non-committable, except from the working copy where the lock was taken out. A Subversion command which creates a local working copy in an empty directory by downloading versioned files from the repository. Shorthand for Show Differences. Very useful when you want to see exactly what changes have been made. When changes from the repository are merged with local changes, sometimes those changes occur on the same lines. In this case Subversion cannot automatically decide which version to use and the file is said to be in conflict. You have to edit the file manually and resolve the conflict before you can commit any further changes. In a Subversion repository you can create a copy of a single file or an entire tree. These are implemented as cheap copies which act a bit like a link to the original in that they take up almost no space. Making a copy preserves the history of the item in the copy, so you can trace changes made before the copy was made. This is your local sandbox, the area where you work on the versioned files, and it normally resides on your local hard disk. You create a working copy by doing a Checkout from a repository, and you feed your changes back into the repository using Commit. This command produces a copy of a versioned folder, just like a working copy, but without the local .svn folders. A proprietary Subversion filesystem backend for repositories. Can be used on network shares. Default for 1.2 and newer repositories. Objecto de politica de grupo Show the revision history of a file or folder. Also known as Log. Subversion command to import an entire folder hierarchy into the repository in a single revision. The process by which changes from the repository are added to your working copy without disrupting any changes you have already made locally. Sometimes these changes cannot be reconciled automatically and the working copy is said to be in conflict. Merging happens automatically when you update your working copy. You can also merge specific changes from another branch using TortoiseSVN's Merge command. Adicionar BDB
Cpia
Cpia de Trabalho
193
Glossrio
Limpar
To quote from the Subversion book: 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. Note that in this context lock refers to local filesystem locking, not repository locking. In addition to versioning your directories and files, Subversion allows you to add versioned metadata - referred to as properties to each of your versioned directories and files. Each property has a name and a value, rather like a registry key. Subversion has some special properties which it uses internally, such as svn:eol-style. TortoiseSVN has some too, such as tsvn:logminsize. You can add your own properties with any name and value you choose. Just as files can have properties, so can each revision in the repository. Some special revprops are added automatically when the revision is created, namely: svn:date svn:author svn:log which represent the commit date/time, the committer and the log message respectively. These properties can be edited, but they are not versioned, so any change is permanent and cannot be undone. A term frequently used in revision control systems to describe what happens when development forks at a particular point and follows 2 separate paths. You can create a branch off the main development line so as to develop a new feature without rendering the main line unstable. Or you can branch a stable release to which you make only bug fixes, while new developments take place on the unstable trunk. In Subversion a branch is implemented as a cheap copy. Show the revision history of a file or folder. Also known as History. If a working copy has changes to text files only, it is possible to use Subversion's Diff command to generate a single file summary of those changes in Unified Diff format. A file of this type is often referred to as a Patch, and it can be emailed to someone else (or to a mailing list) and applied to another working copy. Someone without commit access can make changes and submit a patch file for an authorized committer to apply. Or if you are unsure about a change you can submit a patch for others to review. When you delete a versioned item (and commit the change) the item no longer exists in the repository after the committed revision. But of course it still exists in earlier repository revisions, so you can still access it. If necessary, you can copy a deleted item and resurrect it complete with history. If your repository moves, perhaps because you have moved it to a different directory on your server, or the server domain name has changed, you need to relocate your working copy so that its repository URLs point to the new location. Note: you should only use this command if your working copy is referring to the same location in the same repository, but the repository itself has moved. In any other circumstance you probably need the Switch command instead.
Propriedade
Ramo
Registo Remendo
Remover
Reposicionar
Repositrio
A repository is a central place where data is stored and maintained. A repository can be a place where multiple databases or files are located for distribution over a network, or a repository can be a location that is directly accessible to the user without having to travel across a network. When files in a working copy are left in a conflicted state following a merge, those conflicts must be sorted out by a human using an editor (or perhaps
Resolver
194
Glossrio
TortoiseMerge). This process is referred to as Resolving Conflicts. When this is complete you can mark the conflicted files as being resolved, which allows them to be committed. Responsabilizar This command is for text files only, and it annotates every line to show the repository revision in which it was last changed, and the author who made that change. Our GUI implementation is called TortoiseBlame and it also shows the commit date/time and the log message when you hover the mouse of the revision number. Subversion keeps a local pristine copy of each file as it was when you last updated your working copy. If you have made changes and decide you want to undo them, you can use the revert command to go back to the pristine copy. Every time you commit a set of changes, you create one new revision in the repository. Each revision represents the state of the repository tree at a certain point in its history. If you want to go back in time you can examine the repository as it was at revision N. In another sense, a revision can refer to the set of changes that were made when that revision was created. Reviso BASE The current base revision of a file or folder in your working copy. This is the revision the file or folder was in, when the last checkout, update or commit was run. The BASE revision is normally not equal to the HEAD revision. The latest revision of a file or folder in the repository. This Subversion command is used to pass the changes in your local working copy back into the repository, creating a new repository revision. Abreviao de Subversion frequentement utilizada. The name of the Subversion custom protocol used by the svnserve repository server. Trocar Just as Update-to-revision changes the time window of a working copy to look at a different point in history, so Switch changes the space window of a working copy so that it points to a different part of the repository. It is particularly useful when working on trunk and branches where only a few files differ. You can switch your working copy between the two and only the changed files will be transferred.
Reverter
Reviso
195
ndice Remissivo
Smbolos
"plugin", 163 "Shell" de Wiindows, 1 .svn folder, 157 _svn folder, 157
cpia de trabalho, 9 copy files, 79 correco, 111 corretor ortogrfico, 3 Create Command Line Client, 14 TortoiseSVN, 14 create repository, 14 create working copy, 40 culpa, 112
A
a bloquear, 107 Access, 15 add, 78 add files to repository, 38 anotar, 112 Apache, 24 ASP projects, 174 authentication, 37 Authorization, 27 auto-props, 90 automation, 176, 179
D
delete, 82 deploy, 173 detach from repository, 171 dicionrio, 3 diff, 73, 111 diff tools, 78 diff unificado, 111 diffing, 57 disable functions, 174 domain controller, 173 domaincontroller, 28 drag handler, 36 drag-n-drop, 36
B
backup, 17 branch, 79, 95 bug tracker, 125 bug tracking, 125 bugtracker, 125
E
edit log/author, 68 empty message, 168 exclude pattern, 130 expand keywords, 88 explorador, 1 Explorer Columns, 55 export, 122 export changes, 75 externos, 92, 170
C
case change, 84 changelist, 58 changes, 170 check in, 43 check new version, 173 checkout link, 18 cleanup, 86 CLI, 181 client hooks, 151 COM, 158, 163 COM SubWCRev interface, 160 command line, 176, 179 command line client, 181 commit, 43 commit message, 168 commit messages, 60 common projects, 170 compare, 73 compare files, 170 compare folders, 170 compare revisions, 75 conflito, 8, 49 context menu, 34 context menu entries, 174 Controle de verses, 1 cpia, 95, 115
F
FAQ, 167 fetch changes, 48 filter, 69
G
global ignore, 130 globbing, 81 GPO, 173 graph, 118 group policies, 173, 174
H
history, 60 hook scripts, 17, 151 hooks, 17
I
IBugtraqProvider, 163
196
ndice Remissivo
icons, 54 ignore, 80 image diff, 77 import in place, 40 Importar, 38 Index of projects, 27 instalar, 2 integrar, 98 duas rvores, 102 faixa de reviso, 99 re-integrar, 101 issue tracker, 125, 163
R
re-integrar integrao, 106 readonly, 107 registry, 155 relocate, 124 remove, 82 remove versioning, 171 rename, 83, 115, 168 rename files, 79 reorganize, 168 repo viewer, 129 repo-browser, 115 repositrio, 4, 38 repositrios externos, 92 repository URL changed, 124 resolve, 49 revert, 85, 169 revision, 11, 118 revision graph, 118 revision properties, 68 revprops, 68 right drag, 36 right-click, 34 rollback, 169
K
keywords, 88
L
link, 18 Livro sobre Subversion, 4 log, 60 log cache, 148 log message, 168 log messages, 60
M
marcar verso, 95 maximize, 38 merge conflicts, 105 merge tools, 78 merge tracking log, 67 modifications, 56 mod_authz_svn, 25, 27 Monitorizar a integrao, 105 move, 83 move files, 79 moved server, 124 moving, 168 msi, 173 Multiple authentication, 29
S
SASL, 22 send changes, 43 server moved, 124 server side hook scripts, 17 server viewer, 115 server-side actions, 115 settings, 129 shortcut, 171 sounds, 130 special files, 40 SSL, 30 SSPI, 28 statistics, 69 status, 54, 55 SUBST drives, 142 Subversion properties, 87 SubWCRev, 158 SVN exportar, 40 SVNParentPath, 26, 27 SVNPath, 26 svnserve, 19, 20 SVN_ASP_DOT_NET_HACK, 174 switch, 97
N
Network share, 15 NTLM, 28
O
overlays, 54, 187
P
pacotes de linguas, 3 pattern matching, 81 praise, 112 prioridade de sobreposio, 187 project properties, 91 properties, 86 Propriedades do TortoiseSVN, 91 proxy server, 143
T
tag, 79, 95 temporary files, 38 TortoiseIDiff, 77 TortoiseSVN link, 18 tradues, 3 tree conflict, 49
197
ndice Remissivo
U
UNC paths, 15 undo, 85 undo change, 169 undo commit, 169 unversion, 124, 171 unversioned 'working copy', 122 unversioned files/folders, 80 update, 48, 169 upgrade check, 173 URL changed, 124
V
vendor projects, 170 version, 173 version extraction, 158 version new files, 78 version number in files, 158 view changes, 54 ViewVC, 129 VS2003, 174
W
web view, 129 WebDAV, 24 website, 18 WebSVN, 129 Windows domain, 28 working copy status, 54
198