Home

Nome - svnbook-pt-br

image

Contents

1. EM possamos obter os valores que precisamos HIFT HIFT ET MINE 7 ET OLDER 8 ET YOURS 9 EM Chama o comando de fus o de texto modifique a linha a seguir de EM acordo com seu programa DIFF3 older SOLDER mine MINE yours SYOURS EM Depois de executar a fusdo de texto este script precisa imprimir o EM conte do do arquivo resultante para stdout Voc pode fazer isso da EM forma que achar melhor Retorna um c digo de erro de 0 no caso de uma EM fus o de sucesso 1 se conflitos n o resolvidos ainda permanecerem no EM arquivo resultante Qualquer outro c digo de erro ser tratado como EM fatal 184 Cap tulo 8 Incorporando o Subversion O Subversion tem uma estrutura modular ele implementado como uma cole o de bibli otecas escritas em C Cada biblioteca tem um prop sito bem definido e uma Interface de Programa o de Aplica o API Application Programming Interface e esta interface es t dispon vel n o s para o pr prio Subversion usar mas para qualquer software que quei ra incorporar ou controlar o Subversion atrav s de programa o Adicionalmente a API do Subversion est dispon vel n o s para outros programas em C mas tamb m para pro gramas em linguagens de alto n vel como Python Perl Java ou Ruby Este cap tulo para aqueles que desejam interagir com o Subversion atrav s da sua API p blica ou seus v rios v nculos de linguagem Se voc deseja
2. svn needs lock em qualquer arquivo que n o possa ser contextualmente mesclado Esta a principal t cnica para incentivar bons h bitos de travamen to e evitar desperd cio de esfor os O Tanto usu rios e administradores s o encorajados a anexar a propriedade Note que esta propriedade um instrumento de comunica o que trabalha independente mente do sistema de travamento Em outras palavras qualquer arquivo pode ser travado estando esta propriedade presente ou n o E reciprocamente a presen a desta proprieda de n o faz com que o reposit rio requeira uma trava quando for submeter as mudan as Infelizmente o sistema n o perfeito poss vel que mesmo quando um arquivo possua a propriedade a advert ncia de somente leitura nem sempre funcione Algumas vezes as aplica es comportam se mal e adulteram o arquivo somente leitura silenciosamente permitindo aos usu rios editar e salvar o arquivo de qualquer forma N o h muito que o Subversion possa fazer nesta situa o de qualquer maneira simplesmente n o h subs titui o para uma boa comunica o entre as pessoas Defini es Externas s vezes til construir uma c pia de trabalho que composta por diferentes checkouts Por exemplo talvez voc queira que diferentes subdiret rios venham de diferentes locais em um reposit rio ou at mesmo de diferentes reposit rios Voc poderia configurar tal cen rio manualmente usando svn ch
3. rios em rede t o simples quanto executar o httpd 2 0 com o m dulo mod dav e instalar o plugin mod dav svn no mod dav que utiliza as bibliotecas do Subversion pa ra acessar o reposit rio e configurar seu arquivo httpd conf para exportar ou expor o reposit rio Voc pode realizar os primeiros dois passos tanto compilando o httpd e o Subversion a partir do c digo fonte ou instalando os pacotes bin rios pr constru dos para o seu siste ma Para informa es mais atualizadas sobre como compilar o Subversion para uso com o servidor Apache HTTP al m de como compilar e configurar o pr prio Apache para este prop sito veja o arquivo INSTALL na pasta de mais alto n vel na rvore do c digo fonte do Subversion Configura o B sica do Apache Tendo instalado todos os componentes necess rios em seu sistema tudo o que resta a configura o do Apache por meio de seu arquivo httpd conf Indique ao Apache para carregar o m dulo mod dav svn usando a diretiva LoadModule Esta diretiva deve pre ceder a qualquer outro item de configura o relacionado ao Subversion Se seu Apache foi instalado usando sua estrutura padr o seu m dulo mod dav svn deve estar instalado no subdiret rio modules do local de instala o do Apache comumente em usr local apache2 diretiva LoadModule tem uma sintaxe simples mapeando um nome de m dulo ao local em disco da correspondente biblioteca compartilhada LoadModule dav s
4. indica o estado do arquivo ou diret rio e ou seu conte do Os c digos listados s o A item O arquivo diret rio ou link simb lico item est agendado para ser adicionado ao re posit rio 3Daquelas que n o tenham acesso sem fio Achou que ia nos pegar hein 23 conte do em bar c tem altera es locais Uso B sico C item O arquivo item est em um estado de conflito Isto as modifica es recebidas do servidor durante um update se sobrep em s altera es locais feitas por voc em sua c pia de trabalho Voc deve resolver este conflito antes de submeter suas altera es ao reposit rio D item O arquivo diret rio ou link simb lico item est agendado para ser exclu do do repo sit rio M item O conte do do arquivo item foi modificado Se voc passar um caminho espec fico para o svn status voc vai obter informa o ape nas sobre aquele item S svn status stuff fish c D stuff fish c O svn status tamb m tem uma op o verbose v a qual vai lhe mostrar o estado de cada item em sua c pia de trabalho mesmo se n o tiver sido modificado svn status v M 44 23 sally README 44 30 sally INSTALL M 44 20 harry Darc 44 18 ira stuff 44 35 harry stuff trout c D 44 19 ira stuff fish c 44 21 sally stuff things A 0 stuff things bloo h 44 36 harry stuff things gloo c Esta a forma estendida da sa da do svn status As letras na primeira colu
5. Arquivos Bin rios e Tradu o No sentido mais geral o Subversion lida com arquivos bin rios de forma mais elegante que o CVS Por usar RCS o CVS s pode armazenar sucessivas c pias inteiras de um ar quivo bin rio que est sendo alterado O Subversion entretanto expressa as diferen as entre arquivos usando um algoritmo de diferencia o bin ria n o importando se eles con t m dados textuais ou bin rios Isso significa que todos os arquivos s o armazenados di ferencialmente comprimidos no reposit rio Os usu rios de CVS t m que marcar arquivos bin rios com flags kb para prevenir que os dados sejam corrompidos devido a expans o de palavras chave e tradu o de que bras de linha Eles algumas vezes se esquecem de fazer isso O Subversion segue a rota mais paran ica primeiro nunca realiza nenhum tipo de tradu o de palavra chave ou de quebra de linha a menos que voc explicitamente o instrua a faz lo veja Substitui o de Palavra Chave e Sequ ncia de Caracteres de Fim de Linha para mais detalhes Por padr o o Subversion trata todos os dados do arquivo como cadeias de bytes literais e os arquivos sempre s o armazenados no reposit rio em estado n o traduzido Segundo o Subversion mant m uma no o interna de se um arquivo cont m dados de texto ou bin rios mas esta no o existe apenas na c pia de trabalho Durante um svn update o Subversion realizar fus es cont
6. Copied From URL Copied From Rev Text Last Updated Properties Last Updated e Checksum Conflict Previous Base File Conflict Previous Working File 228 Refer ncia Completa do Subversion Conflict Current Base File Conflict Properties File Nomes Alternativos Altera Nenhum Nada Acessa o Reposit rio Op es Apenas se operando sobre URLs revision r REV recursive R targets FILENAME incremental xml username USER password PASS no auth cach non interactive config dir DIR Exemplos svn info ir mostrar a voc toda a informa o util que tiver para itens em sua c pia de tra balho Ele exibir informa es sobre arquivos S svn info foo c Path foo c Name foo c URL http svn red bean com repos test foo c Repository Root http svn red bean com repos test Repository UUID 5e7d134a 54fb 0310 bd04 b611643e5c25 Revision 4417 Node Kind file Schedule normal Last Changed Author sally Last Changed Rev 20 Last Changed Date 2003 01 13 16 43 13 0600 Mon 13 Jan 2003 Text Last Updated 2003 01 16 21 18 16 0600 Thu 16 Jan 2003 Properties Last Updated 2003 01 13 21 50 19 0600 Mon 13 Jan 2003 Checksum d6aeb60b0662ccceb6bce4bac344cb66 Ele tamb m exibir informa es sobre diret rios svn info vendors Path vendors URL http svn red bean com repos test vendors Repository Root http s
7. Dispensa necessidade de cria o de contas de usu rio no sistema servidor Logs completos do Apache Tr fego de rede pode ser criptografado com SSL HTTP S quase sempre n o tem problemas para passar por firewalls Navega o no reposit rio atrav s de um navegador web Reposit rio pode ser montado como um drive de rede para controle de vers o trans parente Veja Autoversionamento Porque voc pode querer evit lo e Notavelmente mais lento que o svnserve pelo fato do HTTP ser um protocolo sem 143 Configura o do Servidor informa o de estado e acabar demandando mais requisi es Configura o inicial pode ser complexa Recomenda es No geral os autores deste livro recomendam uma instala o tradicional do svnserve para pequenas equipes que ainda est o tentando familiarizar se com o servidor Subversion a forma mais simples de utiliza o e a que demanda menos esfor o de manuten o Voc sempre pode trocar para uma implanta o de servidor mais complexa conforme suas ne cessidades mudem Aqui seguem algumas recomenda es e dicas em geral baseadas na experi ncia de v ri os anos de suporte a usu rios Se voc est tentando configurar o servidor mais simples poss vel para seu grupo en t o uma instala o tradicional do svnserve o caminho mais f cil e r pido Note entre tanto que os dados de seu reposit rio v o ser transmitidos s claras pela
8. copyright c 2006 Red Bean Software licens Copyright c 2006 Red Bean Software All rights reserved Redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met 1 Redistributions of source code must retain the above copyright notice this list of conditions and the recipe for Fitz s famous red beans and ric O ltimo subcomando relacionado a propriedades o propdel Como o Subversion permi te armazenar propriedades com valores vazios voc n o pode remover uma propriedade usando propedit ou propset Por exemplo este comando n o vai surtir o efeito desejado svn propset license calc button c property license set on calc button c svn proplist v calc button c Properties on calc button c copyright c 2006 Red Bean Software license Voc precisa usar o subcomando propdel para remover propriedades completamente A sintaxe semelhante a dos outros comandos de propriedades 44 T picos Avan ados svn propdel license calc button c property license deleted from calc button c svn proplist v calc button c Properties on calc button c copyright c 2006 Red Bean Software Lembra das propriedades n o versionadas de revis es Voc pode modifica las tamb m usando os mesmo subcomandos do svn que acabamos de descrever Apenas adicione o par metro revprop na linha de comando e es
9. Apenas quando usando show updates show updates u verbose v non recursive N quiet q no ignore username USER password PASS no auth cach non interactive config dir DIR ignor xternals Exemplos Esta a forma mais f cil de encontrar quais altera es voc fez em sua c pia de trabalho svn status wc M wc bar c A wCc qax c 258 Refer ncia Completa do Subversion Se voc quiser encontrar quais arquivos em sua c pia de trabalho est o desatualizados passe a op o show updates isto n o faz quaisquer altera es em sua c pia de tra balho Aqui voc pode ver que wc foo c foi modificado no reposit rio desde a ltima atualiza o em sua c pia de trabalho svn status show updates wc M 965 wc bar c 965 wc foo c A 965 we qax c Status against revision 981 show updates apenas coloca um asterisco pr ximo aos itens que est o desatualizados isto os itens que ser o atualizados a partir do reposit rio se voc executar um svn update show updates n o faz com que a lista gem de estado reflita a vers o de reposit rio do item apesar de que voc po de ver o n mero de revis o do reposit rio passando a op o verbose E finalmente o m ximo de informa o que voc pode obter com o subcomando status svn status show updates verbose wc M 965 938 sally wc bar c E 965 922 harry wc foo c A 965 687 harr
10. Autoversionamento Ganchos do Reposit rio 310 Refer ncia Completa do Subversion Nome start commit Notifica o do in cio de uma submiss o Descri o O gancho start commit executado antes da transa o de submiss o ser criada Isto normalmente usado para decidir se o usu rio possui privil gios de submiss o Se o programa de gancho start commit retorna um c digo de sa da n o zero a submiss o interrompida antes da transa o de submiss o ser criada e qualquer coisa impressa em stderr devolvida ao cliente Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio 2 nome do usu rio autenticado que est tentando submeter Usos Comuns controle de acesso 311 Refer ncia Completa do Subversion Nome pre commit Notifica o pouco antes da conclus o da submiss o Descri o O gancho pre commit executado pouco antes de uma transa o de submiss o ser pro movida para uma nova revis o Geralmente este gancho usado para proteger contra submiss es que s o recusadas devido ao conte do ou local por exemplo seu site pode requerer que todas submiss es para um certo ramo inclua um n mero de entrada no issue tracker ou que a mensagem de log recebida n o seja vazia Se o programa de gancho pre commit retorna um c digo de sa da n o zero a submiss o abortada a transa
11. Tmprime a mensagem do modo de uso e sai com ERRORCODE stream errorcode and sys stderr or sys stdout stream write Usage s OPTIONS WC PATH Options help h Show this usage message verbose v Show all statuses even uninteresting ones ren os path basename sys argv 0 sys exit errorcode if name _main_ Analisa as op es de linha de comando try opts args getopt getopt sys argv 1 hv help except getopt GetoptError usage_and_exit 1 verbose 0 for opt arg in opts if opt in h help usage_and_exit 0 if opt in v verbose verbose 1 if len args 1 usage_and_exit 2 Canoniza o caminho do reposit rio wc path svn core svn path canonicalize args 0 Faz o verdadeiro trabalho try do status wc path verbose except svn core SubversionException e sys stderr write Error d sin e 1 e 0 sys exit 1 verbose Como foi o caso no Exemplo 8 2 Usando a Camada de Reposit rio com Python este 200 Incorporando o Subversion programa n o precisa de recipiente e usa para na maior parte os tipos de dados normais do Python A chamada para svn client ctx t est enganando porque a API p bli ca do Subversion n o tem tal fun o isto apenas acontece por ser um caso onde a gera o autom tica de linguagem da SWIG n o funciona para algumas partes a fun o um tipo de fun o q
12. Uma maneira de pensar o reposit rio como um grupo espec fico de modifica es alguns sistemas de controle de vers o chamam a isto de conjuntos de mudan as ou changesets Usando a op o r voc pode solicitar que o svn merge aplique um con junto de mudan as ou um intervalo inteiro de conjuntos de mudan as sua c pia de tra balho Em nosso caso em quest o como queremos desfazer uma mudan a estamos soli citando que o svn merge aplique o conjunto de mudan as 303 retrospectivamente de volta nossa c pia de trabalho Subversion e os Conjuntos de Mudan as Cada um parece ter uma defini o ligeiramente diferente do que seja um conjunto de mudan as ou ao menos diferentes expectativas sobre o que significa um siste ma de controle de vers o possuir recursos para lidar com conjuntos de mudan as Para nosso prop sito digamos que um conjunto de mudan a seja apenas uma por o de altera es associadas a um nome Unico As altera es podem incluir modifi ca es textuais ao conte do de arquivos mudan as em uma estrutura de rvore ou ajustes em metadados Falando de uma forma mais geral um conjunto de mudan as 92 Fundir e Ramificar apenas um patch com um nome a partir do qual voc pode se referir No Subversion um n mero global de revis o N nomeia uma rvore no reposit rio a forma como o reposit rio se parece ap s a N sima submiss o E tamb m o nome
13. if svn fs svn_fs_is_dir root full_path crawl_filesystem_dir root full_path else Sen o ele um arquivo assim imprima seu caminho aqui print full path def crawl youngest repos path Abre o reposit rio em REPOS PATH e rastreia recursivamente sua revis o mais recente T Abre o reposit rio em REPOS_PATH e obt m uma refer ncia para seu sistema de arquivo de versionamento repos_obj svn repos svn repos open repos path fs_obj svn repos svn repos fs repos obJ 198 Incorporando o Subversion Recupera a atual revis o mais recente youngest rev svn fs svn fs youngest rev fs obJ Abre um objeto ra z representando a mais recente HEAD revis o root ob svn fs svn fs revision root fs_obj youngest rev Faz o rastreamento recursivo crawl filesystem dir root obj 1f name main Verifica se o uso est correto if len sys argv 2 sys stderr write Usage s REPOS _PATH n o os path basename sys argv 0 sys exit 1 Canoniza o caminho do reposit rio repos path svn core svn path canonicalize sys argv 1 Faz o verdadeiro trabalho crawl youngest repos path Este mesmo programa em C precisaria lidar com o sistema de recipiente de mem ria da APR Mas Python manipula o uso de mem ria automaticamente e os v nculos Python do Subversion aderem a esta conven o Em C voc teria que trabalhar com tipos de dados personalizad
14. outro usu rio na c pia de trabalho Nomes Alternativos Altera Nenhum C pia de trabalho Reposit rio Acessa o Reposit rio Op es Sim targets FILENAME username USER password PASS no auth cach non interactive config dir DIR force Exemplos Destrava dois arquivos em sua c pia de trabalho svn unlock tree jpg house jpg tree jpg unlocked house jpg unlocked Destrava um arquivo em sua c pia de trabalho que ja est travado por outro usu rio svn unlock tree jpg svn tree jpg is not locked in this working copy svn unlock force tree jpg tree jpg unlocked Destrava um arquivo sem ter uma copia de trabalho svn unlock http svn red bean com repos test tree jpg 262 Refer ncia Completa do Subversion tree jpg unlocked Para mais detalhes veja Travamento 263 Refer ncia Completa do Subversion Nome svn update Update your working copy Sinopse svn update PATH Descri o svn update traz as altera es do reposit rio para sua c pia de trabalho Se nenhuma re vis o for informada ele atualiza sua c pia de trabalho para a revis o HEAD Do contr rio ele sincroniza a c pia de trabalho para a revis o dada pela op o revision Como parte da sincroniza o o svn update tamb m remove quaisquer travas roubadas veja As Vezes Voc S Precisa Limpar encontradas na c pia de t
15. poss vel que poucos momentos depois Sally possa acidentalmente so brescrev lo com a sua pr pria nova vers o do arquivo Embora a vers o de Harry n o seja perdida para sempre porque o sistema se lembra de cada mudan a todas as mu dan as feitas por Harry n o v o estar presentes na vers o mais recente do arquivo de Sally porque ela nunca viu as mudan as de Harry s para come ar O trabalho de Harry efetivamente se perdeu ou pelo menos desapareceu da ltima vers o do arquivo e pro vavelmente por acidente Trata se definitivamente de uma situa o que queremos evitar Figura 1 2 O problema para evitar Two users read the same file They both begin to edit their copies Repository Repository ke i fa A A A Harry Sally Harry Sally Harry publishes his version first Sep accidentally overwrites Havrys version Repository Repository Li i Sally Harry Conceitos Fundamentais A Solu o Lock Modify Unlock Muitos sistemas de controle de vers o usam o modelo lock modify unlock travar modificar destravar para resolver o problema de varios autores destru rem o traba lho uns dos outros Neste modelo o reposit rio permite que apenas uma pessoa de cada vez altere o arquivo Essa pol tica de exclusividade gerenciada usando locks travas Harry precisa travar lock um arquivo antes que possa fazer altera es nele Se Harry tiver travado o arquivo ent o Sally n o poder
16. roubar a trava existente Se o programa de gancho pre lock retorna um c digo de sa da n o zero a a o de trava abortada e qualquer coisa impressa em stderr devolvida ao cliente Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio 2 caminho versionado a ser travado 3 nome de usu rio autenticado da pessoa tentando o travamento Usos Comuns controle de acesso 316 Refer ncia Completa do Subversion Nome post lock Notifica o de um travamento de caminho com sucesso Descri o O gancho post lock executado depois que um ou mais caminhos tenham sido travados Ele geralmente usado para enviar mensagem de notifica o do evento de trava A sua sa da e o c digo de sa da retornados pelo programa de gancho post lock s o igno rados Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminhos do reposit rio 2 nome de usu rio autenticado da pessoa quem travou os caminhos Adicionalmente a lista de caminhos travados passada para o programa de gancho por meio da entrada padr o um caminhos por linha Usos Comuns notifica o de trava 317 Refer ncia Completa do Subversion Nome pre unlock Notifica o de uma tentativa de destravamento de caminho Descri o O gancho pre unlock executado quando algu m tenta r
17. Gagram by Brian W Fitzpatrick lt fitz red bean com Em uma ponta encontra se um reposit rio do Subversion que mant m todos os seus da dos versionados No outro extremo est o seu programa cliente Subversion que gerencia c pias locais de partes desses dados versionados chamadas de c pias de trabalho Entre esses dois extremos est o m ltiplas rotas por entre v rias camadas de Acesso ao Reposit rio RA Algumas dessas rotas partem das redes de computadores at os servi dores de rede de onde ent o acessam o reposit rio Outras desconsideram a rede com pletamente e acessam diretamente o reposit rio Componentes do Subversion Uma vez instalado o Subversion consiste num conjunto de diversas partes Uma breve vi s o geral sobre tudo o que voc disp e mostrada a seguir N o se preocupe se as bre ves descri es acabarem fundindo a sua cuca h muito mais p ginas neste livro para acabar com essa confus o svn O programa cliente de linha de comando xxii Pref cio svnversion Um programa para informar o estado em termos das revis es dos itens presentes da c pia de trabalho svnlook Uma ferramenta para inspecionar um reposit rio Subversion diretamente svnadmin Uma ferramenta para cria o ajuste e manuten o de um reposit rio Subversion svndumpfilter Um programa para filtragem de fluxos de um reposit rio Subversion mod dav svn Um m dulo plugin para o servidor Apache HTT
18. Se voc pretende disponibilizar m ltiplos reposit rios Subversion que se encontrem sob 154 Configura o do Servidor um mesmo diret rio pai em seu disco local voc pode usar uma diretiva alternativa a di retiva SVNParentPath para indicar este diret rio pai comum Por exemplo se voc sabe que voc vai criar m ltiplos reposit rios Subversion num diret rio usr local svn que poderia ser acessado a partir de URLs como http my server com svn reposl http my server com svn repos2 e assim por diante voc pode usar a sintaxe de configura o do httpd conf do exemplo a seguir lt Location svn gt DAV svn qualquer URL svn foo vai mapear para um reposit rio usr local svn foo SVNParentPath usr local svn lt Location gt Usando a sintaxe anterior o Apache vai delegar a manipula o de todas as URLs cuja a parte do caminho comece com svn para o provedor DAV do Subversion que ent o vai assumir que quaisquer itens no diret rio especificado pela diretiva SVNParent Path atual mente s o reposit rios Subversion Esta uma sintaxe particularmente conveniente para isto ao contr rio do uso da diretiva SVNPath voc n o tem que reiniciar o Apache para criar e acessar via rede os novos reposit rios Certifique se de que ao definir seu novo Location este n o se sobreponha a outros Lo cations exportados Por exemplo se seu DocumentRoot principal estiver exportado para www N o exporta um reposit r
19. es E quase impens vel alterar se o pro jeto do Subversion para corresponder especifica o DeltaV ent o provavelmente n o h nada que que um cliente n o pode aprender para ter tudo o que precisa de um servidor DeltaV Por outro lado o mod dav svn poderia ser desenvolvido para implementar tudo do DeltaV mas dif cil encontrar motiva o para faz lo nao h muitos clientes DeltaV com os quais se possa comunicar Autoversionamento Ainda que o cliente Subversion n o seja um cliente DeltaV completo e que nem mesmo o servidor Subversion serja um servidor DeltaV completo ainda h um lampejo de interope rabilidade com o WebDAV com o qual se contentar o chamado autoversionamento Autoversionamento um recurso opcional definido no padr o DeltaV Um servidor DeltaV t pico ir rejeitar um cliente WebDAV ignorante que tente fazer um PUT em um arquivo que esteja sob controle de vers o Para alterar um arquivo versionado o servidor espera uma s rie de requisi es pr prias relacionadas a versionamento algo como MKACTIVITY CHECKOUT PUT CHECKIN Mas se o servidor DeltaV suportar autoversionamento ent o as requisi es de escrita a partir de clientes WebDAV b sicos s o aceitas O servidor se comporta como se o cliente tivesse feito o conjunto de requisi es pr prias relacionadas ao versionamento adequadas executando uma submiss o commit por debaixo dos pa nos Em outras palavras ele permite a um servidor Delt
20. es ou vari veis diferentemente do diff cmd o come o de uma linha de comando a ser executada pelo shell O Subversion concate na um espa o a o caminho do arquivo tempor rio a ser editado O editor deve modifi car o arquivo tempor rio e retornar um c digo zero como sa da para indicar sucesso diff cmd Isto especifica o caminho absoluto para um programa de diferencia o usado quando o Subversion gera sa da em formato diff como ao usar o comando svn diff Por pa dr o o Subversion usa uma biblioteca interna de diferenciagao atribuir um valor a esta op o ir fazer com que o Subversion realize essa tarefa executando um progra ma externo Veja Usando Ferramentas Externas de Diferencia o para mais deta lhes sobre como usar tais programas diff3 cmd Isto especifica o caminho absoluto para um programa de diferencia o em tr s vias O Subversion usa este programa para mesclar altera es feitas pelo usu rio com aque las recebidas do reposit rio Por padr o o Subversion usa uma biblioteca interna de diferencia o atribuir um valor a esta op o ir fazer com que o Subversion execute esta tarefa usando um programa externo Veja Usando Ferramentas Externas de Di ferencia o para mais detalhes sobre como usar tais programas diff3 has program arg Esta op o deve ser atribu da para true se o programa especificado pela op o di ff3 cmd aceitar um par metro diff program de linha de comand
21. http proxy host Isto especifica o nome do host do computador proxy atrav s do qual suas requisi es HTTP para o Subversion devem passar Seu padr o um valor vazio o que significa que o Subversion n o tentar rotear requisi es HTTP atrav s de um computador proxy ao inv s disso tentando acessar a m quina de destino diretamente http proxy port Isto especifica o n mero de porta a ser usada no host proxy Seu valor padr o tam b m vazio http proxy usernam Isto especifica o nome de usu rio a ser informado para a m quina proxy Seu valor padr o vazio http proxy password Isto especifica a senha do usu rio a ser informada para a m quina proxy Seu valor padr o vazio http timeout Isto especifica o total de tempo em segundos a aguardar por uma resposta do servi dor Se voc tiver problemas com uma conex o de rede lenta e que fa am com que as opera es do Subversion terminem por expira o do limite de tempo voc deveria au mentar o valor desta op o O valor padr o 0 o que instrui a biblioteca HTTP da ca mada inferior a Neon para usar sua pr pria configura o de limite de tempo http compression Isto especifica se o Subversion deve ou n o tentar compactar as requisi es de rede feitas a servidores compat veis com DAV O valor padr o yes ainda que a compac 175 Customizando sua Experi ncia com Subversion ta o s ir ocorrer se o suporte a este recurso estiv
22. nadmin load subcommands is straightforward svnadmin dump will output a range of re pository revisions that are formatted using Subversion s custom filesystem dump format The dump format is printed to the standard output stream while informative messages are printed to the standard error stream This allows you to redirect the output stream to a file while watching the status output in your terminal window For example svnlook youngest myrepos 6 svnadmin dump myrepos gt dumpfile Dumped revision 0 Dumped revision 1 Dumped revision 2 HAN Dumped revision 25 Dumped revision 26 At the end of the process you will have a single file dumpfile in the previous example that contains all the data stored in your repository in the requested range of revisions Note that svnadmin dump is reading revision trees from the repository just like any other reader process would svn checkout for example so it s safe to run this command at any time The other subcommand in the pair svnadmin load parses the standard input stream as a Subversion repository dump file and effectively replays those dumped revisions into the target repository for that operation It also gives informative feedback this time using the standard output stream svnadmin load newrepos lt dumpfile lt lt lt Started new txn based on original revision 1 adding path A done adding path A B done SS Committed new rev 1 lo
23. o de submiss o removida e qualquer coisa impressa em stderr devolvida ao cliente Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio 2 nome da transa o de submiss o Usos Comuns valida o e controle de mudan as 312 Refer ncia Completa do Subversion Nome post commit Notifica o de uma submiss o com sucesso Descri o O gancho post commit executado depois que a transa o submetida e uma nova revi s o criada Maior parte das pessoas usa este gancho para enviar mensagens eletr nicas com detalhes sobre a submiss o ou para notificar alguma outra ferramenta tal como um issue tracker que uma submiss o aconteceu Algumas configura es tamb m usam este gancho para disparar processos de c pia de seguran a A sua sa da e o c digo de sa da retornados pelo programa de gancho post commit s o ig norados Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio 2 n mero de revis o criado pela submiss o Usos Comuns notifica o de submiss o integra o com ferramentas 313 Refer ncia Completa do Subversion Nome pre revprop change Notifica o de uma tentativa de mudan a de propriedade de uma revis o Descri o O gancho pre revprop change executado imediatamente antes da modifica
24. o de uma propriedade de revis o quando realizada fora do escopo de uma submiss o normal Ao contr rio dos outros ganchos o estado padr o deste gancho negar a a o proposta O gancho deve existir efetivamente e retornar um c digo de sa da zero antes de uma modifi ca o de propriedade de revis o possa acontecer Se o gancho pre revprop change n o existir ele n o execut vel ou retorna um c digo de sa da n o zero nenhuma mudan a na propriedade ser feita e qualquer coisa impres sa em stderr devolvida ao cliente Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio revis o cuja propriedade est prestes a ser modificada nome do usu rio autenticado tentando a mudan a de propriedade nome da propriedade modificada a fF om descri o da mudan a A adicionada D exclu da ou M modificada Adicionalmente o Subversion passa para o programa de gancho por meio da entrada pa dr o o valor proposto para a propriedade Usos Comuns controle de acesso valida o e controle de mudan as 314 Refer ncia Completa do Subversion Nome post revprop change Notifica o de uma mudan a de propriedade de uma revis o com Sucesso Descri o O gancho post revprop change executado imediatamente depois que a modifica o de uma propriedade de revis o quando realizada fora do escopo de uma submiss
25. peram que algumas coisas estejam em certos lugares Ent o antes de criar um novo repo sit rio tente olhar um pouco para o futuro pense a diante antes de colocar seus dados no controle de vers o Planejando conscientemente o leiaute do reposit rio ou reposit rios e seu conte do versionado antes do tempo voc pode prevenir muitas dores de cabe a futuras Vamos assumir que como administrador de reposit rio voc ser respons vel pelo suporte do sistema de controle de vers es para v rios projetos Sua primeira decis o se usar um nico reposit rio para m ltiplos projetos ou fornecer para cada projeto o seu pr prio reposit rio ou ainda alguma combina o disso Existem vantagens em se utilizar um nico reposit rio para m ltiplos projetos e a mais b via a aus ncia de manuten o duplicada Um nico reposit rio significa que haver um nico conjunto de programas de ganchos uma nica coisa para fazer c pias de seguran a peri dicas uma nica coisa para descarregar e carregar se o Subversion lan a um no va vers o incompat vel e por a vai Al m disso voc pode mover dados entre projetos fa cilmente e sem perder qualquer informa o de versionamento A desvantagem de usar um nico reposit rio que diferentes projetos podem ter diferen tes requisitos em termos de ganchos de eventos como por exemplo a necessidade de en viar notifica es de submiss o para diferentes listas de e mai
26. trav lo tamb m e portanto n o poder fazer nenhuma altera o nele Tudo que ela pode fazer ler o arquivo e esperar que Harry termine suas altera es e destrave unlock o arquivo Depois que Harry destravar o arquivo Sally poder ter a sua chance de travar e editar o arquivo A figura Figura 1 3 A solu o lock modify unlock demonstra essa solu o simples Figura 1 3 A solu o lock modify unlock Harry lacks file A then copies Wile Marry edits senys lack it for editing attempt fails Repository Repository ho w 7 Red SE Lock A OG arry H Sally Harry Sally Harry writes his version them Now Sally cam lock read and releases his lock edit the lotest version Repository Repository o es Ls Harry Sally Harry Sally O problema com o modelo lock modify unlock que ele um pouco restritivo muitas ve zes se torna um obst culo para os usu rios Locks podem causar problemas administrativos Algumas vezes Harry ir travar o arqui vo e se esquecer disso Entretanto devido a Sally ainda estar esperando para editar o arquivo suas m os est o atadas E Harry ent o sai de f rias Agora Sally tem que pedir a um administrador para destravar o arquivo que Harry travou Essa situa o acaba causando uma s rie de atrasos desnecess rios e perda de tempo Conceitos Fundamentais Locking pode causar serializa o desnecess ria E se Harry est editando o come o de u
27. vai dificultar o trabalho de Sally Um estrat gia se isolar voc e Sally podem parar de compartilhar informa es por uma semana ou duas Isto come ar cortar e reorganizar todos os arquivos da sua c pia 77 Fundir e Ramificar de trabalho mas n o realizar commit ou update antes de ter terminado todo o trabalho Existem alguns problemas aqui Primeiro n o seguro A maioria das pessoas gostam de salvar seu trabalho no reposit rio com frequ ncia caso algo ruim aconte a por acidente c pia de trabalho Segundo n o nada flex vel Se voc faz seu trabalho em computado res diferentes talvez voc tenha uma c pia de trabalho de calc trunk em duas m quinas diferentes voc ter que manualmente copiar suas altera es de uma m quina para outra ou simplesmente realizar todo o trabalho em um nico computador Por esse mesmo m todo dif cil compartilhar suas constantes modifica es com qualquer pessoa Uma boa pr tica comum em desenvolvimento de software permitir que outros envolvi dos revisem seu trabalho enquanto sendo realizado Se ningu m verificar seus commits intermedi rios voc perde um potencial feedback E por fim quando voc terminar todas as modifica es voc pode achar muito dif cil fundir seu trabalho com o resto da linha principal de desenvolvimento da empresa Sally ou outros podem ter realizado muitas outras mudan as no reposit rio que podem ser dif ceis
28. A solu o copy modify merge Conceitos Fundamentais a aaa on Repository a A e des Harry Sally Sally publishes her version first Repository E Ea Write Gi Harry Sally hale pr cas Repository Ls i 3 Harry Sally Harty gets an out of date error Repository Harry Sally F Figura 1 5 A solu o copy modify merge continuando Conceitos Fundamentais Harry compares the latest version Anew merged version is created fo his Own Repository Repository Es E Read Ls Cs D Cs Harry Sally Harry Sally The menged version is published Now both users have each diers changes Repository Repository Ls i sf Harry Sally Harry Mas e se as altera es de Sally sobrescreverem as de Harry E ent o Essa situa o chamada de conflito e normalmente n o um problema Quando Harry pedir a seu clien te para fundir as ltimas altera es do reposit rio em sua c pia de trabalho local sua c pia do arquivo A estar de alguma forma sinalizada como estando numa situa o de con flito ele ser capaz de ver ambos os conjuntos de altera es conflitantes e manualmente escolher entre elas Note que o software n o tem como resolver os conflitos automatica mente apenas pessoas s o capazes de compreender e fazer as escolhas inteligentes Uma vez que Harry tenha resolvido manualmente as altera es conflitantes talvez depois de uma convers
29. Adding tmp meuprojeto trunk Adding tmp meuprojeto trunk foo c Adding tmp meuprojeto trunk bar c Adding tmp meuprojeto trunk Makefile Committed revision 1 Agora o reposit rio cont m esta rvore de dados Como mencionado anteriormente voc n o ver seus dados ao listar diretamente o conte do do reposit rio os dados est o todos armazenados dentro de uma base de dados Mas o sistema de arquivos imagin rio do re posit rio agora cont m um diret rio de alto n vel chamado meuprojeto que por sua vez cont m seus dados Veja que o diret rio tmp meuprojeto original n o alterado o Subversion sequer tem conhecimento dele De fato voc pode at excluir esse diret rio se quiser Para come ar a manipular os dados do reposit rio voc precisa criar uma nova c pia de trabalho dos dados que s o uma esp cie de espa o de trabalho particular Solicite que o Subversion lhe entregue check out uma c pia de trabalho do diret rio meuprojeto trunk no re posit rio svn checkout file caminho do repositorio meuprojeto trunk meuprojeto A meuprojeto foo c A meuprojeto bar c A meuprojeto Makefile Checked out revision 1 322 Guia R pido de Introdu o ao Subversi on Agora voc tem uma c pia pessoal de uma parte do reposit rio em um novo diret rio cha mado meuprojeto Voc pode alterar os arquivos em sua c pia de trabalho e ent o sub meter essas altera es de volta para o r
30. FSFS lbsvn ra Base comum e carregador de m dulo para Acesso ao Reposit rio lbsvn ra dav O m dulo para Acesso ao Reposit rio por WebDAV lbsvn ra local O m dulo de Acesso ao Reposit rio localmente libsvn ra serf 185 Incorporando o Subversion Outro m dulo experimental para Acesso ao Reposit rio por WebDAV libsvn ra svn O m dulo de Acesso ao Reposit rio do protocolo padr o libsvn repos Interface de Reposit rio libsvn subr Diversas sub rotinas teis libsvn wc A biblioteca de gerenciamento de c pia de trabalho mod authz svn M dulo de autoriza o do Apache para acesso a reposit rios do Subversion via Web DAV mod dav svn M dulo Apache para mapeamento de opera es WebDAV para opera es do Subver sion O fato da palavra diversas s aparecer uma vez na lista anterior um bom sinal A equi pe de desenvolvimento do Subversion se esfor a bastante para fazer com que as funcio nalidades fiquem na camada certa e nas bibliotecas certas Talvez a maior vantagem de um sistema modular a pouca complexidade do ponto de vista do desenvolvedor Como desenvolvedor voc pode enxergar rapidamente um tipo de grande figura que permite voc achar o local de certos peda os de funcionalidade com certa facilidade Outro benef cio da modularidade a habilidade de substituir um dado m dulo por uma bi blioteca inteiramente nova que implementa a mesma API sem afetar o resto do c digo ba
31. Mas se houver digamos uma propriedade resul tado dos testes nesta revis o com o valor todos passaram esta uma informa o bem mais significativa de se ter Procurabilidade ou Porque N o Usar Propriedades Para algo com tamanha as propriedades do Subversion ou mais precisamente as interfaces dispon veis para elas t m uma grande falha apesar de ser simples criar uma propriedade espec fica procurar esta propriedade posteriormente s o ou tros quinhentos Tentar localizar uma propriedade espec fica de uma revis o geralmente envolve exe cutar uma busca linear ao longo de todas as revis es do reposit rio perguntando para cada revis o Voc tem a propriedade que eu estou procurando Tentar en contrar uma propriedade versionada complicado tamb m e quase sempre envol ve um recursivo svn propget ao longo de toda a c pia de trabalho Esta situa o po de at n o ser t o ruim quando uma busca linear por todas as revis es Mas certa mente deixa muito a desejar tanto em termos de performance quanto mesmo da pro babilidade de sucesso especialmente se o escopo de sua busca envolver uma c pia de trabalho da raiz de seu reposit rio Por este motivo voc deve escolher especialmente no caso de propriedades de re vis es entre simplesmente adicionar seus metadados na mensagem de log da revi s o usando algum padr o de formata o talvez at a partir de ferramentas de pro grama o que permita
32. Mostrar o autor Sinopse svnlook author REPOS PATH Descri o Mostrar o autor da revis o ou transa o no reposit rio Op es revision r REV transaction t Exemplos svnlook author til mas n o muito excitante svnlook author r 40 usr local svn repos sally 284 Refer ncia Completa do Subversion Nome svnlook cat Mostra o conteudo de um arquivo Sinopse svnlook cat REPOS PATH PATH IN REPOS Descri o Mostra o conteudo de um arquivo Op es revision r REV transaction t Exemplos Isto motra o conteudo de um arquivo em uma transa o ax8 localizado no trunk README svnlook cat t ax8 usr local svn repos trunk README Subversion a version control system SLastChangedDate 2003 07 17 10 45 25 0500 Thu 17 Jul 2003 Contents I A FEW POINTERS II DOCUMENTATION III PARTICIPATING IN THE SUBVERSION COMMUNITY 285 Nome Sinopse Refer ncia Completa do Subversion svnlook changed Mostra os caminhos que foram mudados svnlook changed REPOS PATH Descri o Op es Mostra os caminhos que foram mudados em uma revis o ou transa o particular assim como svn update style as letras de estatus nas duas primeiras colunas A Item adicionado ao reposit rio D Item apagado do respost rio U Conte do do arquivo foi mudado U Propriedades d
33. NAD A p gina de manual do GNU diff descreve isso da seguinte forma Uma sa da de status de O significa que n o foram encontradas diferen as 1 significa que algumas diferen as foram encontradas e 2 significa problemas 182 Customizando sua Experi ncia com Subversion Ferramentas diff3 Externas O Subversion chama programas externos de fus o de texto com par metros adequados para o utilit rio GNU diff3 esperando que o programa externo retorne com para o sistema com um c digo indicando sucesso e que o conte do completo do arquivo resultante da fu s o de texto seja exibido na sa da padr o para que ent o o Subversion possa redirecio n la adequadamente para o arquivo sob controle de vers o Para a maioria dos progra mas de fus o alternativos apenas o nono d cimo e d cimo primeiro argumentos os ca minhos dos arquivos que representam a minha vers o do arquivo a mais antiga e a sua vers o do arquivo respectivamente s o relevantes Note que como o Subversion depende da sa da de seu programa de fus o de texto seu script de encapsulamento n o deve encerrar antes que a sa da tenha sido repassada ao Subversion Quando o script fi nalmente terminar ele deveria retornar um c digo de status de O se a fus o foi executada com sucesso ou 1 se conflitos ainda permanecerem na saida qualquer outro c digo de erro considerado como erro fatal Exemplo 7 4 diff8wrap sh e Exem
34. O s mbolo o corresponde a Other significando que existe uma trava sobre o arquivo e foi criada por outra pessoa Se ela vier a tentar uma submiss o a trava sobre raisin jpg a impediria Sally deve estar imaginando quem fez a trava quando e por qu Mais uma vez svn info tem as respostas svn info http svn example com repos project raisin jpg Path raisin jpg Name raisin jpg URL http svn example com repos project raisin jpg Repository UUID edb2 264 5ef2 0310 a47a 87b0cel7a8ec Revision 105 Node Kind file Last Changed Author sally Last Changed Rev 32 Last Changed Date 2006 01 25 12 43 04 0600 Sun 25 Jan 2006 Lock Token opaquelocktoken fc2b4d 98 9 0310 abf3 653ff3226e6b Lock Owner harry Lock Created 2006 02 16 13 29 18 0500 Thu 16 Feb 2006 Lock Comment 1 line Necessidade de fazer um ajuste r pido nesta imagem Assim como svn info pode ser usado para examinar objetos na c pia de trabalho ele tamb m pode ser usado para examinar objetos no reposit rio Se o argumento principal para svn info um caminho de uma c pia de trabalho ent o todas informa es em ca che da c pia de trabalho s o exibidas qualquer men o a uma trava significa que a c pia de trabalho est mantendo um sinal de trava se um arquivo travado por outro usu rio ou em outra c pia de trabalho svn info em um caminho de c pia de trabalho n o mostra r qualquer informa o da trava Se
35. Se o precedente verdadeiro para um desenvolvedor ele deve usar um utilit rio de convers o externo tal como dos2unix ou seu similar unix2dos para pre parar o arquivo para edi o O caso posterior n o requer nenhuma prepara o extra Mas ambos os casos resultam em um arquivo que difere do original literalmente em cada uma das linhas Antes de submeter suas altera es o usu rio tem duas op es Ou ele pode utilizar um utilit rio de convers o para restaurar o arquivo modificado para o mesmo estilo de t rmino de linha utilizado antes de suas edi es serem feitas Ou ele pode simples mente submeter o arquivo as novas marcas EOL e tudo mais O resultado de cen rios como estes incluem perda de tempo e modifica es desnecess rias aos arquivos submetidos A perda de tempo suficientemente dolorosa Mas quando submiss es mudam cada uma das linhas em um arquivo isso dificulta o trabalho de deter minar quais dessas linhas foram modificadas de uma forma n o trivial Onde o bug foi re almente corrigido Em qual linha estava o erro de sintaxe introduzido A solu o para este problema a propriedade svn eol style Quando esta proprieda de definida com um valor v lido o Subversion a utiliza para determinar que tratamento especial realizar sobre o arquivo de modo que o estilo de t rmino de linha do arquivo n o fique alternando a cada submiss o vinda de um sistema operacional diferente Os valores v lidos s o nat
36. Sinopses Tamb m svnlook h e svnlook Descri o Mostra a mensagem de ajuda para o svnlook Este comando como seu irm o svn help tamb m seu amigo mesmo que voc n o ligue mais pra ele e tenha esquecido de convi da lo para sua ltima festa Nomes alternativos h 290 Refer ncia Completa do Subversion Nome svnlook history Mostra inform es sobre o hist rico de um caminhos em um reposit rio ou da raiz do diret rio se nenhum caminho for informado Sinopse svnlook history R Descri o EPOS PATH PATH IN R EPOS Mostra informa es sobre hist rico de um caminho em um reposit rio ou da raiz do dire t rio se nenhum caminho for informado Op es revision show ids Exemplos E lt 2AN R Isto mostra o hist rico de um caminho tags 1 0 da revis o 20 no nosso reposit rio de exemplo svnlook history r 20 usr local svn repos tags 1 0 show ids REVISION PATH lt ID gt 19 17 branches 1 16 branches 1 14 trunk lt 1 0 13 trunk lt 1 0 11 trunk lt 1 0 9 trunk lt 1 0 8 trunk lt 1 0 7 trunk lt 1 0 6 trunk lt 1 0 5 trunk lt 1 0 4 trunk lt 1 0 2 trunk lt 1 0 1 trunk lt 1 0 tags 1 0 lt 1 2 12 gt 0 rc2 lt 1 1 10 gt O rc2 lt 1 1 x gt lt q gt 0 gt k gt s gt e gt D gt 9 gt s T gt 6 gt 3 gt 2 gt 291 Refer ncia Completa do Subversion
37. d Nenhum termo ou disposi o desta Licen a ser considerado renunciado e nenhuma viola o ser considerada consentida a n o ser que tal ren ncia ou consentimento seja feito por escrito e assinado pela parte que ser afetada por tal ren ncia ou consentimento e Esta Licen a representa o acordo integral entre as partes com respeito Obra aqui licenciada N o h entendimentos acordos ou declara es relativas Obra que n o estejam especificadas aqui O Licenciante n o ser obrigado por nenhuma disposi o adicional que possa aparecer em quaisquer comunica es provenientes de Voc Esta Licen a n o pode ser modificada sem o m tuo acordo por escrito entre o Licenciante e Voc O Creative Commons n o uma parte desta Licen a e n o presta qualquer garantia relacionada Obra O Creative Commons n o ser respons vel perante Voc ou qualquer outra parte por quaisquer danos incluindo sem limita o danos gerais especiais incidentais ou consegientes originados com rela o a esta licen a N o obstante as duas frases anteriores se o Creative Commons tiver expressamente se identificado como o Licenciante ele dever ter todos os direitos e obriga es do Licenciante Exceto para o prop sito delimitado de indicar ao p blico que a Obra licenciada sob a CCPL Licen a P blica Creative Commons nenhuma parte dever utilizar a marca Creative Commons ou qualquer ou
38. digo fonte do Subversion em um diret rio cnamado subversion no diret rio de tra balho atual Voc pode ajustar o ltimo argumento como quiser Independentemente de que nome voc d ao diret rio de sua nova c pia de trabalho por m quando esta opera o concluir voc agora ter o c digo fonte do Subversion E claro que voc ainda vai precisar obter algumas poucas bibliotecas auxiliares apr apr util etc consulte o arqui vo INSTALL na raiz de sua c pia de trabalho para mais detalhes Tutorial Alta Velocidade Por favor retorne o encosto de sua poltrona para a posi o vertical e ve rifique o travamento da mesinha sua frente Tripula o preparar para decolagem A seguir voc confere um breve tutorial que vai lhe conduzir pela configura o e utiliza o b sica do Subversion Ao final voc deve ter uma compreens o b sica do uso t pico do Subversion Os exemplos usados neste ap ndice assumem que voc tem o svn o cliente de linha de comando do Subversion e o svnadmin a ferramenta administrati va prontas para usar em um sistema operacional Unix like Este tutorial tam b m funciona para o prompt de comando do Windows assumindo que voc fa a algumas devidas adapta es Tamb m assumimos que voc est usan do o Subversion 1 2 ou posterior execute svn version para conferir O Subversion armazena todos os dados versionados em um reposit rio central Para co me ar crie um
39. diretamente para processos em mem ria 113 FSFS Administra o do Reposit rio E de forma nenhuma voc pode usar um reposit rio baseado em BDB que resida em um compartilhamento de rede sendo acessado por m ltiplos clientes do compartilhamento de uma s vez o que muitas vezes o ponto determinante para n o se escolher ter reposit rios hospedados em um compartilhamento em primeiro lugar Se voc tentar usar Berkeley DB em um sistema de arquivos remoto que n o atenda s especifica es os resultados ser o imprevisiveis voc pode ver erros misteriosos imediatamente ou pode levar meses antes de voc desco brir que sua base de dados do reposit rio est sutilmente corrompida Voc deveria considerar muito seriamente o uso de armazenamento de dados em FSFS para reposit rios que precisem residir em um compartilhamento de re de E finalmente como o Berkeley DB uma biblioteca interligada diretamente dentro do Sub version ele mais sens vel a interrup es do que um sistema de uma base de dados re lacional A maioria dos sistemas SQL por exemplo possuem um processo servidor dedi cado que intermedia todo o acesso s tabelas Se um programa que esteja acessando a base de dados travar por algum motivo o daemon da base de dados percebe a perda de conex o e efetua uma limpeza de quaisquer vest gios problem ticos que tenham ficado E como o daemon da base de dados o nico processo que efetivamente ac
40. elas somente ser o apresentadas ao servidor se o servidor solicitar elas 3 Estas op es s o normalmente utilizadas para autenticar como um usu rio diferente daquele que o Sub version teria optado por padr o como seu nome de usu rio no sistema ou quando tenta se evitar as perguntas interativas como nas chamadas ao comando svn a partir de um script Aqui est um resumo final que descreve como um cliente Subversion se comporta quando ele recebe um desafio de autentica o 1 Primeiro o cliente verifica se o usu rio especificou alguma credencial na linda de co mando com as op es username e ou password Se n o ou se essas op es n o conseguem autenticar com sucesso ent o 2 o cliente procura pelo nome porta e dom nio do servidor na rea auth do ambiente de execu o para ver se o usu rio j possui as credenciais em cache Se n o ou se as credenciais em cache n o conseguem autenticar ent o 3 finalmente o cliente solicita as credenciais ao usu rio a menos que seja instru do a n o fazer isso atrav s da op o non interactive ou suas equivalentes espec fi cas do cliente Se o cliente autentica se com sucesso por qualquer dos m todos listados acima ele tenta r armazenar as credenciais em disco a menos que o usu rio tenha desabilitado este comportamento como mencionado anteriormente SNovamente um erro comum deixar um servidor mal configurado de forma que ele nunca exija
41. m sob controle de vers o frequentemente s o intimamente relacionados a ou talvez dependentes de dados alheios Geralmente as necessidades do seu projeto de terminar o que voc fique t o atualizado quanto poss vel em rela o aos dados forneci dos por essa entidade externa sem sacrificar a estabilidade do seu pr prio projeto Este cen rio se repete o tempo todo em qualquer lugar onde a informa o gerada por um gru po de pessoas tem um efeito direto sobre o que gerado por outro grupo Por exemplo desenvolvedores de software podem estar trabalhando em um aplicativo que faz uso de uma biblioteca de terceiros O Subversion tem tal relacionamento com a biblio teca Apache Portable Runtime ver A Biblioteca Apache Portable Runtime O c digo fonte do Subversion depende da biblioteca APR para todas as suas necessidades de por tabilidade Em fases anteriores do desenvolvimento do Subversion o projeto seguiu de perto as mudan as na API da APR aderindo sempre ao estado da arte das agita es no c digo da biblioteca Agora que tanto a APR quanto o Subversion amadureceram o Sub version tenta sincronizar com a API da biblioteca APR somente em libera es est veis e bem testadas Agora se seu projeto depende de informa es de algu m existem v rias maneiras pelas quais voc poderia tentar sincronizar essas informa es com as suas pr prias Mais dolo rosamente voc poderia emitir oral instru es orais ou por es
42. o anterior de um sub m dulo contido em um subdiret rio ou talvez queira descobrir quando um bug apareceu pela primeira vez eu arquivo espec fico Este o aspecto de m quina do tempo de um sistema de controle de vers o a funcionalidade que te permite mover qualquer parte de sua c pia local para frente ou para tr s na hist ria Revis es mistas t m limita es Apesar de voc poder fazer uso de revis es mistas em seu ambiente local esta flexibilida de tem limita es Primeiramente voc n o pode publicar a dele o de um arquivo ou diret rio que n o este ja completamente atualizado Se uma vers o mais nova do item existe no reposit rio sua tentativa de dele o ser rejeitada para prevenir que voc acidentalmente destrua altera es que voc ainda n o viu Em segundo lugar voc n o pode publicar altera es em metadados de diret rios a me nos que ele esteja completamente atualizado Voc ir aprender a anexar propriedades aos itens em Cap tulo 3 T picos Avan ados Uma revis o em um diret rio local define um conjunto espec fico de entradas e propriedades e assim publicar altera es em proprie dades de um diret rio desatualizado pode destruir propriedades que voc ainda n o viu Sum rio N s abordamos uma s rie de conceitos fundamentais do Subversion neste cap tulo N s introduzimos as no es de reposit rio central c pia local do cliente e o array de rvores de
43. o ao inv s de outra bem como as raz es pelas quais voc n o deveria escolher uma delas O Servidor svnserve Porque voc pode querer us lo R pido e f cil de configurar Protocolo de rede orientado a estado e notavelmente mais r pido que o WebDAV 142 Configura o do Servidor Dispensa necessidade da cria o de contas de usu rio no sistema servidor Senhas n o trafegam atrav s da rede Porque voc pode querer evit lo Protocolo de rede n o criptografado Apenas um nico m todo de autentica o dispon vel Senhas s o armazenadas em texto puro no servidor Sem nenhum tipo de log mesmo para erros svnserve sobre SSH Porque voc pode querer us lo Protocolo de rede orientado a estado e notavelmente mais r pido que o WebDAV Voc pode aproveitar a exist ncia de contas ssh e infraestrutura de usu rios exis tente Todo o tr fego de rede criptografado Porque voc pode querer evit lo Apenas um nico m todo de autentica o dispon vel Sem nenhum tipo de log mesmo para erros Necessita que os usu rios estejam num mesmo grupo no sistema ou que usem uma chave ssh compartilhada Seu uso inadequado pode resultar em problemas com permiss es de arquivos O Servidor Apache HTTP Porque voc pode querer us lo Permite que o Subversion use quaisquer dos in meros sistemas de autentica o j dispon veis e integrados com o Apache
44. o do Subversi on versionamento de diret rios opera es offline update vs status ramos r tulos resolu o de conflitos e autentica o Ap ndice C WebDAV e Autoversionamento Descreve os detalhes do WebDAV e DeltaV e como voc pode configurar e montar seu reposit rio Subversion em modo de leitura escrita em um compartilhamento DAV Ap ndice D Ferramentas de Terceiros Discute as ferramentas que suportam ou usam o Subversion incluindo programas cli entes alternativos ferramentas para navega o no reposit rio e muito mais Livro Livre Este livro teve in cio com a documenta o escrita pelos desenvolvedores do projeto Sub version a qual foi reunida em um nico trabalho e reescrito Assim ele sempre esteve sob uma licen a livre Veja Ap ndice E Copyright De fato o livro foi escrito sob uma vis o p blica originalmente como parte do pr prio projeto Subversion Isto significa duas coisas e Voc sempre ir encontrar a ltima vers o deste livro no pr prio reposit rio Subversion do livro Voc pode fazer altera es neste livro e redistribu lo entretanto voc deve faz lo sob uma licen a livre Sua nica obriga o manter o cr ditos originais dos auto res E claro que ao inv s de distribuir sua pr pria vers o deste livro gostar amos muito mais que voc enviasse seu feedback e corre es para a comunidade de desenvolvi mento do Subversion Xvi Pref cio O sit
45. o os nomes de outras se es no arquivo seus valores s o globs indicadores textuais que possivelmente po dem conter caracteres coringa que s o comparados com os nomes de hosts das maqui nas s quais as requisi es do Subversion s o enviadas groups beanie babies red bean com collabnet svn collab net beanie babies collabnet Quando o Subversion usado em rede ele tenta casar o nome do servidor ao qual est tentando alcan ar com o nome do grupo na se o groups Se encontrar uma correspon d ncia o Subversion ent o procura por uma se o no arquivo servers com o mesmo nome do grupo em quest o A partir dessa se o ele l as configura es de rede atuais A se o global cont m as configura es que s o feitas para todos os servidores para os quais n o haja correspond ncia na se o groups As op es dispon veis nesta se o s o exatamente as mesmas que aquelas v lidas para outras se es de servidores no ar quivo exceto claro a se o especial groups e s o como o que se segue http proxy exceptions Isto especifica uma lista de padr es de nomes de hosts separados por v rgulas e que devem ser acessados diretamente sem que seja por meio de uma m quina de proxy A sintaxe desses padr es a mesma que utilizada no shell do Unix para nomes de ar quivos Um nome de host de um reposit rio que corresponda a qualquer desses pa dr es n o ser acessado atrav s de um proxy
46. o sobre um arquivo ou diret rio o svn log tamb m aceita uma op o verbose v Como o Subversion lhe permite mover e copiar ar quivos e diret rios importante ser capaz de rastrear altera es de caminhos no sistema de arquivos ent o no modo verboso o svn log vai incluir na sua sa da uma lista dos ca minhos alterados em uma revis o 32 Uso B sico svn log r 8 v r8 sally 2002 07 14 08 15 29 0500 1 line Changed paths M trunk code foo c M trunk code bar h A trunk code doc README Frozzled the sub space winch O svn log tamb m aceita uma op o quiet q que suprime o corpo da mensagem de log Quando combinada com a op o verbose ela apresentar apenas os nomes dos arquivos mudados Por Que o svn log Me Deu Uma Resposta em Branco Ap s trabalhar um pouco com o Subversion muitos usu rios v o se deparar com al go como S sva log r 2 A primeira vista isto parece ser um erro Mas lembre se de que as revis es se apli cam a todo o reposit rio ao passo que o svn log atua em um caminho no reposit rio Se voc n o informar um caminho o Subversion usa o diret rio atual como argu mento padr o Como resultado se voc estiver em um subdiret rio de sua c pia de trabalho e tentar ver o log de uma revis o em que nem o diret rio nem qualquer item nele contido mudou o Subversion vai lhe mostrar um log vazio Se voc quiser ver o que mudou
47. on the target repository and determine what repository it is mirroring and that the most re cently mirrored revision was revision 0 Then it will query the source repository and deter mine what the latest revision in that repository is Finally it asks the source repository s server to start replaying all the revisions between O and that latest revision As svnsync get the resulting response from the source repository s server it begins forwarding those revisions to the target repository s server as new commits svnsync help synchronize synchronize sync usage svnsync synchronize DEST URL Transfer all pending revisions from source to destination svnsync synchronize http svn example com svn mirror username syncuser password syncpass ted revision 1 properties for revision 1 ted revision 2 properties for revision 2 ted revision 3 properties for revision 3 Comm Copi Com Cop Com Copi 3 e3 o F H o atad Q tted revision 23406 d properties for revision 23406 tted revision 23407 Copied properties for revision 23407 Committed revision 23408 Copied properties for revision 23408 Comm Copi Comm Ji m Of particular interest here is that for each mirrored revision there is first a commit of that revision to the target repository and then property changes follow This is because the initi al commit is performed by and attributed to the user syncuser and datest
48. pode escrever nos arquivos da base de dados usando um valor de umask problem ti co que impossibilite o acesso de outros usu rios Ent o al m de definir um grupo comum para os usu rios do reposit rio o pr ximo passo for ar que cada processo que acesse o reposit rio use um valor adequado de umask Pa ra usu rios que acessam o reposit rio diretamente voc pode transformar o programa svn em um script que primeiro defina umask 002 e ent o execute o programa cliente svn real Voc pode escrever um script semelhante para o programa svnserve e adicionar um comando umask 002 ao pr prio script de script de inicializa o do Apache apachectl Por exemplo S cat usr bin svn bin sh umask 002 usr bin svn real Ser Outro problema comum frequentemente encontrado em sistemas Unix like Conforme um reposit rio usado o Berkeley DB ocasionalmente cria novos arquivos de log para re gistrar suas a es Mesmo num reposit rio que perten a inteiramente ao grupo svn estes 170 Configura o do Servidor novos arquivos criados n o pertencer o necessariamente a este grupo o que ent o cria mais problemas de permiss o para seus usu rios Uma boa forma de contornar isto defi nir o bit SUID dos diret rios ab do reposit rio Isto faz com que todos os arquivos rec m criados perten am ao mesmo grupo de seu diret rio pai Uma vez realizados estes passos seu reposit rio deve ser acess vel para todos os p
49. q Solicita que o cliente exiba apenas as informa es mais essenciais ao executar uma dada opera o recursive R Faz um subcomando executar recursivamente dentro dos subdiret rios A maioria dos subcomandos j executam recursivamente por padr o relocate FROM TO PATH Usado com o subcomando svn switch troca o local do reposit rio ao qual sua c pia de trabalho se refere Isto til se o local de seu reposit rio muda e voc tem uma c pia de trabalho existente que gostaria de continuar a usar Consulte svn switch para conferir um exemplo revision r REV Indica que voc estar informando uma revis o ou intervalo de revis es para uma dada opera o Voc pode informar n meros de revis o termos de revis o ou datas entre chaves como argumentos para a op o de revis o Se voc quiser fornecer um intervalo de revis es voc pode informar duas revis es separadas por dois pontos Por exemplo S svn log r 1729 svn log r 1729 HEAD svn log r 1729 1744 svn log r 2001 12 04 2002 02 17 S svn log r 1729 2002 02 17 Veja Termos de Revis o para informa es revprop Opera em uma propriedade de revis o ao inv s de uma propriedade espec fica de um arquivo ou diret rio Esta op o requer que voc tamb m informe uma revis o com a op o revision r show updates u Faz com que o cliente exiba informa o sobre quais arquivos em sua c pia de t
50. renderizar o conte do do arquivo consultando o cabe alho Content Type retornado na resposta da requisi o HTTP GET O valor deste cabe alho o valor de um tipo MIME Por padr o o Apache vai indicar aos navegadores web que todos os arquivos do reposit rio s o do tipo MIME default usualmente o tipo text plain Isto pode ser frustrante entretanto se um usu rio quiser que os arquivos do reposit rio sejam renderizados como algo com mais significado por exemplo seria timo que um arquivo foo htm1 pudesse ser renderizado como HTML na navega o Para fazer isto acontecer voc s precisa garantir que seus arquivos tenham o svn mime type adequadamente configurado Isto discutido em mais detalhes em Tipo de Conte do do Arquivo a voc ainda pode configurar seu cliente para anexar as propriedades svn mime type automaticamente aos arquivos que estejam entrando no reposit rio pela primeira vez veja Defini o Autom tica de Propriedades Assim em nosso exemplo se algu m definiu a propriedade svn mime type para text html no arquivo foo html ent o o Apache deve avisar adequadamente para que seu navegador web renderize o arquivo como HTML Algu m tamb m poderia anexar proprie dades image de tipos mime para imagens e fazendo isso no final das contas obter um site web completo podendo ser visualizado diretamente do reposit rio Geralmente n o h problema em se fazer isto desde que o website n o
51. se De certo modo isso j acontece dentro do Subversion Cada uma das bibliotecas lbsvn ra dav libsvn ra local libsvn ra serf e libsvn ra svn implementam a mesma in terface todas funcionando como extens es de libsvn ra E todas as quatro se comunicam com a Camada de Reposit rio libsvn ra local conecta se ao reposit rio diretamente as outras tr s atrav s de uma rede As bibliotecas libsvn fs base e libsvn_fs_fs s o outro par de bibliotecas que implementam a mesma funcionalidade de maneiras diferentes ambas s o extens es para a biblioteca libsvn fs comum O cliente tamb m mostra os benef cios da modularidade no projeto do Subversion A bibli oteca Ibsvn client do Subversion uma boa para a maioria das funcionalidades necess ri as para projetar um til cliente do Subversion veja Camada Cliente Portanto embora a distribui o do Subversion ofere a apenas o programa de linha de comando svn como cli ente existem v rias ferramentas de terceiros que oferecem v rias formas de interface gr fica com o usu rio Essas interfaces gr ficas usam a mesma API que o cliente de linha de comando usa Este tipo de modularidade tem tido um papel importante na prolifera o de clientes Subversion acess veis e integra es em IDEs e por consequ ncia pela tremenda taxa de ado o do pr prio Subversion Camada de Reposit rio Quando referirmos Camada de Reposit rio do Subversion estamos geralmente falando sobre dois
52. seu arquivo n o mexido pois o Subversion cria dois novos arquivos Um deles tem a extens o oldrev e cont m a revis o BASE do arquivo O outro arquivo tem uma extens o newrev e con t m o conte do da revis o atualizada do arquivo Este comportamento serve de prote o ao usu rio contra falhas na tentativa de executar fus es contextuais nos arquivos que sim plesmente n o podem ser contextualmente fundidos Al m disso se a propriedade svn mime type estiver definida ent o o m dulo Apache do Subversion usar seu valor para preencher o cabe alho HTTP Content type quan do responder a solicita es GET Isto oferece ao navegador web uma dica crucial sobre como exibir um arquivo quando voc o utiliza para examinar o conte do de seu reposit rio Subversion Executabilidade de Arquivo Em muitos sistemas operacionais a capacidade de executar um arquivo como um coman do comandada pela presen a de um bit de permiss o para execu o Este bit usual mente vem desabilitado por padr o e deve ser explicitamente habilitado pelo usu rio em cada arquivo que seja necess rio Mas seria um grande inc modo ter que lembrar exata mente quais arquivos de uma c pia de trabalho verificada recentemente estavam com seus bits de execu o habilitados e ent o ter que troc los Por esta raz o o Subversi on oferece a propriedade svn executable que um modo de especificar que o bit de execu o para o arquivo no qual esta
53. svn commit m Merged my calc branch changes r406 480 into the trunk Sending integer c Sending button c Sending Makefile Transmitting file data Committed revision 481 Agora o tronco cont m a segunda leva completa de modifica es feitas no ramo Neste ponto voc pode tanto excluir o seu ramo falaremos mais sobre isso posteriormente ou continuar trabalhando em seu ramo e repetir este procedimento para mesclagens subse quentes Desfazendo Altera es Outro uso comum do svn merge para desfazer uma modifica o que j foi submetida ao reposit rio Suponha que voc esteja trabalhando alegremente na c pia de trabalho de calc trunk e voc descobre que a modifica o que havia sido feita na revis o 303 que modificou o arquivo integer c est completamente errada E que ela nunca deveria ter acontecido nem tampouco submetida Voc pode usar o svn merge para desfazer a modifica o em c pia de trabalho e ent o submeter a modifica o local para o reposit rio Tudo o que voc precisa fazer especificar uma diferen a reversa Voc pode fazer isto especificando revision 303 302 ou tamb m o equivalente change 303 svn merge c 303 http svn example com repos calc trunk integer c SW svn status integer c gw V svn diff verify that the change is removed svn commit m Undoing change committed in r303 Sending integer c Transmitting file data Committed revision 350
54. voc pode usar asintaxe URL PATH svn log http svn red bean com repos test foo c bar c r32 sally 2003 01 13 00 43 13 0600 Mon 13 Jan 2003 1 line Added defines r31 harry 2003 01 10 12 25 08 0600 Fri 10 Jan 2003 1 line Added new file bar c r28 sally 2003 01 07 21 48 33 0600 Tue 07 Jan 2003 3 lines Quando estiver concatenando os resultados de m ltiplas chamadas ao comando log voc tamb m pode usar a op o incremental O svn log normalmente exibe uma linha 236 Refer ncia Completa do Subversion tracejada no come o de cada mensagem de log depois de cada mensagem de log subse quente e ap s a ltima mensagem de log Se voc executou o svn log com um intervalo de revis es voc deve ter obtido isto svn log r 14 15 r14 ELS Entretanto se voc queria gravar duas mensagens de log n o sequenciais em um arqui vo voc poderia ter feito algo assim svn log r 14 gt mylog svn log r 19 gt gt mylog svn log r 27 gt gt mylog cat mylog LO UA NO Ur r14 r19 r27 Voc pode evitar a bagun a das duplas linhas tracejadas em sua sa da usando a op o incremental svn log incremental r 14 gt mylog svn log incremental r 19 gt gt mylog svn log incremental r 27 gt gt mylog cat mylog Uy Ur Tr O r27 A op o incremental resulta em um controle da sa da semelhante tamb
55. 0 fi echo Only the syncuser user may commit new revisions gt amp 2 exit 1 After installing our hook scripts and ensuring that they are executable by the Subversion server we re finished with the setup of the mirror repository Now we get to actually do the mirroring The first thing we need to do with svnsync is to register in our target repository the fact that it will be a mirror of the source repository We do this using the svnsync initialize sub command Note that the various svnsyne subcommands provide several of the same authentication related options that svn does username password non interactive config dir and no auth cach svnsync help init initialize init usage svnsync initialize DEST URL SOURCE URL E Initialize a destination repository for synchronization from another repository The destination URL must point to the root of a repository with no committed revisions The destination repository must allow revision property changes You should not commit to or make revision property changes in the destination repository by any method other than svnsync In other words the destination repository should be a read only mirror of the source repository Valid options non interactive do no interactive prompting no auth cach do not cache authentication tokens username arg specify a username ARG password arg specify a password ARG config dir arg
56. 1 2 introduziu uma nova variante da sintaxe de palavra chave que trouxe funcionalidade adicional e til embora talvez at pica Agora voc pode dizer ao Subversi on para manter um tamanho fixo em termos do n mero de bytes consumidos para a pa lavra chave substitu da Pelo uso de um duplo dois pontos ap s o nome da palavra chave seguido por um n mero de caracteres de espa o voc define esta largura fixa Quando o Subversion for substituir sua palavra chave para a palavra chave e seu valor ele substituir essencialmente apenas aqueles caracteres de espa o deixando a largura total do campo da palavra chave inalterada Se o valor substitu do for menor que a largura definida para o campo haver caracteres de enchimento extras espa os no final do campo substitu do se for mais longo ser truncado com um caractere de conten o espe cial 4 logo antes do sinal de moeda delimitador de fim Por exemplo digamos que voc possui um documento em que temos alguma se o com dados tabulares refletindo as palavras chave do Subversion sobre o documento Usando a sintaxe de substitui o de palavra chave original do Subversion seu arquivo pode parecer com alguma coisa como SRevs Revis o da ltima submiss o SAuthorS Autor da ltima submiss o SDateS Data da ltima submiss o Neste momento vemos tudo de forma agrad vel e tabular Mas quando voc em seguida submete este arquivo com a substitui o de palavra chav
57. 1 line Ainda melhorando a cor amarela Path project raisin jpg UUID Token opaquelocktoken fc2b4d 98 9 0310 abf3 653ff3226e6b Owner harry Created 2006 02 16 13 29 18 0500 Thu 16 Feb 2006 Expires Comment 1 line Necessidade de fazer um ajuste rapido nesta imagem svnadmin rmlocks usr local svn repos project raisin jpg Removed lock on project raisin jpg Uma op o mais interessante permitir que usu rios quebrem as travas de outros atrav s da rede Para fazer isto Sally simplesmente precisa passar a op o force para o co mando de destravamento S svn status u M 23 bar c M O 32 raisin jpg 72 foo h Status against revision 105 svn unlock raisin jpg svn raisin jpg is not locked in this working copy svn info raisin jpg grep URL URL http svn example com repos project raisin jpg svn unlock http svn example com repos project raisin jpg svn Unlock request failed 403 Forbidden http svn example com svn unlock force http svn example com repos project raisin jpg raisin jpg unlocked Agora a tentativa inicial de Sally para destravar falhou porque ela executou svn unlock diretamente em sua c pia de trabalho do arquivo e nenhum sinal de trava estava presen te Para remover a trava diretamente do reposit rio ela precisa passar uma URL para svn unlock Sua primeira tentativa para destravar a URL falhou porque ela n o pode autenti c
58. Ao usar URLs svn ssh entretanto os usu rios podem ser incomoda dos repetidamente pelo ssh solicitando senhas a cada conex o que inicie A solu o usar uma ferramenta separada para cache de senhas do SSH como o ssh agent em um sistema Unix like ou o pageant no Windows Quando executada sobre um t nel a autoriza o principalmente controlada pelas per miss es do sistema operacional para os arquivos da base dados do reposit rio o que praticamente o mesmo como se Harry estivesse acessando o reposit rio diretamente atra v s de uma URL file Se m ltiplos usu rios no sistema v o acessar o reposit rio di retamente voc pode querer coloc los num mesmo grupo e voc precisar ter cuidado com as umasks N o deixe de ler Dando Suporte a M ltiplos M todos de Acesso ao Re posit rio Mas mesmo no caso do tunelamento o arquivo svnserve conf ainda pode ser usado para bloquear acesso simplesmente definindo auth access read OU auth access non Voc pode ter pensado que essa hist ria de tunelamento com SSH acabou por aqui mas n o O Subversion permite que voc crie comportamentos espec ficos para o modo t nel em seu arquivo config de execu o veja Area de Configura o do Tempo de Execu o Por exemplo suponha que voc queira usar o RSH ao inv s do SSH Na se o tunnels do seu arquivo config simplesmente defina algo parecido com isto tunnels rsh rsh 2Perceba que
59. Autoversionamento Software Tipo Windows Mac Linux Descri o rvore em compartilha mentos Web DAV KDE Konque ror Extensao WebDAV pa ra gerencia dor de arqui vos Gerenciador de arquivos visual capaz de executar opera es de rvore em compartilha mentos Web DAV Mac OS X Implementa o de siste ma de arqui vos WebDAV Sistema ope racional com suporte nativo para monta gem de com partilhamen tos WebDAV Novell NetDri ve Implementa o de siste ma de arqui vos WebDAV Programa de mapeamento de rede para associar le tras de um drive Win dows a um compartilha mento Web DAV remoto SRT WebDri ve Implementa o de siste ma de arqui vos WebDAV Software de transfer ncia de arquivos que al m de outras coisas permite asso cia o de le tras de drives Windows a compartilha mentos Web DAV remotos davfs2 Implementa o de siste ma de arqui vos WebDAV Driver para sistema de arquivos do Linux que lhe permite mon tar comparti lhamentos WebDAV Aplica es WebDAV Independentes Uma aplica o WebDAV um programa capaz de conversar via protocolos WebDAV com um servidor WebDAV Vamos abordar alguns dos programas mais populares com esse ti po de suporte a WebDAV 334 WebDAV e Autoversionamento Microsoft Office Dreamweaver Photoshop Para Windo
60. C o qual pode ser encontrado em tools exam ples minimal client c que exemplifica como manusear a API do Subversion para criar um simples programa cliente Vinculando Diretamente Uma Palavra Sobre o que Certo Porque seu programa GUI deveria vincular se diretamente com libsvn client em vez de agir como uma cobertura em volta do programa de linha de comando Al m de ser mais eficiente pode ser mais correto tamb m Um programa de linha de coman do como o oferecido com o Subversion que se vincula com a biblioteca cliente pre cisa traduzir eficientemente os bits das respostas e requisi es de dados dos tipos C para alguma forma de sa da leg vel por seres humanos Esse tipo de tradu o pode ser dispendioso Sendo assim o programa pode n o mostrar todas as informa es colhidas pela API ou pode combinar peda os de informa es para uma apresenta o compacta Se voc encobrir um programa de linha de comando com outro programa o segundo programa ter acesso apenas s informa es j interpretadas e como mencionado possivelmente incompletas que devem ser novamente traduzidas para seu pr prio formato de apresenta o Com cada camada de encapsulamento a integridade dos dados originais potencialmente degradada mais e mais quase como o resultado de fazer uma c pia de uma c pia de uma c pia do seu cassete de udio ou vi deo favorito 191 Incorporando o Subversion Mas o argume
61. Daily Peter Davis Olivier Davy Robert P J Day Mo De Jong Brian Denny Joe Drew Nick Duffek Ben Elliston Justin Erenkrantz Shlomi Fish Julian Foad Chris Foote Martin Furter Dave Gilbert Eric Gillespie David Glasser Matthew Gregan Art Haas Eric Hanchrow Greg Hudson Alexis Huxley Jens B Jorgen sen Tez Kamihira David Kimdon Mark Benedetto King Andreas J Koenig Nuutti Kotivu ori Matt Kraai Scott Lamb Vincent Lefevre Morten Ludvigsen Paul Lussier Bruce A Mah Philip Martin Feliciano Matias Patrick Mayweg Gareth McCaughan Jon Middleton Tim Moloney Christopher Ness Mats Nilsson Joe Orton Amy Lyn Pilato Kevin Pilch Bisson Dmitriy Popkov Michael Price Mark Proctor Steffen Prohaska Daniel Rall Jack Repenning Tobias Ringstrom Garrett Rooney Joel Rosdahl Christian Sauer Larry Shat zer Russell Steicke Sander Striker Erik Sjoelund Johan Sundstroem John Szakmeister Mason Thomas Eric Wadsworth Colin Watson Alex Waugh Chad Whitacre Josef Wolf Blair Zajac e a comunidade inteira do Subversion Agradecimentos de Ben Collins Sussman Agrade o a minha esposa Frances quem por v rios meses come ou a ouvir Mas doci nho eu estou trabalhando no livro ao inv s do habitual Mas docinho eu estou escre vendo um e mail Eu n o sei onde ela arruma tanta paci ncia Ela meu equil brio perfei to Agrade o minha extensa fam lia e amigos por seus sinceros votos de encorajamento
62. IDEAQGBASE svn Unable to find repository location for concept IDEA in revision 1 E quando executada ela d os mesmos resultados esperados Neste ponto provavelmente o leitor mais atento est se perguntando se a sintaxe de revi s es marcadoras causa problemas em caminhos na clopia de trabalho ou em URLs que atualmente tenham sinais em si mesmas Depois de tudo como o svn sabe se news 11 o nome de um diret rio em minha rvore ou se apenas uma sintaxe para a revis o 11 de news Felizmente ainda que o svn considere sempre esta ltima op o existe uma regra trivial Voc s precisa adicionar um sinal de arroba ao final do caminho como em news 11 O svn s ir se importar com o ltimo sinal de arroba no argumento e que n o seja considerado ilegal omitir um especificador do n mero da revis o marcadora de pois desse arroba Esta regra tamb m se aplica a caminhos que terminal com um sinal de arroba voc poderia usar filename para se referir a um arquivo chamado filena me Vamos considerar a outra quest o ent o na revis o 1 como era estava o conte do de qualquer que seja o arquivo que estava ocupando o endere o concept s IDEA naquele momento Vamos usar explicitamente uma revis o marcadora para nos ajudar svn cat concept IDEAQI The idea behind this project is to come up with a piece of software that can frab a naggily wort Frabbing naggily worts is tricky business and d
63. Michael Pilato Um obrigado especial a Amy minha melhor amiga e esposa por inacredit veis nove anos por seu amor e apoio paciente por me tolerar at tarde da noite e por ag entar o duro processo de controle de vers o que impus a ela N o se preocupe querida voc ser um assistente do TortoiseSVN logo Gavin provavelmente n o h muitas palavras neste livro que voc possa com sucesso pronunciar nesta fase de sua vida mas quando voc finalmente aprender a forma escri ta desta louca l ngua que falamos espero que voc esteja t o orgulhoso de seu pai quan to ele de voc Aidan Daddy luffoo et ope Aiduh yike contootoo as much as Aiduh yike batetball base ball et bootball M e e Pai agra o pelo apoio e entusiasmo constante Sogra e Sogro agrade o por tudo da mesma forma e mais um pouco por sua fabulosa filha Tiro o chap u para Shep Kendall foi atrav s dele que o mundo dos computadores foi aberto pela primeira vez a mim Ben Collins Sussman meu orientador pelo mundo do c digo aberto Karl Fogel voc meu emacs Greg Stein o difusor da programa o pr tica como fazer Brian Fitzpatrick por compartilhar esta experi ncia de escrever junto co migo As muitas pessoas com as quais eu estou constantemente aprendendo e continuo aprendendo Finalmente agrade o a algu m que demonstra ser perfeitamente criativo em sua excel n cia voc O Que o Subversion Subversion um
64. N O ACEITEM A EXCLUS O DE T Q ARANTIAS a a Limita o de Responsabilidade EXCETO NA EXTENS O EXIGIDA PELA LEI APLICAVEL EM NENHUMA CIRCUNSTANCIA O LICENCIANTE Pb ERA RESPONSAVE Ea H PARA COM VOC CONSEQUENCIAIS USO DA OBRA MESMO QUE O LIC POSSIBILIDADE DE TAIS DANOS Pb POR QUAISQUER DANOS ESPECIAIS INCI PUNITIVOS OU EXEMPLARES ORIUNDOS ENTAIS ESTA LICENCA OU DO NCIANTE TENHA SIDO AVISADO SOBRE A VU H LT LT Termina o Esta Licen a e os direitos aqui concedidos terminar o automaticamente no caso de qualquer viola o dos termos desta Licen a por Voc Pessoas f sicas ou jur dicas que tenham recebido Obras Derivadas ou Obras Coletivas de Voc sob esta Licen a entretanto n o ter o suas licen as terminadas desde que tais pessoas f sicas ou jur dicas permane am em total cumprimento com essas licen as As Se es 1 2 5 6 7 e 8 subsistir o a qualquer termina o desta Licen a Sujeito aos termos e condi es dispostos acima a licen a aqui concedida perp tua pela dura o do direito autoral aplic vel Obra N o obstante o disposto
65. Para quaisquer opera es al m destas requeira um usu rio autenticado lt LimitExcept GET PROPFIND OPTIONS REPORT gt Require valid user lt LimitExcept gt lt Location gt Estes s o apenas uns poucos exemplos simples Para informa o mais aprofundada so bre controle de acesso e a diretiva Require d uma olhada na se o Security da cole o de tutoriais da documenta o do Apache em http httpd apache org docs 2 0 misc tutorials html Controle de Acesso por Diretorio poss vel configurar permiss es mais granularizadas usando um segundo m dulo do Apache httpd mod authz svn Este m dulo captura varias URLs opacas passando do cliente para o servidor pede ao mod dav svn para decodific las e ent o possivelmente restringe requisi es baseadas em pol ticas de acesso definidas em um arquivo de confi gura o Se voc compilou o Subversion a partir do c digo fonte o mod authz svn constru do automaticamente e instalado juntamente com o mod dav svn Muitas distribui es bin rias tamb m o instalam automaticamente Para verificar se est instalado corretamente 160 Configura o do Servidor assegure se de que ele venha logo depois da diretiva LoadModule do mod dav svn no httpd conf LoadModule dav module modules mod dav so LoadModule dav svn module modules mod dav svn so LoadModule authz svn module modules mod authz svn so Para ativar este m dulo voc precisa confi
66. Servidor Subversion depend Tcpip start auto Isto define um novo servi o do Windows chamado svn o qual executa um comando svn serve exe particular quando iniciado neste caso com raiz em C repos No entanto ha diversos pontos a considerar neste exemplo anterior Primeiramente note que o programa svnserve exe deve sempre ser chamado com a op o service Quaisquer outras op es para o svnserve ent o devem ser especifica das na mesma linha mas voc n o pode adicionar op es conflitantes tais como daemon d tunnel OU inetd i J op es como r ou listen port n o ter o problemas Em segundo lugar tenha cuidado com rela o a espa os ao invocar o comando SC EXE padr es chave valor n o devem conter es pa os entre chave e devem ter exatamente um espa o antes de valor Por ltimo te nha cuidado tamb m com espa os na sua linha de comando a ser executada Se um no me de diret rio contiver espa os ou outros caracteres que precisem de escape coloque todo o valor interno de binpath entre aspas duplas escapando as C gt sc create svn binpath C arquivos de programas svn bin svnserve exe servic displayname Servidor Subversion depend Tcpip start auto Tamb m observe que o termo binpath confuso seu valor a linha de comando nao o caminho para um execut vel Por isso que voc precisa delimit lo com aspas se o valor contiver espa os Uma vez que o s
67. Software Tigris org Subversion Config tunnels HKEY_CURRENT_USER Software Tigris org Subversion Config miscellany iglobal ignores o lo la rej rej DS Store log encoding use commit times no unlock tenable auto props HKEY_CURRENT_USER Software Tigris org Subversion Config auto props O exemplo anterior mostra o conte do de um arquivo reg que cont m algumas das op es de configura o mais comuns e seus valores padr o Note a presen a tanto de confi gura es em n vel de sistema para op es relacionadas a proxies de rede e configura es espec ficas por usu rio programa editor de texto e armazenamento de senhas entre outras Tamb m note que todas as op es est o efetivamente comentadas Voc precisa apenas remover o caractere de cerquilha 4 do come o dos nomes das op es e definir os valores como voc quiser Op es de Configura o Nesta se o vamos discutir as op es de configura o espec ficas de tempo de execu o que s o atualmente suportadas pelo Subversion Servidores O arquivo servers cont m op es de configura o relacionadas camada de rede H 174 Customizando sua Experi ncia com Subversion dois nomes de se o neste arquivo groups e global A se o groups essencial mente uma tabela de refer ncia cruzada As chaves nesta se o s
68. Subversion code map svn wc svn wc status none Em svn wc svn wc status normal RD svn wc svn wc status added A svn wc svn wc status missing O ae svn wc svn wc status incomplete svn wc svn wc status deleted ATDA 199 Incorporando o Subversion svn wc svn wc status replaced EU BRL svn wc svn wc status modified E MPS svn wc svn wc status merged G svn wc svn wc status conflicted C svn wc svn wc status obstructed svn wc svn wc status ignored S Ed svn wc svn wc status external o EXN svn wc svn wc status unversioned return code map get status def do status wc path verbose Calcula o tamanho do caminho da c pia de trabalho informado wc path len len wc path Contr i um contexto de client ctx svn client svn client ctx t def status callback path status root path len wc path len Uma fun o de retorno para svn client status Imprime o caminho menos a parte que sobrep e com a ra z do rastreamento de status text status generate status code status text status prop status generate status code status prop status o print Ss s s text status prop status path wc path len 1 Faz o rastreamento de status usando status callback como fun o de re svn client svn client status wc path None status callback 1 verbose O O ctx def usage_and_exit errorcode
69. Subversion e a modifica o de proprieda des de revis o Esses eventos particulares s o cobertos pela na camada de reposit rio porque possuem ganchos associados a eles Um sistema de ganchos de reposit rio n o est estritamente relacionado implementa o de um sistema de arquivos com versiona mento ent o ele fica na biblioteca de cobertura do reposit rio N o obstante o mecanismo de ganchos uma das raz es para a abstra o de uma bibli oteca de reposit rio separada do restante do c digo do sistema de arquivo A API de lbsvn repos oferece muitas outras utilidades importantes ao Subversion Isso inclui as ha bilidades para criar abrir destruir e recuperar passos em um reposit rio Subversion e o sistema de arquivos inclu do nesse reposit rio descrever as diferen as entre duas rvores de sistema de arquivos consultar as mensagens de log das submiss es associadas com todas ou algumas das revis es nas quais um conjunto de arquivos foi modificado no sistema de arquivos gerar um despejo do sistema de arquivos que seja leg vel ao ser humano uma com pleta representa o das revis es no sistema de arquivos analisar este formato de despejo carregando as revis es despejadas dentro de um re 189 Incorporando o Subversion posit rio Subversion diferente Como o Subversion continua a evoluir a biblioteca de reposit rio reposit rio crescer com a biblioteca de sistema de arquiv
70. Usando s AFIS nuon ennen Sted inside ada adia DEDE dio datas 193 A Biblioteca Apache Portable Runtime ees 194 Requisitos de URL e Caminho 195 Usando Outras Linguagens al m de C e C 195 Exemplos de C digo ii eeeeareraraaaa ana 196 9 Refer ncia Completa do Subversion aires 202 O Cliente de Linha de Comando do Subversion SVN cseeeeeeeeeeeeeeaee 202 Op es dO SVI is sated get nin eine hen ct gaga oa di Sacada edd hada 202 Subcomandos SVN cece ae eeeeeeeeeeeeaeaaeaeeeeeeeeeeaeaaeaneneeeees 206 SVNAGMIN sosai nates ad eee ie O eee ee ee 265 Op es dO SVNAGMIN seissieiecsteasetecosset cehteastheuceresheotuischves aa aaiae 265 svnadmin SubcommandsS eee eeeeeeeeeeeeaaaaeeeeeeeeeeeeaaa 266 SVNNOOK is cs Saree cena a a RENAS OA ele Caan em te 282 Op es do svnlook errar araras 282 Sub comandos do svnlook itens 283 vi Controle de Vers o com Subversion SVNSY NC raca ia seria Sena e a T CS a Sa CADU 299 SVNSVNC OPTIONS za ars nitar aan Taaa dba aa Avda S aba S Va aa 299 SVNSYNC Subcommands cece cece teen eee eeeeeeeeeeeeaaaaeeeeeseeeeeeaaa 300 SVASOIVE 5 0 AEA EEA etn eters Pec EE Te ee CAE 303 Op es do svnserve cece ee eeteeeeeeeeeaeaaeaeeeeeeeeeeaeaaaaeeeeees 304 SVAVEISION eszacas tiae induat tae a E ge Da al o sie haan La DAE eee 305 mod QV SV
71. You use the revision r and transaction t Op tions to specify which revision or transaction respectively to examine In the absence of both the revision r and transaction t options svnlook will examine the youngest or HEAD revision in the repository So the following two commands do exactly the same thing when 19 is the youngest revision in the repository located at path to repos svnlook info path to repos svnlook info path to repos r 19 The only exception to these rules about subcommands is the svnlook youngest subcom mand which takes no options and simply prints out the repository s youngest revision number svnlook youngest path to repos 19 119 Administra o do Reposit rio ones Most repositories will have no such transactions because transactions are usually either committed in which case you should access them as revisi on with the revision r option or aborted and removed Keep in mind that the only transactions you can browse are uncommitted Output from svnlook is designed to be both human and machine parsable Take as an example the output of the info subcommand svnlook info path to repos sally 2002 11 04 09 29 13 0600 Mon 04 Nov 2002 27 Added the usual Greek tree The output of the info subcommand is defined as 1 The author followed by a newline 2 The date followed by a newline 3 The number of characters in the log message foll
72. a propriedade svn mime type destes arquivos para image jpeg Ou talvez quaisquer arquivos que correspondam ao padr o cpp deveriam ter a propriedade svn eol style definida para native svn keywords atribu da para Id Suporte a propriedades autom ticas talvez seja a ferramenta mais pr tica no conjunto de ferramen tas do Subversion Veja Configura o para mais sobre a configura o deste recurso Portabilidade de Arquivo Felizmente para os usu rios do Subversion que rotineiramente se encontram em diferen tes computadores com diferentes sistemas operacionais o programa de linha de coman do do Subversion comporta se quase que da mesma forma em todos os sistemas Se vo c sabe como usar o svn em uma plataforma voc saber como manuse lo em qualquer outra Entretanto o mesmo nem sempre verdade em outras classes de software em geral ou 47 T picos Avan ados nos atuais arquivos que voc mant m no Subversion Por exemplo em uma m quina Win dows a defini o de um arquivo de texto seria similar usada em uma m quina Linux por m com uma diferen a chave os caracteres usados para marcar o fim das linhas des tes arquivos Existem outras diferen as tamb m As plataformas Unix t m e o Subversion suporta links simb licos Windows n o As plataformas Unix usam as permiss es do sis tema de arquivos para determinar a executabilidade Windows usa as extens es no nome do arquivo Pela
73. acima o Licenciante reserva se o direito de difundir a Obra sob termos diferentes de licen a ou de cessar a distribui o da Obra a qualquer momento desde que no entanto quaisquer destas a es n o sirvam como meio de retrata o desta Licen a ou de qualquer outra licen a que tenha sido concedida sob os termos desta Licen a ou que deva ser concedida sob os termos desta Licen a e esta Licen a continuar v lida e eficaz a n o ser que seja terminada de acordo com o disposto acima Outras Disposi es Cada vez que Voc distribuir ou executar publicamente por meios digitais a Obra ou uma Obra Coletiva o Licenciante oferece ao destinat rio uma licen a da Obra nos mesmos termos e condi es que a licen a concedida a Voc sob esta Licen a Cada vez que Voc distribuir ou executar publicamente por meios digitais uma Obra Derivada o Licenciante oferece ao destinat rio uma licen a Obra original nos mesmos termos e condi es que foram concedidos a Voc sob esta Licen a Se qualquer disposi o desta Licen a for tida como inv lida ou n o execut vel sob a lei aplic vel isto n o afetar a validade ou a possibilidade de execu o do restante dos termos desta Licen a e sem a necessidade de qualquer a o adicional das partes deste acordo tal disposi o ser reformada na m nima extens o 343 Copyright necess ria para tal disposi o tornar se v lida e execut vel
74. antes at que voc atualize sua c pia de trabalho Neste momento as palavras chave em seu arqui vo weather txt ser o re substitu das com a informa o que reflete a mais recente sub miss o conhecida para este arquivo Onde est GlobalRev 8 ou at mesmo uma se o de um livro 55 T picos Avan ados Novos usu rios s o frequentemente confundidos pela forma que a palavra chave Rev trabalha Como o reposit rio possui um n mero de revis o nico globalmen te incrementado muitas pessoas assumem que este n mero est refletido no valor da palavra chave SRevs Por m Rev reflete a ltima revis o na qual o arquivo foi modificado n o a ltima revis o para qual ele foi atualizado Compreender isto es clarece a confus o mas a frustra o muitas vezes permanece sem o suporte de uma palavra chave do Subversion para isso como podemos obter automaticamente o n mero de revis o global em seus arquivos Para fazer isto voc precisa de processamento externo O Subversion vem com uma ferramenta chamada svnversion que foi projetada apenas para este prop sito O comando svnversion rastreia sua c pia de trabalho e produz como sa da as revi s es que encontra Voc pode usar este programa mais algumas outras ferramen tas para embutir esta informa o sobre as revis es globais em seus arquivos Para mais informa es sobre svnversion veja svnversion O Subversion
75. backup It s your data protect it as much as you d like Often the best approach to repository backups is a diversified one which leverages combi nations of the methods described here The Subversion developers for example back up the Subversion source code repository nightly using hot backup py and an offsite rsync of those full backups keep multiple archives of all the commit and property change notifi cation emails and have repository mirrors maintained by various volunteers using svnsync Your solution might be similar but should be catered to your needs and that deli cate balance of convenience with paranoia And whatever you do validate your backups from time to time what good is a spare tire that_has a hole in it While all of this might not save your hardware from the iron fist of Fate S it should certainly help you recover from those trying times 4synadmin setlog can be called in a way that bypasses the hook interface altogether 15You know the collective term for all of her fickle fingers 139 Administra o do Reposit rio Sum rio At agora voc deve ter tido um entendimento de como criar configurar e manter reposit rios Subversion N s o introduzimos a v rias ferramentas que o ajudar o nessa tarefa Ao longo deste cap tulo n s mostramos obst culos comuns e sugest es para evit los Tudo que falta para voc decidir que tipo de informa o armazenar no seu reposit rio e final
76. basta solicitar ao Subversion que efetue a substi tui o da palavra chave LastChangedDate pelo valor adequado Voc controla onde a palavra chave inserida em seu documento colocando uma ncora de palavra chave no local desejado dentro do arquivo Esta ncora apenas uma sequ ncia de texto formata da como NomeDaPalavraChaves Todas as palavras chave s o sens veis a min sculas e mai sculas onde aparecem como ncoras em arquivos voc deve usar a capitaliza o correta para que a palavra chave se ja expandida Voc deve considerar que o valor da propriedade svn keywords esteja ci ente da capitaliza o tamb m certos nomes de palavras chave ser o reconhecidos in dependentemente do caso mas este comportamento est desaprovado O Subversion define a lista de palavras chave dispon veis para substitui o Esta lista cont m as seguintes cinco palavras chave algumas das quais possuem apelidos que vo c pode tamb m utilizar Date Esta palavra chave descreve a ltima vez conhecida em que o arquivo foi modificado no reposit rio e est na forma Date 2006 07 22 21 42 37 0700 Sat 22 Jul 2006 Ela tamb m pode ser especificada como LastChangedDate Revision Esta palavra chave descreve a ltima revis o conhecida em que este arquivo foi modi ficado no reposit rio e apresentada na forma Revision 144 Ela tamb m po de ser especificada como Last ChangedRevision OU Rev Author Esta palavra chave desc
77. bem isto n o desfaz exatamente a submiss o n o A modifica o ainda existe na revis o 303 Se algu m obtiver uma vers o do pro jeto calc entre as revis es 303 e 349 elas ainda conter o a tal modifica o incorreta certo Sim isto verdade Quando n s falamos sobre remover uma modifica o est vamos realmente falando sobre remov la da revis o HEAD A modifica o original ainda existir no hist rico do reposit rio Na maioria das situa es isto o suficiente Afinal a maioria das pessoas est o apenas interessadas em rastrear a revis o HEAD de um projeto Po r m h alguns casos especiais onde voc realmente pode querer destruir todas as evi d ncias da submiss o err nea Talvez algu m submetido acidentalmente um documento confidencial Isto n o t o f cil de se fazer pois o Subversion foi desenvolvido delibera damente para nunca perder informa o As revis es s o rvores imut veis as quais s o constru das umas a partir das outras Remover uma revis o do hist rico deveria causar um efeito domin criando o caos em todas as revis es subsequentes e possivelmente in validando todas as c pias de trabalho 3 Ressucitando Itens Exclu dos O grande ponto sobre sistemas de controle de vers o que a informa o nunca perdi da Mesmo quando voc exclui um arquivo ou diret rio ele pode at n o estar mais pre sente na revis o HEAD mas o objeto ainda existe nas revis
78. blame http svn red bean com repos test readme txt 3 sally This is a README file 5 harry You should read this Ainda que o svn blame informe que Harry modificou o arquivo readme txt por ltimo na re vis o 5 voc ter de verificar exatamente o que a revis o mudou para ter certeza de que Harry tenha mudado o context da linha ele pode ter apenas ajustado espa os em bran CO p ex 209 Nome Sinopse Refer ncia Completa do Subversion svn cat Exibe o conte do de arquivos ou URLs especificadas svn cat TARGET REV Descri o Exibe o conte do de arquivos ou URLs especificadas Para listar o conte do de diret rios veja svn list Nomes Alternativos Altera Nenhum Nada Acessa o Reposit rio Op es Sim revision r REV username USER password PASS no auth cach non interactive config dir DIR Exemplos Se voc quiser ver o arquivo readme txt em seu reposit rio sem carreg lo para sua c pia de trabalho check out svn cat http svn red bean com repos test readme txt This is a README file You should read this Se sua c pia de trabalho estiver desatualizada ou se voc tiver altera es lo iy cais e voc quiser ver a revis o HEAD de um arquivo em sua c pia de traba lho o svn cat vai obter automaticamente a revis o HEAD quando voc lhe passar um caminho cat foo c This file is in my
79. by default configured to allow changes to unversioned properties except by an administrator If a log message needs to be changed by an administrator this can be done using svnad min setlog This command changes the log message the svn 1og property on a given revision of a repository reading the new value from a provided file echo Here is the new correct log message gt newlog txt svnadmin setlog myrepos newlog txt r 388 The svnadmin setlog command by default is still bound by the same protections against modifying unversioned properties as a remote client is the pre and post rev prop change hooks are still triggered and therefore must be set up to accept changes of this nature But an administrator can get around these protections by passing the bypass hooks option to the svnadmin setlog command Remember though that by bypassing the hooks you are likely avoiding such things as email notifications of property changes backup systems which track unversioned property changes and so on In other words be very careful about what you are changing and how you change it Managing Disk Space While the cost of storage has dropped incredibly in the past few years disk usage is still a valid concern for administrators seeking to version large amounts of data Every bit of ver sion history information stored in the live repository needs to be backed up elsewhere perhaps multiple times as part of rotating backup
80. c bar c A bar c D foo c Move um arquivo no reposit rio commit imediato necessitando ent o de uma mensa gem de log svn move m Move a file http svn red bean com repos foo c http svn red bean com repos bar c Committed revision 27 244 Nome svn propdel Remove uma propriedade de um item Sinopse Refer ncia Completa do Subversion svn propdel PROPNAME PATH E T GI svn propdel PROPNAME revprop r REV TARGET Descri o Este comando remove as propriedades de arquivos diret rios ou revis es A primeira for ma remove propriedades versionadas em sua c pia de trabalho enquanto que a segunda remove propriedades n o versionadas remotas em uma revis o no reposit rio TARGET apenas determina qual reposit rio acessar Nomes Alternativos Altera pdel pd C pia de trabalho reposit rio apenas se executando sobre uma URL Acessa o Reposit rio Op es Apenas se executando sobre uma URL quiet q recursive R revision r R revprop username USER password PASS no auth cach non interactive config dir DIR E lt Exemplos Remove uma propriedade de um arquivo em sua copia de trabalho svn propdel svn mime typ some script property svn mime type deleted from some script Remove uma propriedade de uma revis o svn propdel revprop r 26 release date property release date deleted fro
81. calc branches my calc branch from calc trunk 340 Creating a private branch of calc trunk r303 sally 2002 10 29 21 14 35 0600 Tue 29 Oct 2002 2 lines Changed paths M calc trunk integer c integer c changed a docstring r98 sally 2002 02 22 15 35 29 0600 Fri 22 Feb 2002 2 lines Changed paths M calc trunk integer c integer c adding this file to the project Note que o Subversion est tra ando o hist rico do seu ramo de integer c pelo tempo at o momento em que ele foi copiado Isso mostra o momento em que o ramo foi criado como um evento no hist rico j que integer c foi copiado implicitamente quando calc trunk foi copiado Agora veja o que ocorre quando Sally executa o mesmo co mando em sua c pia do arquivo S pwd home sally calc 81 Fundir e Ramificar S svn log v integer c r344 sally 2002 11 07 15 27 56 0600 Thu 07 Nov 2002 2 lines Changed paths M calc trunk integer c integer c fix a bunch of spelling errors r303 sally 2002 10 29 21 14 35 0600 Tue 29 Oct 2002 2 lines Changed paths M calc trunk integer c integer c changed a docstring r98 sally 2002 02 22 15 35 29 0600 Fri 22 Feb 2002 2 lines Changed paths M calc trunk integer c integer c adding this file to the project Sally v suas pr prias modifica es na revis o 344 e n o as modifica es que voc fez na re
82. calc debug 109 1 calc debug_log 2 gz calc debug_log 3 gz VV VV DA Neste exemplo voc realizou algumas modifica es no arquivo button c mas em sua c pia de trabalho voc tamb m possui alguns arquivos n o versionados o mais recente programa calculator que voc compilou a partir do seu c digo fonte um arquivo fonte nomeado data c e uma s rie de arquivos de registro da sa da de depura o Agora vo c sabe que seu sistema de constru o sempre resulta no programa calculator como produto E voc sabe que sua ferramenta de testes sempre deixa aqueles arquivos de registro de depura o alojando ao redor Estes fatos s o verdadeiros para todas c pias de trabalho deste projeto n o para apenas sua pr pria E voc tamb m n o est interessado em ver aquelas coisas toda vez que voc executa svn status e bastante seguro que nin SN o isso o resultado completo de um sistema de constru o 52 T picos Avan ados gu m mais est interessado em nenhuma delas Sendo assim voc executa svn prope dit svn ignore calc para adicionar alguns filtros de rejei o para o diret rio calc Por exemplo voc pode adicionar os filtros abaixo como o novo valor da propriedade svn ignore calculator debug_log Depois de voc adicionar esta propriedade voc ter agora uma modifica o de proprie dade local no diret rio calc Mas note que o restante da sa da diferente para o coman do svn status S svn s
83. command will perma nently overwrite the previous log message Opcoes revision r REV bypass hooks Exemplos Set the log message for revision 19 to the contents of the file msg svnadmin setlog usr local svn repos r 19 msg 281 Nome Sinopse Refer ncia Completa do Subversion svnadmin verify Verify the data stored in the repository svnadmin verify REPOS PATH Descri o Run this command if you wish to verify the integrity of your repository This basically itera tes through all revisions in the repository by internally dumping all revisions and discarding the output it s a good idea to run this on a regular basis to guard against latent hard disk failures and bitrot If this command fails which it will do at the first sign of a pro blem that means that your repository has at least one corrupted revision and you should restore the corrupted revision from a backup you did make a backup didn t you Exemplos Verify a hung repository svnadmin verify usr local svn repos Verified revision 1729 svnlook svnlook um comando de console til para examinar diferentes aspectos do reposit rio Subversion Ele n o faz nenhuma mudan a no reposit rio usado mesmo para dar uma dar uma espiada svnlook usando tipicamente usado pelos hooks do reposit rio mas o administrador do reposit rio pode ach lo til como ferramente de diagn stico J que svnl
84. conceitos b sicos a implementa o de sistema de arquivos versionados acessada via libsvn fs e suportada por suas extens es libsvn fs base e libsvn_fs_fs e a l gica do reposit rio que a encapsula implementada em libsvn respos Estas bibliote cas provem os mecanismos de armazenamento e relat rios para as v rias revis es de seus dados em controle de vers o Esta camada est conectada com a Camada de Clien te atrav s da Camada de Acesso ao Reposit rio e da da perspectiva do usu rio Sub version a coisa no outro extremo da linha O Sistema de Arquivos Subversion n o um sistema de arquivos a n vel de kernel que se 186 Incorporando o Subversion pode instalar em um sistema operacional como o ext2 do Linux ou o NTFS mas um sis tema de arquivos virtual Al m de armazenar arquivos e diret rios como arquivos e di ret rios reais como os que voc pode navegar usando seu programa de terminal favorito ele usa um dos dois servidores abstratos de armazenamento dispon veis seja um ambi ente do banco de dados Berkeley DB ou uma representa o em arquivos planos Para aprender mais sobre os dois servidores de reposit rio veja Escolhendo uma Base de Da dos Houve at um consider vel interesse na comunidade de desenvolvimento em dar a futuras libera es do Subversion a habilidade de usar outros sistemas de base de dados talvez atrav s de um mecanismo como um ODBC Open Database C
85. conscientes da possibilidade de que pessoas n o autorizadas podem vasculhar seu tr fego de rede SSL faz com que esse tipo de an lise indesejada tenha menor possibilidade de resultar na exposi o de dados sens veis Se um cliente Subversion compilado para usar OpenSSL ent o ele ganha a habilidade de falar com um servidor Apache atrav s de URLs https A biblioteca Neon usada pelo cliente Subversion n o apenas capaz de verificar certificados de servidor mas tam b m de prover certificados de cliente quando necess rio Quando cliente e o servidor tro Por mais que certificados auto assinados ainda sejam vulner veis ao ataque do homem do meio tal ataque muito mais dif cil de ser executado por um observador casual do que o comparado a vasculhar senhas desprote gidas 157 Configura o do Servidor cam certificados SSL e se autenticam mutuamente com sucesso toda a comunica o subsequente criptografada por meio de uma chave de sess o Est fora do escopo deste livro descrever como gerar certificados de cliente e de servidor e como configurar o Apache para us los Muitos outros livros incluindo a pr pria docu menta o do Apache descrevem esta tarefa Mas o que pode ser coberto aqui como gerenciar os certificados de cliente e servidor a partir de um cliente Subversion ordin rio Ao se comunicar com o Apache atrav s de https um cliente Subversion pode rece ber dois diferentes
86. consume those areas first before growing the size of the databa se file So while deltification doesn t produce immediate space savings it can drastically slow future growth of the database Because all of the data that is subject to deltification in a BDB backed reposi Removing dead transactions Though they are uncommon there are circumstances in which a Subversion commit pro cess might fail leaving behind in the repository the remnants of the revision to be that wasn t an uncommitted transaction and all the file and directory changes associated with it This could happen for several reasons perhaps the client operation was inelegantly ter minated by the user or a network failure occurred in the middle of an operation Regard less of the reason dead transactions can happen They don t do any real harm other than consuming disk space A fastidious administrator may nonetheless wish to remove them You can use svnadmin s 1stxns command to list the names of the currently outstanding transactions svnadmin lstxns myrepos T9 3al a45 5 Each item in the resultant output can then be used with svnlook and its transaction t option to determine who created the transaction when it was created what types of changes were made in the transaction information that is helpful in determining whether or not the transaction is a safe candidate for removal If you do indeed want to remove a transaction its name can be passed to
87. contenha nenhum conte do gerado dinamicamente Personalizando a Apar ncia Voc normalmente vai fazer mais uso das URLs para arquivos versionados afinal on de o conte do interessante tende a estar Mas pode haver certas situa es voc pode precisar navegar na listagem de diret rios no que voc rapidamente ir notar que o HTML gerado para exibir estas listagens muito b sico e certamente n o pretende ser estetica mente agrad vel ou mesmo interessante Para possibilitar a personaliza o destas exibi es de diret rio o Subversion prov um recurso de ndice em XML Uma nica diretiva SVNIndexXSLT no bloco Location do seu httpd conf vai orientar o mod dav svn a gerar sa da XML ao exibir uma listagem de diret rio e referenciar uma folha de estilos XSLT sua escolha lt Location svn gt DAV svn SVNParentPath usr local svn SVNIndexXSLT svnindex xsl lt Location gt No in cio ele chamava se ViewCVS 164 Configura o do Servidor Usando a diretiva SVNIndexXSLT e uma folha de estilos criativa voc pode fazer com que suas listagens de diret rios sigam os esquemas de cores e imagens usados em ou tras partes de seu website Ou se voc preferir voc pode usar folhas de estilo de exem plo que j v m no diret rio tools xs1t dos fontes do Subversion Tenha em mente que o caminho informado para o diret rio em SVNIndexXSLT atualmente um caminho de URL os navegadores preci
88. da concep o de um determi nado cartaz uma imagem de um carro que necessita de alguns reparos armazenada em um arquivo usando o formato de imagem PNG O leiaute do cartaz est quase pronto e tanto Harry quanto Sally est o satisfeitos com a foto que eles escolheram para o carro da 57 T picos Avan ados nificado um Ford Mustang 1967 azul beb com uma parte infelizmente amassada no pa ra lama dianteiro esquerdo Agora como comum em trabalhos de desenho gr fico existe uma mudan a de planos que faz da cor do carro uma preocupa o Ent o Sally atualiza sua c pia de trabalho para a revis o HEAD inicializa seu software de edi o de fotos e realiza alguns ajustes na ima gem de modo que o carro est agora vermelho cereja Enquanto isso Harry sentindo se particularmente inspirado neste dia decide que a imagem teria mais impacto se o carro tamb m apresentasse ter sofrido um maior impacto Ele tamb m atualiza para a revis o HEAD e ent o desenha algumas rachaduras no p ra brisa do ve culo Ele conduz de for ma a concluir seu trabalho antes de Sally terminar o dela e depois admirando o fruto de seu ineg vel talento submete a imagem modificada Pouco tempo depois Sally finaliza sua nova vers o do carro e tenta submeter suas mudan as Por m como esperado o Subversion falha na submiss o informando Sally que agora sua vers o da imagem est desatualizada Vejamos onde a dificuldade ocorre
89. de Ramos eee Vaea Aer VYER ERE NEENA NR 100 Repository Layout renesse arar A E EEAS AEAEE TEENE TAES S 101 Data ENCI E EEO E T 101 Ramos de fornecedores eect ee eeeeeeesaeeeeaeeesaeeeeaaeeesaeeeaaenees 102 Procedimento Geral para Manuten o de Ramos de Fornecedores 103 SVN OAC GIFS Pll sent mates bth art a teen ete ate RN hate toate 105 MUM ANOS ae calbveiaa Leoa ral L o asma Edge Sa EEE Da Da dd dei A E onda AT enh added canoes 106 5 Administra o do Reposit rio see rraraa arara 107 O Reposit rio Subversion Defini o aaa 107 Estrat gias para Implementa o de Reposit rios cceeeeeeeeeeeeeeeeeees 108 Planejando a Organiza o do Reposit rio o 108 Decidindo Onde e Como Hospedar Seu Reposit rio 111 Escolhendo uma Base de Dados 111 Criando e Configurando Seu Reposit rio 115 Criando o Reposit rio e errrraraa arara 115 Implementando Ganchos de Reposit rio o 116 Berkeley DB Configuration errar 118 Repository Maintenance a eeeeeeaaeeeeeeaaeeeeeeaaeeeeeeaaeeeeeeaaeeees 118 An Administrator s Toolkit erra 118 Commit Log Message Correction rena 122 Controle de Vers o com Subversion Managing Disk Space eee eeeeeeeeeeeeeeaaaaeeeeeeeeeeeeaeaaeaees 122 Ber
90. de coletar seja individualmente ou atrav s de entidades coletoras de direitos de execu o por exemplo ECAD ASCAP BMI SESAC o valor dos seus direitos autorais pela execu o p blica da obra ou execu o p blica digital por exemplo webcasting da Obra se esta execu o for predominantemente intencionada ou direcionada obten o 341 Copyright de vantagem comercial ou compensa o monet ria privada ii Royalties e Direitos fonomec nicos O Licenciante renuncia o seu direito exclusivo de coletar seja individualmente ou atrav s de uma entidade designada como seu agente por exemplo a ag ncia Harry Fox royalties relativos a quaisquer grava es que Voc criar da Obra por exemplo uma vers o cover e distribuir conforme as disposi es aplic veis de direito autoral f Direitos de Execu o Digital pela Internet Webcasting e royalties De modo a evitar d vidas quando a Obra for uma grava o de som o Licenciante reserva o seu direito exclusivo de coletar seja individualmente ou atrav s de entidades coletoras de direitos de execu o por exemplo SoundExchange ou ECAD royalties e direitos autorais pela execu o digital p blica por exemplo Webcasting da Obra conforme as disposi es aplic veis de direito autoral se a execu o digital p blica feita por Voc for predominantemente intencionada ou direcionada obten o de vantagem comercial ou compensa o monet
91. de fornecedores geralmente funciona assim Voc cria um diret rio de ni vel superior tal como vendor para conter os ramos de fornecedores Ent o voc impor ta o c digo de terceiros em um subdiret rio desse diret rio de n vel superior Em seguida copia esse subdiret rio para o seu ramo principal de desenvolvimento por exemplo trunk no local apropriado Voc sempre faz suas altera es locais no ramo principal de desenvolvimento A cada nova vers o do c digo que voc est acompanhando voc o traz para o ramo de fornecedor e funde as altera es em trunk resolvendo quaisquer conflitos que ocorrerem entre suas altera es locais e as altera es da nova vers o Talvez um exemplo ajudar a esclarecer este algoritmo Usaremos um cen rio onde a sua equipe de desenvolvimento est criando um software de calculadora que referencia uma complexa biblioteca de aritm tica de terceiros libcomplex Come aremos com a cria o inicial do ramo de fornecedor e a importa o do primeiro pingo de fornecedor Iremos chamar o nosso diret rio do ramo de fornecedor de libcomplex e nossos pingos de c digo ir o para um subdiret rio do nosso ramo de fornecedor chamado current E como svn import cria todos os diret rios pais intermedi rios de que precisa n s podemos de fato realizar ambos os os passos com um nico comando svn import caminho para libcomplex 1 0 http svn exemplo com repos vendor libcomplex current m impor
92. de intervalo svn diff r 3000 3500 http svn collab net repos svn trunk Compara a revis o 3000 com a revis o 3500 apenas de tr s arquivos em trunk usando a nota o de intervalo svn diff r 3000 3500 old http svn collab net repos svn trunk COMMITTERS Se voc j tem uma c pia de trabalho voc pode obter as diferen as sem digitar URLs longas svn diff r 3000 3500 COMMITT Index COMMITTERS td w n COMMITTERS revision 3000 COMMITTERS revision 3500 E Use diff cmd CMD x para passar argumentos diretamente para o programa diff ex terno svn diff diff cmd usr bin diff x i b COMMITTERS Index COMMITTERS 0al 2 gt This is a test gt 222 Refer ncia Completa do Subversion svn export Exporta uma rvore de diret rios limpa Nome Sinopse svn export r R svn export r R Descri o EV URL PEGREV EV PATH1 PEGR PATH EV PATH2 A primeira forma exporta uma rvore de diret rios limpa a partir do reposit rio especifica do pela URL na revis o REV se esta for dada ou de HI EAD em caso contr rio para o ca minho dado por PATH Se PATH for omitido o ltimo componente da URL usado como nome do diret rio local A segunda forma exporta uma rvore de diret rios limpa a partir da c pia de trabalho es pecificada por PATH1 para o caminho dado por PATH2 T
93. de um conjunto de mudan as impl cito se voc compara a rvore N com a rvore N 1 voc pode derivar o patch exato que foi submetido Por esta raz o f cil pensar que a revis o N n o apenas uma rvore mas um conjunto de mudan as tam b m Se voc usar algum sistema de t quetes ou issue tracker para gerenciar bugs voc pode usar os n meros de revis o para se referir a patches espec ficos que cor rigem determinados bugs por exemplo a demanda deste tiquete foi corrigida na revis o 9238 Algu m pode ent o executar svn log r9238 para ler exatamente so bre o conjunto de mudan as que corrigiram o bug e executar svn diff c 9238 para ver a corre o em si E o comando merge do Subversion tamb m usa n meros de revis o Voc pode mesclar conjuntos de mudan a espec ficos a partir de um ramo para outro discriminando os nos argumentos do comando merge svn merge r9237 9238 deve incorporar o conjunto de mudan as 49238 sua c pia de trabalho Tenha em mente que voltar uma mudan a como neste caso uma opera o de svn mer ge como outra qualquer ent o voc deveria usar svn status e svn diff para confirmar que seu trabalho esteja no estado em que voc quer que esteja e ent o usar svn commit para enviar a vers o final para o reposit rio Depois de submetido este conjunto de mu dan as em particular n o estar mais refletido na revis o HEAD Novamente voc pode estar pensando
94. deviate from that of the repository it mirrors The only commits and revision property modifications that ever occur on that mirror repository should be those performed by the svnsync tool Another requirement of the target repository is that the svnsync process be allowed to mo dify certain revision properties svnsync stores its bookkeeping information in special revi in fact it can t truly be read only or svnsync itself would have a tough time copying revision history into it 133 Administra o do Reposit rio sion properties on revision O of the destination repository Because svnsync works within the framework of that repository s hook system the default state of the repository which is to disallow revision property changes see pre revprop change is insufficient You ll need to explicitly implement the pre revprop change hook and your script must allow svnsync to set and change its special properties With those provisions in place you are ready to start mirroring repository revisions It s a good idea to implement authorization measures which allow your reposi L tory replication process to perform its tasks while preventing other users from modifying the contents of your mirror repository at all Let s walk through the use of svnsync in a somewhat typical mirroring scenario We ll pep per this discourse with practical recommendations which you are free to disregard if they aren t required by or suitable for your
95. diret rios svn de sua c pia de trabalho executando s OldRo ot NewRoot svn checkout file tmp repos test A test a A test b mv repos newlocation cd test svn update svn Unable to open an ra_local session to URL svn Unable to open repository file tmp repos svn switch relocate file tmp repos file tmp newlocation svn update At revision 3 Tenha cuidado ao usar a op o relocate Se voc errar na digita o do argumento voc pode terminar criando URLs sem sentido relacionadas a sua c pia de trabalho que deixem todo o seu espa o de trabalho inutiliz vel e dif cil de corrigir Tamb m importante entender exatamente quando se deve ou nao usar relocate Aqui vai uma regra de ouro Se sua c pia de trabalho precisar refletir um novo diret rio dentro do reposi t rio ent o apenas use svn switch Se a c pia de trabalho ainda reflete o mesmo diret rio no reposit rio mas o local do reposit rio em si foi mudado ent o use svn switch relocate 261 Nome Sinopse Refer ncia Completa do Subversion svn unlock Destrava caminhos na c pia de trabalho ou URLs svn unlock TARGI na H Descri o Destrava cada TARGET Se algum TARGET estiver ou travado por outro usu rio ou se ne nhum token de travamento v lido existir na c pia de trabalho exibe um aviso e continua destravando os demais TARGETS Use force para quebrar uma trava que perten a a
96. distribui es de diferentes fornecedores de um projeto de software veja Ramos de forne cedores Se voc solicitar que o svn merge compare as duas rvores voc deveria ver a exclus o da primeira rvore inteira seguida da adi o da segunda rvore inteira Nes sas situa es voc vai querer que o svn merge fa a uma compara o baseada apenas em caminhos ignorando quaisquer rela es entre arquivos e diret rios Adicione a op o ignore ancestry a seu comando merge e ele se comportar como o svn diff E re versalmente a op o notice ancestry far com que o svn diff se comporte como o comando merge Fus es e Movimenta es Um desejo comum refatorar c digo fonte especialmente em projetos de software na lin guagem Java Arquivos e diret rios s o mexidos e renomeados possivelmente provocan do transtornos a todos que estiverem trabalhando no projeto Parece um caso perfeito pa ra criar um ramo n o Apenas crie um ramo modifique as coisas inteiramente e ent o mescle o ramo de volta ao tronco principal certo Infelizmente no momento este cen rio n o funciona t o bem sendo algo considerado co mo um dos pontos fracos do Subversion O problema que o comando update do Sub version n o t o robusto quanto poderia ser especialmente ao lidar com opera es de c pia e movimenta es Quando voc usa o svn copy para duplicar um arquivo o reposit rio se lembra de onde o novo arquivo
97. do Subversion O Subversion permite que os usu rios inventem propriedades versionadas com nomes ar bitr rios em arquivos e diret rios bem como propriedades n o versionadas em revis es A nica restri o est nas propriedades cujos nomes iniciam com svn esses s o reser vados para uso do pr prio Subversion Enquanto estas propriedades podem ser definidas pelos usu rios para controlar o comportamento do Subversion os usu rios n o podem in ventar novas propriedades svn Propriedades Versionadas svn executable Se presente em um arquivo o cliente tornar o arquivo execut vel em c pias de tra balho hospedadas em Unix Veja Executabilidade de Arquivo svn mime type Se presente em um arquivo o valor indica o mime type do arquivo Esta propriedade permite ao cliente decidir se a mesclagem contextual baseada em linhas segura pa ra ser realizada durante as atualiza es e tamb m pode afetar como o arquivo com porta se quando renderizado por um navegador web Veja Tipo de Conte do do Ar quivo svn ignore Se presente em um diret rio o valor uma lista de filtros de arquivos nao versionados a serem ignorados por svn status e outros subcomandos veja Ignorando Itens N o Versionados svn keywords Se presente em um arquivo o valor diz ao cliente como expandir determinadas pala vras chave dentro do arquivo Veja Substitui o de Palavra Chave svn eol style Se presente em um arquivo o
98. do cliente Subversion O que est faltando aqui entretan to s o diretivas que digam ao Apache quais tipos de requisi es do cliente necessitam de autoriza o Toda vez que uma autoriza o for requerida o Apache tamb m ir exigir uma autoriza o A coisa mais simples a se fazer proteger todas as requisi es Adicio nar Require valid user indica ao Apache que todas as requisi es requerem um usu rio autenticado lt Location svn gt DAV svn SVNParentPath usr local svn AuthType Basic AuthName Subversion repository AuthUserFile etc svn auth file Require valid user lt Location gt N o deixe de ler a pr xima se o Op es de Autoriza o para mais detalhes sobre a diretiva Require e outras formas de definir pol ticas de autoriza o Uma palavra de alerta senhas de autentica o HTTP Basic trafegam na rede de forma bem parecida com texto plano e portanto s o extremamente inseguras Se voc est pre ocupado com a privacidade de suas senhas pode ser melhor usar algum tipo de criptogra fia SSL para que o cliente se autentique atrav s de https ao inv s de http no m nimo voc pode configurar o Apache para usar um certificado de servidor auto as sinado Consulte a documenta o do Apache e a documenta o do OpenSSL sobre como faz lo Ger ncia de Certificados SSL Neg cios que precisam expor seus reposit rios para acesso por fora do firewall corporati vos devem estar
99. do de um item em sua c pia de trabalho mas tamb m quaisquer modifica o de propriedades Finalmente voc pode us lo para desfazer qualquer opera o de agendamento que voc possa ter feito p ex arquivos agendados para adi o ou remo o podem ser desagendados Nomes Alternativos Altera Nenhum C pia de trabalho Acessa o Reposit rio Op es N o targets FILENAME recursive R quiet q config dir DIR Exemplos Descarta as altera es em um arquivo S svn revert foo c Reverted foo c Se voc quiser reverter um diret rio inteiro de arquivos use a op o recursive svn revert recursive Reverted newdir afile Reverted foo c Reverted bar txt Por ltimo voc pode desfazer quaisquer opera es de agendamento svn add mistake txt whoops A mistake txt A whoops A whoops oopsie c 254 Refer ncia Completa do Subversion svn revert mistake txt whoops Reverted mistake txt Reverted whoops S svn status mistake txt whoops O svn revert intrinsecamente perigoso j que todo o seu prop sito descar tar dados especificamente modifica es n o submetidas ao reposit rio Uma vez que voc tenha feito uma revers o o Subversion n o disponibiliza nenhuma forma de obter estes dados de suas altera es n o submetidas Se voc n o informar um alvo para o svn revert ele n o far nada para pro teg lo de perder suas
100. e dos mesmos recursos para mesclar de forma limpa ou com conflitos altera es de terceiros s nossas pr prias E como com conte dos de arquivos suas mudan as de propriedades s o modifica es locais que s o tornadas permanentes apenas quando submetidas ao reposit rio com o comando svn commit Suas altera es de propriedades tamb m podem ser facilmente desfeitas o comando svn revert vai restaurar seus arquivos e diret rios para seus esta dos inalterados conte dos propriedades e tudo Tamb m voc pode obter informa es interessantes sobre o estado de suas propriedades de arquivos e diret rios usando os co mandos svn status e svn diff S svn status calc button c M calc button c S svn diff calc button c Property changes on calc button c Name copyright c 2006 Red Bean Software Note como o subcomando status exibe M na segunda coluna ao inv s de na primeira Isto porque modificamos as propriedades de calc button c mas n o seu conte do textu al Se tiv ssemos modificado ambos dever amos ver um M na primeira coluna tamb m veja Obtendo uma vis o geral de suas altera es Conflitos de Propriedades Da mesma forma que para conte do de arquivos modifica es de propriedades po dem conflitar com altera es submetidas por outros Se voc atualizar sua c pia de trabalho e receber altera es de propriedade em um objeto versionado que v o de encontro s suas o Subversio
101. enorme vanta gem quando come aram a documentar o Subversion O livro que eles produziram soli damente fundamentado na rocha da experi ncia n o nas areias mut veis da ilus o ele combina os melhores aspectos de um manual de usu rio e uma base de FAQ Esta duali xi Apresenta o dade talvez n o seja percept vel numa primeira leitura Lido na ordem de frente para tr s o livro uma descri o bem direta de uma pe a de software Existe a vis o geral o obri gat rio tour o cap tulo sobre configura o administrativa alguns t picos avan ados e claro uma refer ncia de comandos e um guia de resolu o de problemas Somente quan do voc o ler novamente mais tarde procurando a solu o para um problema espec fico que sua autenticidade reluzir os detalhes telling que s podem advir de um encontro com o inusitado os exemplos surgidos de casos de utiliza o reais e muito de toda a sen sibilidade das necessidades e dos pontos de vista do usu rio claro que ningu m pode prometer que este livro responder todas as d vidas que voc tem sobre o Subversion Certas vezes a precis o com que ele antecipa suas perguntas parecer assustadoramente telep tica ainda sim ocasionalmente voc vai trope ar em alguma falha no conhecimento da comunidade e sair de m o vazias Quando isto acon tecer a melhor coisa que voc pode fazer enviar um email para lt users subversion tigris org gt e apr
102. envolve o uso do sistema de configura o do ambiente de execu o do Subversion veja Area de Configura o do Tempo de Execu o e consequentemente aplica se a todas opera es do Subversion que fazem uso desta configura o do ambiente de execu o geralmente aquelas executadas em um computador espec fico ou por um usu rio espec fico de um computador O outro meio faz uso do suporte de propriedade de diret rio do Subversion mais fortemente vinculado pr pria rvore versionada e consequentemente afeta todos aqueles que t m uma c pia de trabalho desta rvore Os dois mecanismos usam filtros de arquivo O sistema de configura o runtime do Subversion oferece uma op o global ignores cujo valor uma cole o de filtros de arquivo delimitados por espa os em branco tamb m conhecida com globs O cliente do Subversion verifica esses filtros em compara o com os nomes dos arquivos que s o candidatos para adi o ao controle de vers o bem como os arquivos n o versionados os quais o comando svn status notifica Se al gum nome de arquivo coincidir com um dos filtros basicamente o Subversion atuar co mo se o arquivo n o existisse Isto realmente til para os tipos de arquivos que voc ra ramente precisar controlar vers o tal como c pias de arquivos feitas por editores como os arquivos e do Emacs Quando encontrada em um diret rio versionado a propriedade svn ignore espera que co
103. es em propriedades precisar o ser aplicadas manualmente Defini o Autom tica de Propriedades Propriedades s o um poderoso recurso do Subversion agindo como componentes chave em muitos outros recursos apresentados neste e em outros cap tulos suporte a diferenci a o e mesclagem textual substitui o de palavras chave convers o de delimitadores de linha etc Mas para aproveitar plenamente as propriedades elas devem ser definidas nos arquivos e diret rios certos Infelizmente este passo facilmente esquecido na rotina de a es de usu rio especialmente pelo fato de que a n o atribui o de uma propriedade normalmente n o resulta em nenhum erro bvio ao menos quando comparado a diga mos esquecer de adicionar um arquivo ao controle de vers o Para ajudar que suas pro priedades sejam aplicadas em seus devidos locais o Subversion disp em de uma por o de recursos simples e poderosos Sempre que voc inclui um arquivo ao controle de vers o usando os comando svn add ou svn import o Subversion tenta ajudar criando algumas propriedades de arquivo automati camente Primeiramente em sistema operacionais cujos sistemas de arquivo suportem bits de permiss o de execu o o Subversion automaticamente vai definir a propriedade svn executable nos arquivos rec m adicionados ou importados nos quais o bit de exe cu o esteja ativo Veja Executabilidade de Arquivo para mais sobre esta propriedade Em segundo luga
104. es mais antigas Uma das quest es mais comuns que novos usu rios se perguntam Como eu fa o para obter meu arquivo ou diret rio antigo de volta O primeiro passo definir exatamente qual tem voc est tentando ressucitar Aqui h uma met fora til voc pode pensar como se cada objeto no reposit rio existisse em uma esp cie de sistema bi dimensional A primeira coordenada uma determinada rvore de revis o e a segunda coordenada o caminho dentro daquela rvore Assim cada vers o de seu arquivo ou diret rio pode ser definida por um dado par de coordenadas Lembre se da sintaxe de revis es marcadoras foo c 224 apresentada em Revis es Marcadoras e Revis es Operativas Entretanto o projeto Subversion tem planos de algum dia implementar um comando que possa cumprir a tare fa de excluir permanentemente alguma informa o Enquanto isso veja svndumpfilter para uma poss vel solu o 93 Fundir e Ramificar Primeiramente voc pode precisar usar um svn log para descobrir o par de coordenadas exato que voc quer ressucitar Uma boa estrat gia executar svn log verbose em um diret rio onde seu item exclu do costumava estar A op o verbose v exibe uma lista de todos os itens que mudaram em cada revis o tudo que voc precisa fazer en contrar a revis o na qual voc excluir o arquivo ou diret rio Voc pode fazer isto visual mente ou usando outr
105. escrever scripts robustos ao redor das funcionalidades do Subversion para simplificar sua vida se est tentando de senvolver integra es mais complexas entre o Subversion e outras partes de um software ou apenas tem interesse nas v rias bibliotecas modulares e o que elas tem a oferecer es te cap tulo para voc Se entretanto voc n o se v participando com o Subversion nesse n vel sinta se livre para pular este cap tulo certo que suas experi ncias como usu rio do Subversion n o ser o afetadas Projeto da Biblioteca em Camadas Cada uma das bibliotecas centrais do Subversion podem existir em uma de tr s principais camadas na Camada de Reposit rio na Camada de Acesso ao Reposit rio RA ou na Camada Cliente veja Figura 1 Arquitetura do Subversion N s examinaremos essas camadas daqui a pouco mas primeiro vamos brevemente dar uma olhada nas v rias bi bliotecas do Subversion Pelo bem da consist ncia n s referiremos s bibliotecas pelos seus nomes de biblioteca Unix sem extens o libsvn fs libsvn wc mod dav svn etc libsvn client Interface prim ria para programas cliente libsvn delta Rotinas de diferencia o de rvore e fluxo de bytes libsvn diff Rotinas de diferencia o e mesclagem contextuais libsvn fs Base comum e carregador de m dulo para sistema de arquivos libsvn fs base A base para sistema de arquivos do Berkeley DB libsvn fs s A base para sistema de arquivos nativo
106. est anexada a um ar quivo indiferente de seu valor o qual irrelevante ent o o Subversion tentar utilizar permiss es a n vel de sistema de arquivo para tornar o arquivo somente leitura exceto claro o usu rio tiver explicitamente travado o arquivo Quando um sinal de trava est pre sente como resultado de executar svn lock o arquivo fica como leitura e escrita Quan do a trava liberada o arquivo fica como somente leitura novamente A teoria ent o que se o arquivo de imagem tem esta propriedade anexada ent o Sally iria verificar imediatamente que alguma coisa est estranho quando ela abrir o arquivo pa ra edi o muitas aplica es avisam os usu rios imediatamente quando um arquivo so mente leitura aberto para edi o e quase todos impedem que altera es sejam salvas no arquivo Isto lembra ela para travar o arquivo antes de edit lo e ent o ela descobre a trava j existente usr local bin gimp raisin jpg gimp error file is read only ls l raisin jpg o a 1 sally sally 215589 Jun 8 19 23 raisin jpg svn lock raisin jpg svn Lock request failed 423 Locked http svn example com svn info http svn example com repos project raisin jpg grep Lock Lock Token opaquelocktoken fc2b4d 98 9 0310 abf3 653ff3226e6b Lock Owner harry Lock Created 2006 06 08 07 29 18 0500 Thu 08 June 2006 Lock Comment 1 line Fazendo alguns ajustes Travando para as pr ximas duas horas
107. exportados por servidores WebDAV Se voc usa o Apache como seu servidor de rede para o Subversion ent o para algumas extens es voc tamb m deve estar executando um servidor WebDAV Este ap ndice ofe rece algum suporte sobre a natureza deste protocolo como o Subversion o utiliza e o qu o boa a interoperabilidade do Subversion com outros softwares relacionados com o WebDAV O que e WebDAV DAV uma sigla em ingl s para Versionamento e Autora o Distribuida A RFC 2518 define um conjunto de conceitos e m todos de extens o relacionados a HTTP 1 1 que transformam a web em uma m dia mais universal de leitura e escrita A id ia b sica que um servidor web que siga o padr o WebDAV pode agir como um servidor de arquivos ge n rico os clientes podem montar pastas compartilhadas sobre HTTP que se comportem como qualquer outro sistema de arquivos de rede como NFS ou SMB O problema por m que apesar do acr nimo a especifica o RFC atualmente n o des creve qualquer forma de controle de vers o Clientes b sicos de WebDAV e servidores assumem apenas uma vers o para cada arquivo ou diret rio existente e podem ser repe tidamente sobrescritos Devido a RFC 2518 nao contemplar conceitos de versionamento outro comit tomou para si a responsabilidade de escrever a RFC 3253 alguns anos depois A nova RFC adiciona conceitos de versionamento ao WebDAV fazendo valer o significado do V em DAV d
108. facilmente ser tunelado sobre SSH XX Pref cio Manipula o consistente de dados O Subversion exprime as diferen as de arquivo usando um algoritmo diferenciado o qual funciona de maneira id ntica tanto em arquivos texto compreens vel para huma nos quanto em arquivos bin rios incompreens vel para humanos Ambos os tipos de arquivos s o igualmente armazenados de forma compactada no reposit rio e as dife ren as s o enviadas em ambas as dire es pela rede Ramifica es e rotulagem eficiente O custo de se fazer ramifica es branching e de rotulagem tagging n o precisa ser proporcional ao tamanho do projeto O Subversion cria ramos e r tulos simplesmente copiando o projeto usando um mecanismo semelhante a um hard link Assim essas opera es levam apenas uma pequena e constante quantidade de tempo Hackability O Subversion n o tem qualquer bagagem hist rica ele implementado como um con junto de bibliotecas C compartilhadas com APIs bem definidas Isto torna o Subversion extremamente manuten vel e us vel por outras aplica es e linguagens Arquitetura do Subversion Figura 1 Arquitetura do Subversion ilustra uma vis o em alto n vel da estrutura do Sub version Figura 1 Arquitetura do Subversion xxi Pref cio commandline client app GUI client apps Client interface Client Library Working Copy Management Library Repository Access Repository Interface
109. file file under vc txt foo c svn The log message file is under version control svn Log message file is a versioned file use force log to override svn commit force log file file under vc txt foo c Sending foo c Transmitting file data Committed revision 6 Para efetivar a remo o de um arquivo agendado para exclus o S svn commit m removed file c Deleting E Committed revision 7 215 Nome Sinopse Refer ncia Completa do Subversion svn copy Copia um arquivo ou diret rio em uma c pia de trabalho ou no reposit rio svn copy SRC DST Descri o Copia um arquivo em uma c pia de trabalho ou no reposit rio SRC e DST podem ser tanto um caminho em uma c pia de trabalho WC ou uma URL WC gt WC Copia e agenda um item para adi o com o hist rico WC gt URL Imediatamente submete uma c pia de WC para a URL URL gt WC Obt m check out a URL para dentro da WC agendando a para adi o URL gt URL Execu o de uma c pia inteiramente do lado do servidor Isto frequentemente usado para cria o de ramos branch e de r tulos tag Voc s pode copiar arquivos para dentro de um nico reposit rio O Subver sion n o d suporte a c pias entre reposit rios distintos Nomes Alternativos Altera cp O reposit rio se o destino for uma URL A c pia de trabalho se o destino for um caminho em uma WC Acessa o Reposit rio Op es
110. gancho E claro que os arquivos modelos s o apresentados para serem terem uma fun o maior do que simplesmente serem informativos a forma mais f cil de instalar um gancho na plataforma Unix simplesmente copiar o arquivo modelo apropriado para um novo arquivo que leva a extens o tmp1 personalizar o seu conte do e se assegurar de que o script execut vel Entretanto o Windos utiliza extens es de ar quivos para determinar se um arquivo execut vel ou n o Assim voc precisa fornecer um programa cujo o nome seja o mesmo do gancho e cuja extens o seja uma das exten s es especiais reconhecidas pelo Windows como um programa execut vel como por exemplo exe para programas e bat para arquivos de lote Por motivo de seguran a o reposit rio Subversion executa programas de gan iy cho com um ambiente vazio o que significa que nenhuma variavel de ambi ente cont m valores nem mesmo PATH ou SPATH no Windows Por cau sa disso muitos administradores sao surpreendidos com o fato de que seus ganchos funcionam perfeitamente quando executados na mao mas nao fun cionam quando executados pelo Subversion Tenha certeza de configurar ex plicitamente qualquer vari vel de ambiente que seja necess ria no seu pro grama de gancho e ou use caminhos absolutos para os programas Subversion executes hooks as the same user who owns the process which is accessing the Subversion repository In most cases the repository is being accessed
111. gen rica de modifica o de seu sistema de arquivos 1 Iniciar uma transa o de submiss o do Subversion 2 Fazer suas mudan as adicionar excluir modifica es de propriedades etc 3 Submeter sua transa o Uma vez que voc submeteu sua transa o suas modifica es no sistema de arquivo s o permanentemente armazenadas como artefatos de hist rico Cada um desses ciclos pro duz uma nica e nova revis o de sua rvore e cada revis o ser sempre acess vel como uma imagem imut vel de como as coisas estavam A Confus o com Transa es A no o de transa o no Subversion pode ser facilmente confundida com o suporte a transa es oferecido pelo banco de dados encapsulado propriamente dito especi almente pelo c digo de libsvn fs base se aproximar ao c digo do banco de dados Berkeley DB Ambos os tipos de transa o existem para prover atomicidade e isola mento Em outra palavras transa es d o a voc a habilidade de realizar um con junto de a es em uma forma tudo ou nada ou todas as a es s o completadas com sucesso ou todas s o tratadas como se nenhuma delas tivesse ocorrido e em modo que n o exista interfer ncia com outros processos atuando nos dados As transa es de banco de dados geralmente inclui pequenas opera es relaciona das especificamente com a modifica es de dados no banco de dados propriamente dito como modificar o conte do de uma linha em uma tabel
112. help lt subcommand gt for help on a specific subcommand Type svnsync version to see the program version and RA modules Available subcommands initialize init synchronize sync copy revprops help 2 h We talk more about replication repositories with svnsync in Repository Replication Berkeley DB Utilities If you re using a Berkeley DB repository then all of your versioned filesystem s structure and data live in a set of database tables within the db subdirectory of your repository This subdirectory is a regular Berkeley DB environment directory and can therefore be used in conjunction with any of the Berkeley database tools typically provided as part of the Berkeley DB distribution For day to day Subversion use these tools are unnecessary Most of the functionality typi cally needed for Subversion repositories has been duplicated in the svnadmin tool For example svnadmin list unused dblogs and svnadmin list dblogs perform a subset of what is provided by the Berkeley db_archive command and svnadmin recover reflects the common use cases of the db_recover utility However there are still a few Berkeley DB utilities that you might find useful The db_dump and db_load programs write and read respectively a custom file format which describes the keys and values in a Berkeley DB database Since Berkeley databases are 7Or is that the sync 121 Administra o do Reposit rio not por
113. icone representa uma nota relacionada ao texto citado Este icone representa uma dica til relacionada ao texto citado Este icone representa um aviso relacionado ao texto citado Organiza o Deste Livro Abaixo est o listados os cap tulos e seus conte dos est o listados Pref cio Cobre a hist ria do Subversion bem como suas caracter sticas arquitetura e compo mentes Cap tulo 1 Conceitos Fundamentais Explica o b sico sobre controle de vers o e os diferentes modelos de versionamento o reposit rio do Subversion c pias de trabalho e revis es Cap tulo 2 Uso B sico Faz um tour por um dia na vida de um usu rio do Subversion Demonstra como usar o cliente do Subversion para obter modificar e submeter dados Cap tulo 3 T picos Avan ados Cobre as caracter sticas mais complexas que os usu rios regulares ir o encontrar eventualmente como metadados travamento de arquivo locking e rotulagem de revi s es Cap tulo 4 Fundir e Ramificar Discute sobre ramos fus es e rotulagem incluindo as melhores pr ticas para a cria o de ramos e fus es casos de uso comuns como desfazer altera es e como faci litar a troca de um ramo para o outro XV Este Pref cio Cap tulo 5 Administra o do Reposit rio Descreve o b sico de um reposit rio Subversion como criar configurar e manter um reposit rio e as ferramentas que podem ser usadas para isso Cap tulo 6 Configura o do Se
114. inteiro perten a a esse grupo Defina as permiss es de grupo para leitura escrita Seus usu rios precisar usar um valor de umask adequado ao acessar o reposit rio ent o confirme que o svnserve usr bin svnserve ou onde quer que ele esteja no PATH seja atualmente um script que encapsule umask 002 e exe cute o bin rio svnserve real e Tome medidas similares ao usar svnlook e svnadmin Ou execute os com um umask adequado ou encapsule os conforme descrito acima 171 Cap tulo 7 Customizando sua Experi ncia com Subversion Controle de vers o pode ser um tema complexo assim como arte ou ci ncia e oferecer variadas maneiras fazer as coisas Atrav s desse livro voc leu sobre v rios subcoman dos do cliente de linha de comando e as op es para modificar seu comportamento Nes se cap tulo vamos dar uma olhada e mais maneiras de customizar o jeito que o Subversi on trabalha para voc definindo as configura es em tempo de execu o usando ajuda de aplica es externas a intera o do Subversion com as configura es locais do siste ma operacional e assim por diante rea de Configura o do Tempo de Execu o O Subversion oferece muitos comportamentos opcionais que podem ser controlados pelo usu rio Muitas dessas op es s o do tipo que um usu rio desejaria aplicar a todas as opera es do Subversion Ent o em vez de obrigar os usu rios lembrar de argumentos de linha de c
115. local working copy and has changes that I ve made svn cat foo c Latest revision fresh from the repository 210 Refer ncia Completa do Subversion Nome svn checkout Carrega uma c pia de trabalho a partir do reposit rio Sinopse svn checkout URL REV PATH Descri o Carrega uma c pia de trabalho a partir do reposit rio Se PATH for omitido a base da URL ser usada como destino Se m ltiplas URLs forem informadas cada uma ser carregada dentro de um subdiret rio de PATH com o nome do subdiret rio sendo a base da URL Nomes Alternativos co Altera Cria uma c pia de trabalho Acessa o Reposit rio Sim Op es revision r REV quiet q non recursive N username USER password PASS no auth cach non interactive ignor xternals config dir DIR Exemplos Carrega uma c pia de trabalho dentro de subdiret rio chamado mine svn checkout file tmp repos test mine A mine a A mine b Checked out revision 2 S ls mine Carrega dois diret rios diferentes para duas c pias de trabalho separadas svn checkout file tmp repos test file tmp repos quiz A test a A test b Checked out revision 2 A quiz l A quiz m Checked out revision 2 211 Refer ncia Completa do Subversion S ls quiz test Carrega dois diret rios diferentes para duas c pias de trabalho separadas mas p e am bas dentro de um diret rio chamado work
116. logs option sv nadmin will perform a hotcopy of your repository and then remove unused Berkeley DB logs from the original repository You can run this command at any time and make a safe copy of the repository regardless of whether other processes are using the repository Opcoes clean logs portable across operating systems nor will they work on machines with a diffe As described in Berkeley DB hot copied Berkeley DB repositories are not rent endianness than the machine where they were created 272 Refer ncia Completa do Subversion Nome svnadmin list dblogs Ask Berkeley DB which log files exist for a given Subversion repo sitory applies only to repositories using the bdb backend Sinopse svnadmin list dblogs REPOS_PATH Descri o Berkeley DB creates logs of all changes to the repository which allow it to recover in the face of catastrophe Unless you enable DB LOG AUTOR EMOV E the log files accumulate although most are no longer used and can be deleted to reclaim disk space See Managing Disk Space for more information 273 Refer ncia Completa do Subversion Nome svnadmin list unused dblogs Ask Berkeley DB which log files can be safely deleted applies only to repositories using the bdb backend Sinopse svnadmin list unused dblogs REPOS_PATH Descri o Berkeley DB creates logs of all changes to the repository whi
117. m quando usada com a op o xml Se voc executar svn log em um dado espec fico e informar uma revis o es iy pecifica e nao obtiver nada como saida svn log r 20 http svn red bean com untouched txt Isto apenas significa que aquele caminho n o foi modificado naquela revis o 237 Refer ncia Completa do Subversion Se voc obtiver o log a partir da raiz do reposit rio ou souber o arquivo que foi alterado naquela revis o voc pode especific lo explicitamente svn log r 20 touched txt r20 sally 2003 01 17 22 56 19 0600 Fri 17 Jan 2003 Made a change 1 line 238 Nome Sinopse Refer ncia Completa do Subversion svn merge Aplica as diferen as entre duas fontes para um caminho numa c pia de tra balho LT svn merge c M r N M SOURCE GREV WCPATH svn merge sourceURLI1 QN sourceURL2 M WCPATH svn merge sourceWCPATH1 N sourceWCPATH2 M WCPATH Descri o Na primeira e na segunda formas os caminhos de origem URLs na primeira forma cami nhos na c pia de trabalho na segunda s o especificados nas revis es Ne M Estas s o as duas fontes a serem comparadas A revis o padr o quando omitida ser HEAD A op o c M equivalente a r N M onde N M 1 Usar c Mfazo inverso r M N onde N M 1 Na terceira forma SOURCE pode ser uma URL ou um item numa c pia de trabalho neste caso a URL correspondente usada Esta U
118. m se lembra do obje to ao qual o link aponta Quando o link simb lico sofre um checkout em outra c pia de trabalho em um sistema n o Windows o Subversion recria um link simb lico no n vel do sistema de arquivos real a partir do symlink versionado Mas isto de forma nenhuma limita a usabilidade das c pias de trabalho em sistemas como o Windows que n o suportam links simb licos Nesses sistemas o Subversion simplesmente cria um arquivo de texto normal que cujo conte do o caminho para o qual o link ori ginal aponta Apesar deste arquivo n o poder ser usado como link simb lico num sistema Windows ele tamb m n o pro be os usu rios Windows de executarem suas outras atividades relacionadas ao Subversion svn add foo Agenda 0 arquivo diret rio ou link simb lico foo para ser adicionado ao reposit rio Na pr xima vez que voc der um commit foo passar a fazer parte do diret rio pai onde estiver Veja que se foo for um diret rio tudo que estiver dentro de foo ser marcado para adi o Se voc quiser adicionar apenas o diret rio foo em si inclua a op o non recursive N 21 Uso B sico svn delete foo Agenda o arquivo diret rio ou link simb lico foo para ser exclu do do reposit rio Se foo for um arquivo ou link ele imediatamente removido de sua c pia de trabalho Se foo for um diret rio ele n o exclu do mas o Subversion o deixa agendado para exclus o Quando voc der co
119. mesmo erros de escrita E prov vel que suas futuras modifica es a este arquivo v o afetar as mesmas reas onde foram feitas as corre es de escrita ent o voc tem grandes chances de ter v rios conflitos quando for fundir o seu ramo eventual mente Portanto melhor receber as modifica es de Sally agora antes de voc come ar a trabalhar de forma massiva nessas reas hora de usar o comando svn merge Esse comando um primo muito pr ximo do co mando svn diff que voc viu em Cap tulo 2 Uso B sico Os dois comando comparam dois objetos no reposit rio e mostram as diferen as Por exemplo voc pode pedir com o comando svn diff para ver com exatid o as mudan as feitas por Sally na revis o 344 svn diff c 344 http svn example com repos calc trunk Index integer c integer c revision 343 integer c revision 344 Ga 147 7 147 7 case 6 sprintf info gt operating system HPFS OS 2 or NT break case 7 sprintf info gt operating system Macintosh break case 8 sprintf info gt operating_system Z System break case 9 sprintf info gt operating system CPM break case 9 sprintf info gt operating system CP M break case 10 sprintf info gt operating system TOPS 20 break case 11 sprintf info gt operating system NTFS Windows NT break case 12 sprintf info gt operating system QDOS break 164 7 164 7 GA low unsigned sho
120. mudan a para a copia de trabalho Essa op o apenas exibe os c digos que seriam escritos em uma situa o real de fus o E til poder ter uma previs o de auto n vel da potencial fus o para aqueles momentos em que o co mando svn diff d detalhes at demais Fundir conflitos Assim como no comando svn update o comando svn merge aplica modifica es sua c pia de trabalho E portanto tamb m capaz de criar conflitos Entretanto os conflitos criados pelo comando svn merge s o um tanto diferentes e essa se o explica essas di feren as Para come ar assuma que sua c pia de trabalho n o teve modifica es locais Quando voc faz a atualiza o com o comando svn update para um revis o espec fica as modifi ca es enviadas pelo servidor v o ser sempre aplicadas sua c pia de trabalho sem er ros O servidor produz o delta a partir da compara o de duas rvores uma imagem vir tual de sua c pia de trabalho e a rvore da revis o na qual est interessado Como o lado esquerdo da compara o exatamente igual ao que voc j possui garantido que o del ta converter corretamente sua c pia de trabalho para a revis o escolhida no lado direito da compra o Entretanto o comando svn merge n o possui essa garantia e pode ser bem mais ca tico o usu rio pode pedir ao servidor para comparar qualquer rvore at mesmo rvores que n o tenham rela o com a sua c pia de trabalho Iss
121. novo reposit rio svnadmin create caminho do repositorio ls caminho do repositorio conf dav db format hooks locks README txt Este comando cria um novo diret rio em caminho do repositorio que cont m um reposit rio do Subversion Este diret rio cont m entre outras coisas um conjunto de ar quivos de base de dados Voc n o ver seus arquivos versionados olhando seu conte do Para mais informa es sobre cria o e manuten o de reposit rios veja Cap tulo 5 Administra o do Reposit rio O Subversion n o tem o conceito de projeto O reposit rio apenas um sistema de ar quivo virtual sob controle de vers o uma grande rvore que pode conter qualquer coisa que voc quiser Alguns administradores preferem armazenar apenas um projeto em um reposit rio enquanto outros preferem armazenas m ltiplos projetos em um reposit rio co locando os em diret rios separados Os m ritos de cada abordagem s o discutidos em Planejando a Organiza o do Reposit rio De qualquer forma o reposit rio apenas ge Perceba que a URL mencionada no exemplo acima n o termina com svn mas com um subdiret rio chamado de trunk Veja nossa discuss o sobre o modelo de ramifica o branching e rotulagem branching para enten der as raz es por tr s disto 321 Guia R pido de Introdu o ao Subversi on rencia arquivos e diret rios ent o intuitivo interpretar diret rios espec fic
122. o 178 Customizando sua Experi ncia com Subversion Localiza o o ato de fazer com que programas comportem se de um modo espec fico de regi o Quando um programa formata n meros ou datas em um modo espec fico para sua parte do mundo ou imprime mensagens ou aceita uma entrada em sua linguagem nativa o programa dito ser localizado Esta se o descreve os passos que o Subversion tem feito a respeito de localiza o Compreendendo localidades A maioria dos sistemas operacionais modernos t m uma no o da localidade atual isto a regi o ou pa s cujas conven es de localiza o s o aplicadas Estas conven es normalmente escolhidas por algum mecanismo de configura o de execu o no computador afetam a forma como os programas apresentam dados para o usu rio bem como a forma como eles aceitam dados fornecidos pelo usu rio Na maioria dos sistemas Unix voc pode verificar os valores das op es de configura o relacionadas localidade pela execu o do comando locale S locale LANG LC COLLATE C LC CTYPE C LC MESSAGES C LC MONETARY C LC NUMERIC C LC TIME C LC ALL C A sa da uma lista de vari veis de ambiente relacionadas com a localidade e seus valo res atuais Neste exemplo as vari veis est o todas definidas com o local padr o c mas os usu rios podem definir estas vari veis para especificar combina es de c digo pais idioma
123. o verbose e a mensagem de log completa suprimida Desnecess rio di zer que isto pode consumir bastante tempo em revis es que afetam um grande n mero de arquivos Este o custo da seguran a mesmo se voc ainda nunca tiver configurado um m dulo como mod authz svn o m dulo mod dav svn ainda fica solicitando para que o Apache httpd execute verifica es de autoriza o em cada caminho O m dulo mod dav svn n o faz id ia de que m dulos de autoriza o est o instalados ent o tudo 162 Configura o do Servidor o que ele pode fazer solicitar que o Apache invoque todos os que podem estar presen tes Por outro lado tamb m h um recurso de v lvula de escape o qual permite a voc troque caracter sticas de seguran a por velocidade Se voc n o estiver impondo nenhum tipo de autoriza o por diret rio i e n o est usando o m dulo mod authz svn ou similar en t o voc pode desabilitar toda esta checagem de caminhos Em seu arquivo httpd conf use a diretiva SVNPathAuthz Exemplo 6 4 Desabilitando verifica es de caminho como um todo lt Location repos gt DAV svn SVNParentPath usr local svn SVNPathAuthz off lt Location gt A diretiva SVNPathAuthz definida como on por padr o Quando definida para off to da a checagem de autoriza o baseada em caminhos desabilitada o mod dav svn p ra de solicitar checagem de autoriza o em cada caminho que ele descobre F
124. o de todos os passos de execu o de um comando mas sem efetuar qual quer altera o tanto no disco quanto no reposit rio editor cmd CMD Especifica um programa externo a ser usado para editar mensagens de log ou valores de propriedades Consulte a se o editor cmd em Configura o para ver as for mas de especificar um editor padr o encoding ENC Informa ao Subversion que sua mensagem de submiss o est codificada com o char set dado O padr o o locale nativo de seu sistema operacional e voc deve especifi car a codifica o se sua mensagem de commit estiver em alguma codifica o diferen te extensions x ARGS Especifica um argumento ou argumentos que o Subversion deve passar para um co mando diff externo Esta op o valida apenas quando usada com os comando svn diff ou svn merge com a op o diff cmd Se voc quiser passar argumentos m ltiplos voc deve delimit los todos entre aspas duplas por exemplo svn diff diff cmd usr bin diff x b E file F FILENAME Usa o conte do do arquivo especificado para o subcomando em quest o sendo que subcomandos diferentes fazem coisas diferentes com este conte do Por exemplo o svn commit usa o conte do como uma mensagem de log do commit ao passo que o svn propset o utiliza como um valor de propriedade force For a a execu o de um comando ou opera o espec ficos Ha algumas opera es em que o Subversion ir impedi l
125. o diret rio atual versionado desde a ltima atualiza o que voc fez em sua c pia de trabalho svn update r PREV foo c retorna ltima altera o feita em foo c reduzindo o n mero de revis o de foo c svn diff r BASE 14 foo c compara a vers o inalterada de foo c com o conte do que foo c tinha na revis o 14 Datas de Revis o N meros de revis o n o revelam nada sobre o mundo fora do sistema de controle de ver s o mas algumas vezes voc precisa correlacionar um momento em tempo real com um momento no hist rico de revis es Para facilitar isto a op o revision r tamb m pode aceitar especificadores de data delimitados por chaves e como entrada O Sub version aceita datas e horas no padr o ISO 8601 al m de alguns poucos outros Aqui es t o alguns exemplos Lembre se de usar aspas para delimitar quaisquer datas que conte nham espa os svn checkout r 2006 02 17 svn checkout r 15 30 svn checkout r 15 30 00 200000 svn checkout r 2006 02 17 15 30 svn checkout r 2006 02 17 15 30 0230 svn checkout r 2006 02 17T15 30 WT ANO AN UA AO 39 T picos Avan ados svn che svn che svn che svn che svn che LO Ut AN UA 1 ckout r 2006 02 17T15 302Z ckout r 2006 02 17T15 30 04 00 ckout r 20060217T1530 ckout r 20060217T15302 ckout r 20060217T1530 0500 Quando voc especifica uma data o Subversion resolve aquela data para a revis o m
126. o no cora o de qualquer sistema de controle de vers o sistemas que s o projetados para monitorar altera es nos dados ao longo do tempo Modelos de Versionamento Conceitos Fundamentais A miss o principal de um sistema de controle de vers o permitir a edi o colaborativa e o compartilhamento de dados Mas diferentes sistemas usam diferentes estrat gias para atingir esse objetivo E importante compreender essas diferentes estrat gias por v rias ra z es Primeiro ir ajud lo a comparar os sistemas de controle de vers o existentes no caso de voc encontrar outros sistemas similares ao Subversion Al m disso ir ajud lo ainda a tornar o uso do Subversion mais eficaz visto que o Subversion por si s permite trabalhar de diferentes formas O Problema do Compartilhamento de Arquivos Todos os sistemas de controle de vers o t m de resolver o mesmo problema fundamental como o sistema ir permitir que os usu rios compartilhem informa o e como ele ir pre venir que eles acidentalmente tropecem uns nos p s dos outros E muito f cil para os usu rios acidentalmente sobrescrever as mudan as feitas pelos outros no reposit rio Considere o cen rio mostrado em Figura 1 2 O problema para evitar Vamos supor que n s temos dois colegas de trabalho Harry e Sally Cada um deles decide editar o mesmo arquivo no reposit rio ao mesmo tempo Se Harry salvar suas altera es no reposit rio primeiro ent o
127. o normal Como pode ser derivado da descri o de sua contrapartida o gancho pre revprop change este gancho n o executar toda vez a menos que o gancho pre revprop change esteja implementado Ele geralmente usado para enviar mensagem de notifica o da mudan a da propriedade A sua sa da e o c digo de sa da retornados pelo programa de gancho post rev prop change s o ignorados Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio 2 revis o cuja propriedade foi modificada 3 nome de usu rio autenticado da pessoa efetuando a mudan a 4 nome da propriedade modificada 5 descri o da mudan a A adicionado D exclu do ou M modificado Adicionalmente o Subversion passa para o programa de gancho por meio da entrada pa dr o o valor anterior da propriedade Usos Comuns notifica o de mudan a de propriedade de revis o 315 Refer ncia Completa do Subversion Nome pre lock Notifica o de uma tentativa de travamento de um caminho Descri o O gancho pre lock hook executado quando algu m tenta travar um caminho Ele pode ser usado para prevenir travas em conjunto ou para criar uma pol tica mais complexa es pecificando exatamente quais usu rios s o permitidos a travar caminhos determinados Se o gancho relatar uma trava j existente ent o ele pode tamb m decidir quando um usu rio permitido a
128. outro usu rio Como voc pode ver o comando svn lock imprime a confirma o do sucesso no trava mento A partir deste ponto o fato de que o arquivo est travado torna se aparente na sa da dos relat rios dos subcomandos svn status e svn info svn status K banana jpg svn info banana jpg Path banana jpg Name banana jpg URL http svn example com repos project banana jpg Repository UUID edb2 264 5ef2 0310 a47a 87b0cel7a8ec Revision 2198 Node Kind file Schedule normal Last Changed Author frank Last Changed Rev 1950 Last Changed Date 2006 03 15 12 43 04 0600 Wed 15 Mar 2006 Text Last Updated 2006 06 08 19 23 07 0500 Thu 08 Jun 2006 Properties Last Updated 2006 06 08 19 23 07 0500 Thu 08 Jun 2006 Checksum 3b110d3b10638f5d1f 4fe0f436a5a2a5 Lock Token opaquelocktoken 0c0f600b 88f9 0310 9e48 355b44d4a58e Lock Owner harry Lock Created 2006 06 14 17 20 31 0500 Wed 14 Jun 2006 Lock Comment 1 line Editando arquivo para a libera o de amanh O comando svn info o qual n o consulta o reposit rio quando executa sobre caminhos de uma c pia de trabalho pode mostrar o sinal de trava e revela um importante fato sobre o sinal de trava que eles s o colocados em cache na c pia de trabalho A presen a do sinal de trava cr tica Ele d c pia de trabalho a autoriza o para fazer uso da trava mais tarde Al m disso o comando svn status mostra um K pr xim
129. para o am biente KDE http www kde org Estas duas aplica es j possuem nativamente o supor te a WebDAV em n vel de sistema de arquivos e trabalham muito bem com reposit rios com recurso de autoversionamento No Nautilus do GNOME a partir do menu File escolha Open location e entre com a URL O reposit rio dever ser ent o exibido como um sistema de arquivos como outro qualquer No Konqueror do KDE voc precisa usar o esquema webdav ao informar uma URL na barra de endere os Se voc informar uma URL http o Konqueror vai se compor tar como um navegador web comum Voc provavelmente ver a listagem gen rica do di ret rio HTML produzida pelo mod dav svn Ao informar webdav host repos ao in v s de http host repos faz com que o Konqueror atue como cliente WebDAV e exiba o reposit rio como um sistema de arquivos Implementa es de sistemas de arquivos WebDAV Uma implementa o de sistemas de arquivos WebDAV sem d vida o melhor tipo de cli ente WebDAV E implementada como um m dulo de sistema de arquivos em baixo n vel normalmente j embutido no pr prio kernel Isto quer dizer que o compartilhamento DAV montado como qualquer outro sistema de arquivos de rede semelhante a montagem de um compartilhamento NFS no Unix ou o mapeamento de um compartilhamento SMB em uma letra de drive no Windows Como resultado este tipo de cliente oferece acesso de lei tura escrita a WebDAV de forma completamente t
130. password foo bar baz Neste exemplo o cliente Subversion est invocando um processo ssh local conectando se a host example com autenticando se como usu rio harry ent o disparando um processo svnserve particular na m quina remota rodando como o usu rio harry O co mando svnserve est sendo invocado atrav s em modo t nel t e seu protocolo de re de est sendo tunelado pela conex o criptografada pelo ssh o t nel agente O svnser ve sabe que est sendo executando pelo usu rio harry e se o cliente executar um com mit o nome do usu rio autenticado ser usado como autor da nova revis o A coisa importante a compreender aqui que o cliente Subversion n o est se conectan do a um daemon svnserve em execu o Este m todo de acesso n o requer um daemon nem tampouco percebe se h algum daemon presente Este m todo se baseia totalmente na capacidade do ssh de executar um processo svnserve tempor rio que ent o termina quando a conex o de rede fechada Ao usar URLs svn ssh para acessar um reposit rio lembre se que o programa ssh que est solicitando autentica o e n o o programa cliente svn Isto quer dizer que aqui n o h cache autom tico de senhas acontecendo veja Armazenando Credenciais no Cliente O cliente Subversion quase sempre faz m ltiplas conex es ao reposit rio apesar de que os usu rios normalmente n o percebem isto devido a este recurso de ca che de senhas
131. pode adicionar excluir copiar e renomear ambos os ar quivos ou diret rios E cada novo arquivo adicionado come a com um hist rico pr prio e completamente novo Commits at micos Um conjunto de modifica es ou inteiramente registrado no reposit rio ou n o re gistrado de forma nenhuma Isto possibilita aos desenvolvedores criarem e registra rem altera es como blocos l gicos e tamb m evita problemas que possam ocorrer quando apenas uma parte de um conjunto de altera es seja enviada com sucesso ao reposit rio Versionamento de metadados Cada arquivo e diret rio tem um conjunto de propriedades chaves e seus valo res associados consigo Voc pode criar e armazenar quaisquer pares chave valor que quiser As propriedades s o versionadas ao longo do tempo tal como os conte dos de arquivo Escolha das camadas de rede O Subversion tem uma no o abstrata do acesso ao reposit rio tornando o mais f cil para as pessoas implementarem novos mecanismos de rede O Subversion pode se associar ao servidor Apache HTTP como um m dulo de extens o Isto d ao Subver sion uma grande vantagem em estabilidade e interoperabilidade al m de acesso ins tant neo aos recursos existentes oferecidos por este servidor autentica o autoriza o compacta o online dentre outros Um servidor Subversion mais leve e indepen dente tamb m est dispon vel Este servidor utiliza um protocolo espec fico o qual po de ser
132. processo Se acaso o Subversion lhe disser que alguma parte de sua c pia de trabalho est travada locked ent o este o comando que voc dever rodar E ainda o svn status mostrar um L pr ximo dos itens que estiverem travados S svn status L somedir M somedir foo c svn cleanup S svn status M somedir foo c N o confunda estas travas da c pia de trabalho com as travas ordin rias que os usu rios do Subversion criam ao usar o modelo de controle de vers o travar modificar destravar veja Os tr s significados de trava para mais esclarecimentos Sum rio Agora n s cobrimos a maioria dos comandos do cliente Subversion As exce es not veis s o os comandos relacionados com ramifica o e mesclagem veja Cap tulo 4 Fundir e Ramificar e propriedades veja Propriedades Entretanto voc pode querer tirar um momento para folhear Cap tulo 9 Refer ncia Completa do Subversion para ter uma id ia de todos os muitos comandos diferentes que o Subversion possui e como voc pode us los para tornar seu trabalho mais f cil 37 Cap tulo 3 T picos Avan ados Se voc est lendo este livro cap tulo por cap tulo do inicio ao fim voc deve agora ter adquirido conhecimentos suficientes para usar o cliente Subversion para executar a opera es de controle de ver o mais comuns Voc entendeu como obter uma c pia de traba lho de um reposit rio Subversion Voc sente se confort vel para sub
133. product includes software developed by CollabNet http www Collab Net The following repository access RA modules are available ra_dav Module for accessing a repository via WebDAV DeltaV protocol handles http scheme handles https scheme ra_svn Module for accessing a repository using the svn network protocol handles svn scheme ra local Module for accessing a repository on local disk handles file scheme A API p blica exportada pela Camada RA cont m as funcionalidades necess rias para enviar e receber dados versionados para e do reposit rio E cada uma das extens es dis pon veis est h bil para realizar esta tarefa usando um protocolo espec fi co libsvn ra dav conversa em HTTP WebDAV opcionalmente usando criptografia com SSL com um Servidor HTTP Apache que estiver rodando o m dulo mod dav svn de ser vidor Subversion libsvn ra svn conversa num protocolo de rede especial com o programa svnserve e assim por diante E para aqueles que desejam acessar um reposit rio Subversion usando ainda outro proto colo isso perfeitamente poss vel porque a Camada de Acesso ao Reposit rio modula rizada Desenvolvedores podem simplesmente escrever uma nova biblioteca que imple menta a interface RA em um dos lados e comunicar com o reposit rio no outro lado Sua nova biblioteca pode usar protocolos de rede j existentes ou voc pode inventar o seu pr prio Voc poderia usar chamadas de
134. propriedade T svn propset license F path to LICENSE calc button c property license set on calc button c H algumas restri es sobre os nomes que voc pode usar para propriedades Um nome de propriedade deve come ar com uma letra dois pontos ou um caractere sublinha _ e depois disso voc tamb m pode usar d gitos hifens e pontos Al m do propset o programa svn tamb m oferece comando propedit Este comando usa o editor de texto configurado veja Configura o para adicionar ou modificar proprieda des Quando voc executa este comando o svn chama seu programa editor em um arqui vo tempor rio que cont m o valor atual da propriedade ou o qual vazio se voc estiver adicionando uma nova propriedade Ent o voc apenas modifica esse valor em seu edi tor at que ele represente o novo valor que voc quer armazenar para a propriedade Se o Subversion identificar que no momento voc est modificando o valor da propriedade exis tente ele ir aceit lo como novo valor da propriedade Se voc sair de seu editor sem fa zer qualquer altera o nenhuma modifica o ir ocorrer svn propedit copyright calc button c sai do editor sem fazer nada No changes to property copyright on calc button c Devemos notar que como qualquer outro subcomando do svn estes que s o relaciona dos a propriedades podem agir em diversos caminhos de uma s vez Isto lhe permite mo
135. que o subdiret rio local de destino relativo seja claro movido com o dire t rio renomeado Isto pode ser confuso ou mesmo frustrante em certas situa es Por exemplo digamos que voc tenha um diret rio de alto n vel chamado my project e que voc tenha criado uma defini o externa em um de seus subdiret rios my pro ject some dir que acompanha a ltima revis o de outro de seus subdiret rios my project external dir svn checkout http svn example com projects A my project A my project some dir A my project external dir Fetching external item into my project some dir subdir Checked out external at revision 11 Checked out revision 11 svn propget svn externals my project some dir subdir http svn example com projects my project external dir Agora voc executa svn move para renomear o diret rio my pro ject directory Neste ponto sua defini o externa ainda vai se referir ao caminho relacionado ao diret rio my project muito embora esse diret rio n o exista mais 67 T picos Avan ados svn mov q my project renamed project svn commit m Rename my project to renamed project Deleting my project Adding my renamed project Committed revision 12 svn update Fetching external item into renamed project some dir subdir svn Target path does not exist E tamb m as URLs absolutas que as defini es externas usam podem causar problemas co
136. ramifica o na revis o 23 e quiser mesclar as altera es feitas no trunk para seu ramo voc pode fazer isto de dentro da c pia de trabalho de seu ramo svn merge r 23 30 file tmp repos trunk vendors U myproj thhgttg txt Para mesclar as altera es em um nico arquivo cd myproj svn merge r 30 31 thhgttg txt U thhgttg txt 240 Refer ncia Completa do Subversion Nome svn mkdir Cria um novo diret rio sob controle de vers o Sinopse svn mkdir PATH svn mkdir URL Descri o Cria um diret rio com o nome dado pelo ltimo componente de PATH ou da URL Um dire t rio especificado por PATH como um caminho na c pia de trabalho agendado para adi o Um diret rio especificado por uma URL criado no reposit rio por meio de um com mit imediato M ltiplas URLs de diret rio s o submetidas atomicamente Em ambos os ca sos todos os diret rios intermedi rios j devem existir Nomes Alternativos Nenhum Altera C pia de trabalho reposit rio se executando sobre uma URL Acessa o Reposit rio Apenas se executando sobre uma URL Op es message m TEXT file F FILE quiet q username USER password PASS no auth cach non interactive editor cmd EDITOR encoding ENC force log config dir DIR Exemplos Cria um diret rio em sua c pia de trabalho svn mkdir newdir A newdir Cria um diret rio no reposit r
137. read user configuration files from directory ARG S svnsync initialize http svn example com svn mirror http svn collab net repos svn N username syncuser password syncpass Copied properties for revision 0 Our target repository will now remember that it is a mirror of the public Subversion source 135 Administra o do Reposit rio code repository Notice that we provided a username and password as arguments to svnsync that was required by the pre revprop change hook on our mirror repository The URLs provided to svnsyne must point to the root directories of the target and source repositories respectively The tool does not handle mirroring of re pository subtrees The initial release of svnsync in Subversion 1 4 has a small shortco ming the values given to the username and password command line options get used for authentication against both the source and destination re positories Obviously there s no guarantee that the synchronizing user s cre dentials are the same in both places In the event that they are not the same users trying to run svnsyne in non interactive mode with the non interactive option might experience problems And now comes the fun part With a single subcommand we can tell svnsync to copy all the as yet unmirrored revisions from the source repository to the target 13 The svnsync synchronize subcommand will peek into the special revision properties previously stored
138. revis es Vimos alguns exemplos simples de como dois colaboradores podem utilizar o Subversi on para publicar e receber as altera es um do outro utilizando o modelo copy mo dify merge N s falamos um pouco sobre a maneira como o Subversion acompanha e gerencia as informa es de uma c pia local do reposit rio Neste ponto voc deve ter uma boa id ia de como o Subversion funciona no sentido mais geral Com este conhecimento voc j deve estar pronto para avan ar para o pr ximo ca p tulo que um relato detalhado dos comandos e recursos do Subversion 15 Cap tulo 2 Uso B sico Agora entraremos nos detalhes do uso do Subversion Quando chegar ao final deste cap tulo voc ser capaz de realizar todas as tarefas necess rias para usar Subversion em um dia normal de trabalho Iniciar acessando seus arquivos que est o no Subversion ap s ter obtido uma c pia inicial de seu c digo Guiaremos voc pelo processo de fazer modifica es e examinar estas modifica es Tamb m ver como trazer mudan as feitas por outros para sua c pia de trabalho examin las e resolver quaisquer conflitos que pos sam surgir Note que este cap tulo n o pretende ser uma lista exaustiva de todos os comandos do Subversion antes uma introdu o conversacional s tarefas mais comuns que voc encontrar no Subversion Este cap tulo assume que voc leu e entendeu o Cap tulo 1 Conceitos Fundamentais e e
139. rico das revis es frente para um objeto Assim o algoritmo neste caso um pouco diferente Localize o item na revis o identificada por OPERATIVE REV Deve ser encontra do apenas um nico objeto Trace o hist rico pregresso do objeto atrav s de eventuais renomea es ocorri das at seu ancestral na revis o PEG REV Verifique se a localiza o do objeto caminho em PEG REV a mesma que o era na revis o OPERATIVE REV Se for este o caso ent o sabe se que pelo menos dois locais est o diretamente relacionados e ent o execute a a o requisitada na localiza o em OPERATIVE REV Caso contr rio nenhuma rela o p de ser esta belecida ent o exiba uma mensagem de erro detalhando que nenhuma localiza o vi vel foi encontrada Algum dia esperamos que o Subversion ser capaz de lidar com este cen rio de uso com mais gra a e flexibilidade Note que mesmo quando voc n o informa uma revis o marcadora ou uma revis o operativa elas ainda estar o presentes Para sua conveni ncia BASE tida como revis o marcadora padr o para itens em sua c pia de trabalho e HEAD o para URLs do reposit rio E quando nenhuma revis o operativa for informada por padr o ser usada a mesma que a da revis o marcadora Digamos que tenhamos criado nosso reposit rio muito tempo atr s e que na revis o 1 adicionamos nosso primeiro diret rio concept al m de um arquivo IDEA nesse diret rio contendo as id
140. rio svn ignore para determinar quais arquivos n o devem ser varridos para o sistema de controle de vers o como parte de uma opera o recursiva de adi o ou importa o E da mesma forma voc pode usar a op o no ignore para indicar ao Subversion des considerar suas listas de rejei o e operar em todos os arquivos e diret rios presentes Substitui o de Palavra Chave O Subversion possui a capacidade de substituir palavras chave peda os de informa o teis e din micos sobre um arquivo versionado dentro do conte do do pr prio arquivo As palavras chave geralmente fornece informa o sobre a ltima modifica o realizada no arquivo Pelo fato desta informa o modificar toda vez que o arquivo modificado e mais importante apenas depois que o arquivo modificado isto um aborrecimento para qual quer processo a n o ser que o sistema de controle de vers o mantenha os dados comple tamente atualizados Se deixada para os autores humanos a informa o se tornaria inevi 53 T picos Avan ados tavelmente obsoleta Por exemplo digamos que voc tem um documento no qual gostaria de mostrar a ltima data em que ele foi modificado Voc poderia obrigar que cada autor deste documento que pouco antes de submeter suas altera es tamb m ajustasse a parte do documento que descreve quando ele fez a ltima altera o Por m mais cedo ou mais tarde algu m esqueceria de fazer isto Em vez disso
141. sally O Jan 18 15 27 INSTALL 24 harry Jan 18 11 27 examples Para mais detalhes veja svn list 232 Refer ncia Completa do Subversion Nome svn lock Trava caminhos na c pia de trabalho ou em URLs no reposit rio assim ne nhum outro usu rio poder submeter altera es neles Sinopse svn lock TARGET Descri o Trava cada TARGET Se algum TARGET j estiver travado por outro usu rio exibe uma mensagem de aviso e continua travando os demais TARGETS informados Use force para roubar uma trava de outro usu rio ou c pia de trabalho Nomes Alternativos Nenhum Altera C pia de trabalho Reposit rio Acessa o Reposit rio Sim Op es targets FILENAME message m T file F FILE force log encoding ENC username USER password PASS no auth cach non interactive config dir DIR force Exemplos Trava dois arquivos em sua copia de trabalho svn lock tree jpg house jpg tree jpg locked by user harry house jpg locked by user harry Trava um arquivo em sua c pia de trabalho que ja estava travado por outro usu rio svn lock tree jpg svn warning Path tree jpg is already locked by user sally in filesystem svn repos db svn lock force tree jpg tree jpg locked by user harry 233 Refer ncia Completa do Subversion Trava um arquivo sem uma c pia de trabalho svn lock http
142. sandwich sandwich txt sandwich txt mine sandwich txt r2 sandwich txt rl cp sandwich txt r2 sandwich txt S svn resolved sandwich txt Punting Usando o svn revert Se voc tiver um conflito e ap s examinar decidir que prefere descartar suas altera es e come ar a editar outras coisas apenas reverta suas altera es S svn revert sandwich txt Reverted sandwich txt ls sandwich sandwich txt Perceba que ao reverter um arquivo em conflito voc nao precisa executar svn resolved Registrando Suas Altera es Finalmente Suas edi es est o conclu das voc mesclou todas as altera es do servi dor e agora est pronto para registrar suas altera es no reposit rio O comando svn commit envia todas as suas modifica es para o servidor Quando voc registra uma altera o voc precisa informar uma mensagem de log descrevendo sua al tera o Sua mensagem de log ser anexada nova revis o que voc criar Se sua men sagem de log for breve voc pode querer escrev la na pr pria linha de comando usando a op o message OU m svn commit m Corrected number of cheese slices Sending sandwich txt Transmitting file data Committed revision 3 No entanto se voc estiver escrevendo sua mensagem conforme for trabalhando voc pode querer informar ao Subversion para obter a mensagem a partir de um arquivo indi cando o com a op o file F svn commit F logmsg Sending sandw
143. sob controle de vers o qualquer pessoa que obt m uma c pia de trabalho desse di ret rio tamb m beneficiada pelas defini es externas Em outras palavras uma vez que algu m investiu tempo e esfor o para definir essa c pia de trabalho feita de checkouts ani nhados ningu m mais precisa se incomodar o Subversion atrav s do checkout da c pia de trabalho original tamb m obter as c pias de trabalho externas Os subdiret rios alvos relativos das defini es externas n o podem existir no seu sistema de arquivos nem no de outros usuarios o Subversion ir cri los quando obter a c pia de trabalho externa Note o exemplo anterior de defini es externas Quando algu m obt m uma c pia de tra balho do diret rio calc o Subversion tamb m obt m os itens encontrados nas suas defi ni es externas svn checkout http svn example com repos calc A calc A calc Makefile A calc integer c A calc button c Checked out revision 148 Fetching external item into calc third party sounds A calc third party sounds ding ogg A calc third party sounds dong ogg A calc third party sounds clang ogg A A C calc third party sounds bang ogg calc third party sounds twang ogg hecked out revision 14 Fetching external item into calc third party skins Se voc precisar mudar as defini es externas voc pode fazer isso usando os subco mandos para modifica o de propriedades normalmente Quando voc submeter uma al
144. softwares na plataforma Windows um par de ca racteres de controle ASCll um retorno de carro CR seguido por um avan o de linha LF Os softwares em Unix entretanto utilizam apenas o caracter LF para definir o t rmi no de uma linha Nem todas as ferramentas nestes sistemas operacionais compreendem arquivos que con t m termina es de linha em um formato que difere do estilo nativo de termina o de linha do sistema operacional no qual est o executando Assim normalmente programas Unix tratam o caracter CR presente em arquivos Windows como um caracter normal usualmente representado como M e programas Windows juntam todas as linhas de um arquivo Unix dentro de uma linha enorme porque nenhuma combina o dos caracteres de retorno de carro e avan o de linha ou CRLF foi encontrada para determinar os t rmi nos das linhas Esta sensibilidade quanto aos marcadores EOL pode ser frustrante para pessoas que compartilham um arquivo em diferentes sistemas operacionais Por exemplo considere um arquivo de c digo fonte onde desenvolvedores que editam este arquivo em ambos os sistemas Windows e Unix Se todos os desenvolvedores sempre usarem ferramentas que preservem o estilo de t rmino de linha do arquivo nenhum problema ocorrer Mas na pr tica muitas ferramentas comuns ou falham ao ler um arquivo com marcadores EOL externos ou convertem as termina es de linha do arquivo para o estilo nativo quan do o arquivo salvo
145. solicitado informe a URL do reposit rio mas inclua um n mero de porta na URL Por exemplo http host repos deveria ser informado como http host 80 repos 4 Responda a quaisquer solicita es de autentica o H alguns outros rumores sobre formas de contornar outros problemas mas nenhum de les parece funcionar em todas as vers es e com os diferentes patches do Windows XP Em nossos testes apenas estes passos anteriores parecem funcionar consistentemente em cada sistema E consenso geral da comunidade WebDAV que voc deveria evitar es sa nova implementa o de Web Folders e usar a antiga no lugar e que se voc precisar de um cliente em n vel de sistema de arquivos para o Windows XP use ent o um progra ma de terceiros como o WebDrive ou o NetDrive Uma ltima dica se voc estiver tentando usar o XP Web Folders certifique se de ter real mente a sua vers o mais recente da Microsoft Por exemplo a Microsoft disponibilizou uma vers o com bugs corrigidos em janeiro de 2005 que encontra se dispon vel em 336 WebDAV e Autoversionamento http support microsoft com kbid 892211 Em particular esta vers o conhecida por corrigir um problema em que ao se navegar em um compartilhamento DAV resultava em uma inesperada recurs o infinita Nautilus Konqueror O Nautilus o gerenciador de arquivos navegador oficial do ambiente GNOME http www gnome org j o Konqueror o gerenciador de arquivos navegador
146. suponha que voc decida continuar trabalhando em seu ramo por mais uma semana para concluir uma melhoria em seu recurso original ou uma corre o de bug A revis o HEAD do reposit rio agora a 480 e voc est pronto para fazer outra mesclagem de seu ramo particular com o tronco principal Mas como j discutido em Melhores pr ti cas sobre Fus o voc n o quer mesclar as modifica es que voc j mesclou anterior mente o que voc quer mesclar todas as coisas novas em seu ramo desde a ltima mesclagem que voc fez O truque conferir exatamente quais s o as coisas novas O primeiro passo executar svn log no tronco e procurar por uma mensagem de log da ltima vez que voc mesclou um ramo cd calc trunk svn log r406 user 2004 02 08 11 17 26 0600 Sun 08 Feb 2004 1 line Merged my calc branch changes r341 405 into the trunk Aha Como todas as modifica es no ramo que aconteceram entre as revis es 341 e 408 j foram previamente mescladas para o tronco gerando a revis o 406 voc agora sabe que deve mesclar apenas as altera es feitas depois disso comparando as revis es HE AD S cd calc trunk svn update At revision 480 Percebemos que atualmente HEAD esta em 480 entdo usamos isso para fazer a me svn merge r 406 480 http svn example com repos calc branches my calc branc 91 Fundir e Ramificar U integer c U button c U Makefile
147. svn red bean com repos test tree jpg tree jpg locked by user harry Para mais detalhes veja Travamento 234 Nome Sinopse Refer ncia Completa do Subversion svn log Exibe as mensagens de log submetidas svn log PATH svn log URL PATH svn log URL REV PATH Descri o Exibe mensagens de log do reposit rio Se nenhum argumento for informado svn log exi be as mensagens de log para todos os arquivos e diret rios dentro do diret rio atual inclusive de sua c pia de trabalho Voc pode refinar os resultados especificando um ca minho uma ou mais revis es ou qualquer combina o das duas O intervalo padr o de revis es para caminhos locais BASE 1 Se voc especificar uma URL sozinha ent o o comando exibe as mensagens de log para tudo o que a URL contiver Se voc adicionar caminhos depois da URL apenas as men sagens para estes caminhos sob a URL ser o exibidas O intervalo padr o de revis es para uma URL HEAD 1 Com verbose svn log tamb m ir exibir todos os caminhos afetados com cada men sagem de log Com quiet svn log n o ir exibir o corpo da mensagem de log em si isto compat vel com verbose Cada mensagem de log exibida apenas uma vez mesmo se mais de um dos caminhos afetados por aquela revis o forem solicitados explicitamente As mensagens de log se guem o hist rico de c pias por padr o Use stop on copy para desabilita
148. tera o na propriedade svn externals o Subversion ir sincronizar os itens submeti dos com as defini es externas na pr xima vez que voc executar um svn update A mesma coisa ir acontecer quando outros atualizarem suas c pias de trabalho e recebam as suas modifica es nas defini es externas Como o valor da propriedade svn externals um conte do de m ltiplas li nhas n s recomendamos fortemente que voc use o svn propedit ao inv s do svn propset 66 T picos Avan ados em todas as suas defini es externas Fazer isso significa que voc tem que decidir quando trazer um diferente registro instant neo de uma informa o ex terna e exatamente qual instant neo trazer Al m de evitar a surpresa de ob ter mudan as de reposit rios de terceiros sobre as quais voc pode n o ter nenhum controle usar n mero de revis o expl citos tamb m significa que con forme voc voltar no tempo sua c pia de trabalho para uma revis o anterior suas defini es externas tamb m ser o revertidas para a forma como esta vam na revis o passada o que por sua vez significa que as c pias de traba lho ser o atualizadas de volta para corresponder forma como elas se pareci am quando seu reposit rio estava naquela revis o anterior Para projetos de software isso poderia ser a diferen a entre uma compila o de sucesso ou uma falha em um momento passado de sua complexa base de c digo O Voc deveria considerar s
149. um conjunto completo de altera es em uma transa o at mica Por transa o at mica nos entendemos simplesmente isto Ou s o efetivadas todas as altera es no reposit rio ou nenhuma delas O Subversion tenta manter esta atomicidade em face de quebras ou travamentos do programa ou do sistema problemas de rede ou outras a es de usu rios Cada vez que o reposit rio aceita um commit isto cria um novo estado na rvore de arqui vos chamado revis o Cada revis o assinalada com um nico n mero natural incre mentado de um em rela o revis o anterior A revis o inicial de um reposit rio rec m criado numerada com zero e consiste em nada al m de um diret rio raiz vazio A figura Figura 1 7 O Reposit rio ilustra uma forma simples para visualizar o reposit rio Imagine um array de n meros de revis es iniciando em zero alongando se da esquerda para a direita Cada n mero de revis o tem uma rvore de arquivos pendurada abaixo de la e cada rvore um snapshot da forma como o reposit rio podia ser visto ap s um commit Figura 1 7 O Reposit rio 11 Conceitos Fundamentais N meros de Revis o Globais Ao contr rios de outros sistemas de controle de vers o os n meros de revis o do Subversion se aplicam rvore inteira n o a arquivos individuais Cada n mero de revis o refere se a uma rvore inteira um estado particular do reposit rio ap s de terminad
150. via a Subversi on server so this user is the same user as which that server runs on the system The ho oks themselves will need to be configured with OS level permissions that allow that user to execute them Also this means that any file or programs including the Subversion reposi tory itself accessed directly or indirectly by the hook will be accessed as the same user In other words be alert to potential permission related problems that could prevent the hook from performing the tasks it is designed to perform There are nine hooks implemented by the Subversion repository and you can get details about each of them in Ganchos do Reposit rio As a repository administrator you ll need to decide which of hooks you wish to implement by way of providing an appropriately na med and permissioned hook program and how When you make this decision keep in mind the big picture of how your repository is deployed For example if you are using ser ver configuration to determine which users are permitted to commit changes to your reposi tory then you don t need to do this sort of access control via the hook system There is no shortage of Subversion hook programs and scripts freely available either from the Subversion community itself or elsewhere These scripts cover a wide range of uti lity basic access control policy adherence checking issue tracker integration email or syndication based commit notification and beyond See Ap ndi
151. voc obteve uma c pia de trabalho atualizada do novo diret rio do reposit rio Em vez disso voc pode simplesmente pedir ao Subversion que mude sua c pia de traba lho de calc trunk para espelhar o local do novo ramo S cd calc svn info grep URL URL http svn example com repos calc trunk svn switch http svn example com repos calc branches my calc branch U integer c U button c U akefile Updated to revision 341 svn info grep URL URL http svn example com repos calc branches my calc branch Depois da comuta o para o ramo sua c pia de trabalho n o diferente daquilo que vo c obteria fazendo uma c pia atualizada do diret rio E ainda usualmente mais eficiente usar este comando porque muitas vezes os ramos diferem somente em poucos detalhes O servidor envia somente o conjunto m nimo de mudan as necess rias para fazer sua c pia de trabalho refletir o diret rio do ramo O comando svn switch tamb m possui uma op o revision r assim voc n o precisa sempre mover sua c pia de trabalho para a revis o HEAD do ramo Certamente a maioria dos projetos s o mais complicados que nosso exemplo calc con tendo m ltiplos subdiret rios Os usu rios do Subversion muitas vezes seguem um algorit mo espec fico ao usar ramos 1 Copiar todo o trunk do projeto para um novo diret rio de ramo 97 Fundir e Ramificar 2 Comutar somente parte do trunk d
152. yet Instead use the following recipe to attempt to unwedge your repository 1 Make sure that there are no processes accessing or attempting to access the reposi tory For networked repositories this means shutting down the Apache HTTP Server or svnserve daemon too 2 Become the user who owns and manages the repository This is important as recove ring a repository while running as the wrong user can tweak the permissions of the repo sitory s files in such a way that your repository will still be inaccessible even after it is unwedged 3 Run the command svnadmin recover path to repos You should see output like this Repository lock acquired Please wait recovering the repository may take some time Recovery completed The latest repos revision is 19 This command may take many minutes to complete 4 Restart the server process This procedure fixes almost every case of repository lock up Make sure that you run this command as the user that owns and manages the database not just as root Part of the recovery process might involve recreating from scratch various database files shared me mory regions for example Recovering as root will create those files such that they are owned by root which means that even after you restore connectivity to your repository regular users will be unable to access it If the previous procedure for some reason does not successfully unwedge your reposi tory you sh
153. you might not want to spew hundreds or thousands of commit emails in rapid suc cession at that list You can read more about the use of hook scripts in Implementando Ganchos de Reposit rio Note that because svnadmin uses standard input and output streams for the repository dump and load process people who are feeling especially saucy can try things like this perhaps even using different versions of svnadmin on each side of the pipe svnadmin create newrepos svnadmin dump oldrepos svnadmin load newrepos By default the dump file will be quite large much larger than the repository itself That s because by default every version of every file is expressed as a full text in the dump file This is the fastest and simplest behavior and nice if you re piping the dump data directly in to some other process such as a compression program filtering program or into a loading process But if you re creating a dump file for longer term storage you ll likely want to save disk space by using the deltas option With this option successive revisions of files will be output as compressed binary differences just as file revisions are stored in a repo sitory This option is slower but results in a dump file much closer in size to the original re pository We mentioned previously that svnadmin dump outputs a range of revisions Use the revision r option to specify a single revision to dump or a range of revisions If you omit t
154. 001 09 12 11 09 28 0500 Wed 12 Sep 2001 0 A long abandoned transaction usually represents some sort of failed or interrupted commit A transaction s datestamp can provide interesting information for example how likely is it that an operation begun nine months ago is still active In short transaction cleanup decisions need not be made unwisely Various sources of in formation including Apache s error and access logs Subversion s operational logs Sub version revision history and so on can be employed in the decision making process And of course an administrator can often simply communicate with a seemingly dead transacti on s owner via email for example to verify that the transaction is in fact in a zombie sta te Purging unused Berkeley DB logfiles Until recently the largest offender of disk space usage with respect to BDB backed Sub version repositories was the log files in which Berkeley DB performs its pre writes before modifying the actual database files These files capture all the actions taken along the rou te of changing the database from one state to another while the database files at any gi ven time reflect a particular state the log files contain all the many changes along the way between states Thus they can grow and accumulate quite rapidly Fortunately beginning with the 4 2 release of Berkeley DB the database environment has the ability to remove its own unused log files automatic
155. 159 Facilidades Extras eere sato EE EAEE aa n god hed idee ied hades 163 Autoriza o Baseada em Caminhos ii 166 Dando Suporte a M ltiplos M todos de Acesso ao Reposit rio 170 7 Customizando sua Experi ncia com Subversion cccceccecsteeectseeeeeeeeteeeees 172 Area de Configura o do Tempo de Execu o csscseceeeesseeeeeesteeeeeesaes 172 Estrutura da Area de Configura o 172 Configura o e o Registro do Windows 173 Op es de Configura o araras 174 LOCalIzA O scot ant Gesto ieee Enredo casando dass lactate 178 Compreendendo localidades raras 179 Uso de localidades do Subversion 179 Usando Ferramentas Externas de Diferencia o 181 Ferramentas diff Externas ri eenaeraa aa 181 Ferramentas diff3 Externas era 183 8 Incorporando o Subversion ee a aaae aeaaaee eaaa aaraa 185 Projeto da Biblioteca em Camadas erra 185 Camada de Reposit rio e rrrrar arara 186 Camada de Acesso ao Reposit rio 190 Camada Clem 2 sit rntedea re soon molar eias rei Ea e Not du ongs 191 Por dentro da Area de Administra o da C pia de Trabalho 192 Os Arquivos de Entrada e rirarar arara 192 C pias Inalteradas e Propriedade de Arquivos ccceeseeeeeeeeeeees 193
156. 207 Refer ncia Completa do Subversion svn add non recursive otherdir A otherdir Normalmente o comando svn add vai desconsiderar quaisquer diret rios que ja estive rem sob controle de vers o Algumas vezes no entanto voc pode querer adicionar quaisquer objetos n o versionados em sua c pia de trabalho incluindo os que estiverem escondidos mais profundamente na rvore de diret rios Passar a op o force faz com que o svn add aja recursivamente tamb m nos diret rios versionados S svn add force A foo c A somedir bar c A otherdir docs baz doc 208 Refer ncia Completa do Subversion Nome svn blame Mostra informa o de autor e revis o por linha para os arquivos ou URLs es pecificados Sinopse svn blame TARGET REV Descri o Mostra informa o de autor e revis o por linha para os arquivos ou URLs especificados Cada linha de texto prefixada com o nome do autor nome de usu rio e o n mero de re vis o da ltima altera o naquela linha Nomes Alternativos praise annotate ann Altera Nada Acessa o Reposit rio Sim Op es revision r ARG verbose v incremental xml extensions x ARG force username ARG password ARG no auth cach non interactive config dir ARG Exemplos Se voc quiser ver informa o dos respons veis pelos fontes para readme txt em seu reposit rio svn
157. 32 raisin jpg svn update B raisin jpg svn status Se a trava foi quebrada no reposit rio ent o svn status show updates exibe um s m bolo B Broken pr ximo ao arquivo Se uma nova trava existe no lugar da anterior ent o um s mbolo T sTolen mostrado Finalmente svn update relata os sinais de trava exis tentes e os remove da c pia de trabalho Pol ticas de Travamento Diferentes sistemas possuem diferentes no es de como rigorosa uma trava deve ser Algumas pessoas afirmam que travas devem ser estritamente aplicadas a todo custo liber veis somente pelo criador original ou administrador Eles argumentam que se qualquer um pode quebrar uma trava ent o o caos corre galopante e toda circunst ncia de travamento derrotada O outro lado afirma que travas s o antes de mais nada uma ferramenta de comunica o Se usu rios est o constantemente quebrando as travas de outros ent o ele representa um fracasso cultural dentro da equipe e o problema sai fora do escopo da aplica o de software Por padr o o Subversion possui uma abordagem branda mas ainda permite que administradores criem pol ticas de aplica o mais rigorosas atrav s da utiliza o de scripts de gancho Em particular os ganchos pre lock e pre unlock permitem aos administradores decidir quando a cria o e libera o de travas s o autorizadas a acontecer Dependendo se uma trava j existe ou n o estes dois ganchos podem decidir se p
158. 7 recover 278 rmlocks 279 rmtxns 280 setlog 281 verify 282 svnlook subcomando changed 286 date 287 diff 288 dirs changed 289 help 290 history 291 info 292 lock 293 log 294 propget 295 proplist 296 tree 297 uuid 298 youngest 299 subcomandos author 284 cat 285 svnsync subcomando copy revprops 301 initialize 302 synchronize 303 svnversion 306 345
159. 810 Isto colocar sua c pia de trabalho em um diret rio chamado subv em vez de um diret rio chamado trunk como fizemos anteriormente O diret rio subv ser criado se ele n o existir Desabilitando o Cache de Senhas Quando voc realiza uma opera o no Subversion que requer autentica o por padr o o Subversion mant m suas credenciais de autentica o num cache em disco Isto feito por conveni ncia para que voc n o precise continuamente ficar redigitando sua senha em opera es futuras Se voc estiver preocupado com o fato de o Subversion manter um ca che de suas senhas voc pode desabilitar o cache de forma permanente ou analisando caso a caso Para desabilitar o cache de senhas para um comando espec fico uma vez passe a op o no auth cache na linha de comando Para desabilitar permanentemente o cache vo c pode adicionar a linha store passwords no no arquivo de configura o local do seu Subversion Veja Armazenando Credenciais no Cliente para maiores detalhes Autenticando como um Usu rio Diferente Uma vez que por padr o o Subversion mant m um cache com as credenciais de autenti ca o tanto usu rio quanto senha ele convenientemente se lembra que era voc estava ali na ltima vez que voc modificou sua c pia de trabalho Mas algumas vezes isto n o til particularmente se voc estava trabalhando numa c pia de trabalho compartilhada 1 claro voc n o est terrive
160. A NAO ESTABELE QUALQUER RELA O ADVOCATICIA O CREATIVE COMMONS DISPONIBILIZA ESTA I Q Q O C A NFORMACAO NO ESTADO EM QUE SE ENCONTRA O CREATIVE COMMONS NAO FAZ UALQUER GARANTIA QUANTO AS INFORMACOES DISPONIBILIZADAS E SE EXONERA DE UALQUER RESPONSABILIDAD GI POR DANOS RESULTANTES DO SEU USO Licen a A OBRA CONFORME DEFINIDA ABAIXO DISPONIBILIZADA DE ACORDO COM OS TERMOS DESTA LICEN A P BLICA CREATIVE COMMONS CCPL OU LICEN A A OBRA PROTEGIDA POR DIREITO AUTORAL E OU OUTRAS LEIS APLIC VEIS QUALQUER USO DA OBRA QUE N O O AUTORIZADO SOB ESTA LICEN A OU PELA LEGISLA O AUTORAL PROIBIDO T EXERCER QUAISQUER DOS DIREITOS OBRA AQUI CONCEDIDOS VOC ACEITA NCORDA FICAR OBRIGADO NOS TERMOS DESTA LICEN A O LICENCIANTE CONCED VOC OS DIREITOS AQUI CONTIDOS EM CONTRAPARTIDA SUA ACEITA O DEST ERMOS E CONDI ES O O ti m d HPAP m Defini es a Obra Coletiva significa uma obra tal como uma edi o peri dica 340 Copyright antologia ou enciclop dia na qual a Obra em sua totalidade e de forma inalterada em conjunto com um n mero de outras contribui es const
161. Available subcommands crashtest create deltify We ve already mentioned svnadmin s create subcommand see Criando o Reposit rio Most of the others we will cover later in this chapter And you can consult svnadmin for a full rundown of subcommands and what each of them offers svnlook svnlook is a tool provided by Subversion for examining the various revisions and transacti ons which are revisions in the making in a repository No part of this program attempts to change the repository svnlook is typically used by the repository hooks for reporting the changes that are about to be committed in the case of the pre commit hook or that were just committed in the case of the post commit hook to the repository A repository admi nistrator may use this tool for diagnostic purposes svnlook has a straightforward syntax svnlook help general usage svnlook SUBCOMMAND REPOS_PATH ARGS amp OPTIONS Note any subcommand which takes the revision and transaction options will if invoked without one of those options act on the repository s youngest revision Type svnlook help lt subcommand gt for help on a specific subcommand Type svnlook version to see the program version and FS modules Nearly every one of svnlook s subcommands can operate on either a revision or a tran saction tree printing information about the tree itself or how it differs from the previous re vision of the repository
162. B significa que existem um componente a menos no siste ma explicam porque atualmente quase todo mundo utiliza o FSFS para criar novos repo 112 Administra o do Reposit rio sit rios Felizmente muitos programas que acessam os reposit rios Subversion s o aben oados por ignorarem o mecanismo de armazenamento que est em uso E voc nem mesmo precisa se preocupar com a sua primeira escolha de mecanismo de armazenamento no caso de voc mudar de id ia posteriormente o Subversion oferece formas de migrar os dados do seu reposit rio para outro reposit rio que usa um mecanismo de armazenamen to diferente N s iremos falar mais sobre isso nesse cap tulo As seguintes subse es oferecem uma vis o mais detalhada sobre os tipos de mecanis mos de armazenamento dispon veis Berkeley DB Quando a fase de projeto inicial do Subversion estava em andamento os desenvolvedo res decidiram usar o Berkeley DB por diversas raz es incluindo sua licen a open source suporte a transa es confiabilidade desempenho simplicidade da API seguran a no uso em multitarefas suporte para cursores de dados dentre outras O Berkeley DB oferece suporte real para transa es talvez seu recurso mais poderoso M ltiplos processos que acessem seus reposit rios Subversion n o precisam se preocu par em sobrescrever acidentalmente os dados uns dos outros O isolamento oferecido pe lo sistema de transa es age de tal forma que pa
163. Como um administrador ser esperado que voc en tenda a composi o de um reposit rio tanto da perspectiva do Sistema Operacio nal como o reposit rio se parece e se comporta em rela o a ferramentas que n o s o do Subversion e de uma perspectiva l gica relacionada com a forma com que os dados s o representados dentro do reposit rio Vendo pelos olhos de um t pico navegador de arquivos como o Windows Explorer ou de ferramentas de navega o em sistemas de arquivos baseadas em linha de comando o re posit rio Subversion apenas outro diret rio cheio de coisas Existem alguns subdiret ri OS que possuem arquivos de configura o que podem ser lidos por humanos e outros que n o s o t o f ceis de serem lidos e assim por diante Como em outras reas do projeto do Subversion modularidade tem grande import ncia e a organiza o hier rquica usa da pra controlar o caos Assim uma olhada superficial nas partes essenciais suficiente para revelar os componentes b sicos do reposit rio ls repos conf dav db format hooks locks README txt Aqui est uma pequena pincelada do que exatamente voc est vendo nessa lista do dire t rio N o fique assustado com a terminologia uma explica o mais detalhada desses componentes est dispon vel em algum lugar nesse e em outros cap tulos conf Um diret rio contendo arquivos de configura o do reposit rio 1 Isto pode soar bem metido ou arr
164. Confi gura o auth store auth creds no Algumas vezes os usu rios poder o querer remover credenciais espec ficas da cache em disco Para fazer isso voc precisa ir at a rea auth e excluir manualmente o arquivo de cache apropriado As credenciais s o armazenadas em arquivos individuais se voc olhar dentro de cada arquivo voc ver chaves e valores A chave svn realmstring descreve o dom nio do servidor espec fico ao qual o arquivo est associado S ls subversion auth svn simple 56 1adf2865e267db 4f09ba6f872c28 3893ed123b39500bca8a0b382839198e 5c3c22968347b390f349FfF340196ed39 cat subversion auth svn simple 5671adf2865e267db74f09ba6f872c28 K 8 username V 3 joe K 8 password V 4 blah K 15 svn realmstring V 45 lt https svn domain com 443 gt Joe s repository 74 T picos Avan ados Assim que voc localizar o respectivo arquivo de cache apenas o exclua Uma ltima palavra sobre o comportamento de autentica o do svn especificamente em rela o s op es username e password Muitos dos subcomandos do cliente aceitam estas op es mas importante entender que o uso dessas op es n o envia as credenciais automaticamente ao servidor Conforme discutido anteriormente o servidor puxa as credenciais do cliente quando julgar necess rio o cliente n o pode empurr las vontade Se um nome de usu rio e ou senha s o passados como op es
165. Controle de Vers o com Subversion Para Subversion 1 4 Compilado da revis o 330 Ben Collins Sussman Brian W Fitzpatrick C Michael Pilato Controle de Vers o com Subversion Para Subversion 1 4 Compilado da revis o 330 por Ben Collins Sussman Brian W Fitzpatrick e C Michael Pilato Publicado TBA Copyright O 2002 2003 2004 2005 2006 2007 Ben Collins Sussman Brian W Fitzpa trick C Michael Pilato Este trabalho est licenciado sob a licen a Creative Commons Attribution License Para obter uma c pia dessa li cen a visite http creativecommons org licenses by 2 0 ou envie uma carta para Creative Commons 559 Nathan Abbott Way Stanford California 94305 USA ndice Apresenta o ierosina amada asa whined dead gues dae EE xi PRET CIO Sentada Da LI A DT OT DL TS POD LG xiii PUbIICO AIVO oheari eara ada de EANA BENER teas ia di duyavdeteudea ee EA EEEO Era et inda xiii Como Ler Este Livro eeki EEan K AKE ERA rE RAEE EE KAAI EAKR INF xiv Conven es Usadas Neste Livro ssessesssesessssessrrirrrerssrtrrrrrrerssrsrrrrrrersss XV Conven es tipogr ficas ssesesesenssnnettteettnettnnttnnttnnnetnnennnne enteen XV ICON S incensed 8 seat ie ie a ent ih ato ae hence nt XV Organiza o Deste Livro e srraraa ceara rraraa ana XV Este LIVIO CS BIVIO seo e A NR denier vive len Pha Tove ne Doe xvi Agradecimentos reren iorra nre EAE toed ees codices tavenst ieegespihauvte th
166. E EE E E A Edo ja E 16 Colocando dados em seu Reposit rio 16 SVIVIM POLL setas teta santana casa Ri ES En Des ns Dia ain aad 16 Layout de reposit rio recomendado serrana 17 Checkout niclal asas arenie sra nd Aga a e a ieee 17 Desabilitando o Cache de Senhas 19 Autenticando como um Usu rio Diferente 0 cceeceeeeeteeeeeeeeeeeeaee 19 Ciclo Basico de Trabalho serraria arara 20 Atualizando Sua C pia de Trabalho 20 Fazendo Altera es em Sua C pia de Trabalho 21 Verificando Suas Altera es siririca 22 Desfazendo Modifica es de Trabalho 26 Resolvendo Conflitos Combinando Altera es de Outros 27 Registrando Suas Altera es e eieraraana aaa 30 Examinando o Hist rico eee eree a arerae aaa ranaaaaaranaararana 31 Gerando uma lista de altera es hist ricas i 32 Examinando os detalhes das altera es hist ricas 33 Navegando pelo reposit rio ienes 35 Retornando o reposit rio a momentos antigos 36 As Vezes Voc S Precisa Limpar iii eearaneaa 36 EET DET e EAEE cave cet SS E S E E COUT A 00 TARDE ALCEU A aan 37 3 T picos Avan ados ised esa ae bata E A a ae aa Da aa 38 Especificadores de Revis o a eeeeeeaaeeeeeeaaeeeeeeaaeeeeeeaaeeeeee
167. N eied nes eaa a a dove ma Alba Sgpenta aupes detorescthenuersdebatetesbeouer 307 Propriedades do Subversion cccceeeaceeeeeeeeeeeeeeaeaaeeeeeeeeeeeeaeaaeaneeeeeees 309 Propriedades Versionadas re renreraaaa 309 Propriedades N o Versionadas 309 Ganchos do Reposit rio i vit ithe aiken deta ee 310 A Guia Rapido de Introdu o ao Subversion ceeececeseeeeeeeceeeeeeeaaeeeeeeaaeaees 320 Instalando o Subversion eee ee eeeeeeeeeeeeaeaaeeneeeeeeeeeaeaaeaneeeeeees 320 Tut rial Alta Velocidade scicct estusssteacgeatieaveces iaudebasneeteneeheuvtediieaeeresicuees 321 B Subversion para Usu rios de CVS e erreraraaaranaaana 324 Os N meros de Revis o Agora S o Diferentes ceeeeeceeeeeeeeeeeeeeeeaee 324 Vers es de Diret rio rs rrrrar arara near rraraaanaaa 324 Mais Opera es Desconectadas cccceeeceeeeeceeeeeeeeeeeeeeeaeaaeeeeeeeeeeeeaas 325 Distin o Entre Status e Update erra 326 SLALUS sais Rane ity E qu PCR a ASA UP SCE oa Da DOS ae die Lata cates 326 Update eis sedis eit Aveda tele eA Seta ela ds pa a Sea TIVNE 327 RAMOS amp R LUIOS us rerio Arar E eaaa EEANN ea cctduyacdersasgasetannavaatvaseacdiiundet 327 Propriedades de Metadados cceeececeeeceeeaeeeeeeeaaeeeeeeaaeeeeeaaeeeeeeaaeeees 327 Resolu o de Conflitos ereta arara 328 Arquivos Bin rios e Tr
168. NUnnT SR svn Can t convert string from UTF 8 to native encoding Erros como estes normalmente ocorrem quando o cliente do Subversion recebeu uma sequ ncia UTF 8 do reposit rio mas nem todos os caracteres nesta sequ ncia podem ser representados usando a codifica o da localidade atual Por exemplo se sua localidade en US mas um colaborador submeteu um nome de arquivo em Ja pon s voc provavelmente ver este erro quando for receber o arquivo durante um svn update A solu o est tanto em definir sua localidade para alguma que possa representar os dados UTF 8 recebidos ou modificar o nome do arquivo ou mensagem de log dentro do reposit rio E n o esque a de dar uma bofetada na m o de seu colaborador os projetos devem decidir o quanto antes as linguagens comuns para que todos partici pantes estejam utilizando a mesma localidade Usando Ferramentas Externas de Diferencia 180 o Customizando sua Experi ncia com Subversion A presen a das op es diff cmd e diff3 cmg e dos par metros de configura o em tempo de execu o similarmente nomeados veja Configura o podem levar a uma falsa no o do qual f cil seja usar ferramentas externas de diferencia o ou diff ou de fus o com o Subversion Ainda que o Subversion possa usar a maioria das ferramentas populares dispon veis o esfor o investido nesta configura o quase sempre acaba por se tornar algo n o tr
169. Nome svnlook info Mostra o autor data hora tamanho da mensagem de log e a mensagem de log Sinopse svnlook info REPOS PATH Descri o Mostra o autor data hora tamanho da mensagem de log e a mensagem de log Op es revision r REV transaction t Exemplos Isto mostra a sa da para a revis o 40 no nosso reposit rio de exemplo svnlook info r 40 usr local svn repos sally 2003 02 22 17 44 49 0600 Sat 22 Feb 2003 15 Rearrange lunch 292 Refer ncia Completa do Subversion Nome svnlook lock Se o lock existir no caminho do reposit rio o descreve Sinopse svnlook lock REPOS PATH PATH IN REPOS Descri o Mostra todas as informa es dispon veis para o lock no PATH IN REPOS Se PATH IN REPOS n o estiver lockado n o mostra nada Op es Nada Exemplos Descreve o lock do arquivo tree jpg svnlook lock svn repos tree jpg UUID Token opaquelocktoken ab00ddf0 6aflb 0310 9cd0 dda813329753 Owner harry Created 2005 07 08 17 27 36 0500 Fri 08 Jul 2005 Expires Comment 1 line Rework the uppermost branches on the bald cypress in the foreground 293 Refer ncia Completa do Subversion Nome svnlook log Mostra a mensagem de log Sinopse svnlook log REPOS PATH Descri o Mostra a mensagem de log Op es revision r REV transaction t Exemplos Isto mostra o log de sa da para a
170. P usado para disponibilizar seu reposi t rio a outros atrav s da rede svnserve Um especifico programa servidor independente executavel como um processo dae mon ou invocavel via SSH uma outra forma de disponibilizar seu reposit rio a outros atrav s da rede svnsync Um programa para fazer espelhamento incremental de um reposit rio para outro atra v s da rede Uma vez que voc tenha instalado o Subversion corretamente voc j deve estar pronto para iniciar Os pr ximos dois cap tulos v o gui lo pela uso do svn o programa cliente de linha de comando do Subversion xxiii Cap tulo 1 Conceitos Fundamentais Este cap tulo uma breve e casual introdu o ao Subversion Se voc novo em controle de vers o este cap tulo definitivamente para voc N s come aremos com uma discus s o sobre os conceitos gerais de controle de vers o avan aremos para as id ias especifi cas por tr s do Subversion e mostraremos alguns exemplos simples do Subversion em uso Embora os exemplos neste cap tulo mostrem pessoas compartilhando cole es de c digo fonte de programas tenha em mente que o Subversion pode gerenciar qualquer tipo de cole o de arquivos ele n o est limitado a ajudar programadores O Reposit rio O Subversion um sistema centralizado de compartilhamento de informa o Em seu n cleo est um reposit rio que uma central de armazenamento de dados O reposit rio ar mazena infor
171. Por exemplo se algu m quisesse definir a vari vel LC TIME com o valor fr CA ent o os programas saberiam apresentar informa es de data e hora formatadas de acor do com a expectativa de um Canadense que fala Franc s E se algu m quisesse definir a vari vel LC MESSAGES com o valor zh Tw ent o os programas saberiam apresentar mensagens leg veis em Chin s Tradicional Configurar a vari vel LC ALL tem o efeito de modificar todas as vari veis de localidade para o mesmo valor O valor de LANG utilizado como um valor padr o para qualquer vari vel de localidade que est indefinida Para ver a lista de localidades dispon veis em um sistema Unix execute o comando locale a No Windows a configura o de localidade feita por meio do item Op es Regionais e de Idioma no painel de controle L voc poder ver e selecionar os valores das configu ra es individuais das localidades dispon veis e at mesmo personalizar a um n vel de detalhe enjoativo v rias das conven es de formata o de exibi o Uso de localidades do Subversion O cliente Subversion svn aplica a configura o de localidade atual de duas formas Pri meiro ele trata o valor da vari vel LC MESSAGES e tenta imprimir todas as mensagens no idioma especificado Por exemplo export LC MESSAGES de D svn help cat cat Gibt den Inhal Aufruf cat ZIEL R GI der angegebenen Dateien oder URLS aus DA
172. R password PASS no auth cach non interactive editor cmd EDITOR encoding ENC config dir DIR Exemplos Usar svn para excluir um arquivo de sua c pia de trabalho remove sua c pia local do ar quivo mas apenas faz o agendamento para que ele seja removido do reposit rio Quando voc submeter a altera o o arquivo exclu do efetivamente do reposit rio svn delete myfile D myfile svn commit m Deleted file myfile 218 Refer ncia Completa do Subversion Deleting myfile Transmitting file data Committed revision 14 Excluir uma URL no entanto imediato ent o voc deve informar tamb m uma mensa gem de log svn delet m Deleting file yourfile file tmp repos test yourfile Committed revision 15 Aqui est um exemplo de como for ar a exclus o de um arquivo que ja foi modificado lo calmente S svn delete over ther svn Attempting restricted operation for modified resource svn Use force to override this restriction svn over there has local modifications S svn delet force over ther D over there 219 Refer ncia Completa do Subversion Nome svn diff Exibe as diferen as entre duas revis es ou caminhos Sinopse diff c M r N M TARGET REV diff r N M old OLD TGT OLDREV new NEW TGT NEWREV PATH diff OLD URL OLDREV NEW URL NEWREV Des
173. RE LH 7 Este comportamento ocorre identicamente tanto em sistemas Unix quando em Windows Note entretanto que enquanto seu sistema operacional possa ter suporte para uma certa 179 Customizando sua Experi ncia com Subversion localidade o cliente do Subversion ainda pode n o estar h bil para falar com o idioma es pec fico A fim de produzir mensagens localizadas pessoas volunt rias podem fornecer tradu es para cada linguagem As tradu es s o escritas usando o pacote GNU gettext que resultam em m dulos de tradu o que terminam com a extens o mo no nome do ar quivo Por exemplo o arquivo de tradu o para o Alem o nomeado de mo Estes arqui vos de tradu o est o instalados em algum lugar em seu sistema No Unix eles normal mente ficam em usr share locale enquanto que no Windows eles s o frequente mente encontrados na pasta share locale na rea de instala o do Subversion Uma vez instalado um m dulo que cont m o nome do programa que fornece as tradu es Por exemplo o arquivo de mo pode vir a ser finalmente instalado como usr share locale de LC MESSAGES subversion mo AO navegar pelos arquivos mo instalados voc pode ver quais linguagens o cliente Subversion est h bil para falar A segunda forma na qual a localidade aplicada envolve como o svn interpreta suas en tradas O reposit rio armazena todos os caminhos nomes de arquivo e mensagens de log e
174. RL nas revis es N e M define as duas fontes a serem comparadas WCPATH o caminho na c pia de trabalho que ir o receber as altera es Se WCPATH for omitido ser assumido como valor padr o a menos que as fontes tenham nomes de base id nticos que correspondam a um arquivo dentro de neste caso as diferen as ser o aplicadas quele arquivo Diferentemente do svn diff o comando merge leva os diret rios anteriores de um arquivo em considera o ao executar uma opera o de mesclagem Isto muito importante quan do voc estiver juntando as altera es feitas de um ramo para outro e tiver renomeado um arquivo em um ramo mas n o em outro Nomes Alternativos Altera Nenhum C pia de trabalho Acessa o Reposit rio Op es Apenas se trabalhando com URLs revision r R change c REV non recursive quiet q force dry run diff3 cmd CMD extensions x ARG ignore ancestry 239 Refer ncia Completa do Subversion username USER password PASS no auth cach non interactive config dir DIR Exemplos Mescla um ramo de volta ao trunk assumindo que voc tem uma copia de trabalho de trunk e que o ramo tenha sido criado na revis o 250 svn merge r 250 HEAD http svn red bean com repos branches my branch myproj tiny txt myproj thhgttg txt myproj win txt myproj flo txt GGE G GU Se voc tiver feito a
175. S os n meros de revis o s o por arquivo Isso porque o CVS armazena seus da dos em arquivos RCS cada arquivo tem um arquivo RCS correspondente no reposit rio e o reposit rio organizado aproximadamente de acordo com a estrutura da rvore do seu projeto No Subversion o reposit rio parece um sistema de arquivos nico Cada submiss o resul ta em uma rvore de sistema de arquivos inteiramente nova em ess ncia o reposit rio um conjunto ordenado de rvores Cada uma dessas rvores rotulada com um n mero de revis o nico Quando algu m fala sobre a revis o 54 est falando sobre uma rvore em particular e indiretamente sobre a forma que o sistema de arquivos apresentava ap s a 54 submiss o Tecnicamente n o v lido falar sobre a revis o 5 de foo c Em vez disso diria se foo c como aparece na revis o 5 Tamb m seja cuidadoso ao fazer suposi es sobre a evolu o de um arquivo No CVS as revis es 5 e 6 de foo c s o sempre diferentes No Subversion mais prov vel que foo c n o tenha mudado entre as revis es 5 e 6 Similarmente no CVS um r tulo ou ramo uma anota o no arquivo ou na informa o de vers o para aquele arquivo individual enquanto no Subversion um r tulo ou ramo uma c pia de uma rvore inteira por conven o nos diret rios branches ou tags que aparecem no n vel superior do reposit rio ao lado de trunk No reposit rio como um todo muitas v
176. Se Harry e Sally estivessem realizando mudan as em um arquivo de texto Sally iria simplesmente atualizar sua c pia de trabalho recebendo as mudan as que Harry realizou No pior caso poss vel eles teriam modificado a mesma re gi o do arquivo e Sally teria que realizar uma adequada resolu o do conflito Mas estes n o s o arquivos de texto s o imagens bin rias E enquanto seja uma simples quest o de descrever o que seria esperado como resultado desta fus o de conte dos existe uma pequena chance preciosa de que qualquer software existente seja inteligente o suficiente para examinar a imagem que cada um dos artistas gr ficos se basearam para realizarem seu trabalho as mudan as que Harry fez e as mudan as que Sally faz e produzir uma imagem de um Mustang vermelho degradado com um p ra brisa trincado Obviamente as coias teriam sido mais simples se Harry e Sally tivessem sequenciado su as modifica es na imagem se digamos Harry aguardasse para desenhar seus trinca dos no p ra brisa no novo carro vermelho de Sally ou se Sally trocasse a cor de um carro cujo p ra brisa j estivesse trincado Como discutido em A Solu o Copy Mo dify Merge a maioria destes tipos de problemas desaparecer o totalmente quando existir uma perfeita comunica o entre Harry e Sally 7 Por m como um sistema de controle de vers o de fato uma forma de comunica o ter um software que facilita a a serializa o de esfor os n o
177. Se a origem ou destino da c pia for o reposit rio ou se for preciso buscar um dado n me ro de revis o da origem message m TEXT file F FILE revision r REV quiet q username USER password PASS no auth cach non interactive force log editor cmd EDITOR encoding ENC 216 Refer ncia Completa do Subversion config dir DIR Exemplos Copia um item para dentro de sua c pia de trabalho apenas agenda a c pia nada ocor re com o reposit rio at que voc submeta a altera o svn copy foo txt bar txt A bar txt svn status A bar txt Copia um item de sua c pia de trabalho para uma URL no reposit rio com submiss o imediata ent o voc deve informar tamb m uma mensagem de log svn copy near txt file tmp repos test far away txt m Remote copy Committed revision 8 Copia um item do reposit rio para sua c pia de trabalho apenas agenda a c pia nada ocorre com o reposit rio at que voc submeta a altera o Esta a maneira recomendada para ressuscitar um arquivo morto em seu re L posit rio S svn copy file tmp repos test far away near here A near here E finalmente copiando entre duas URLs svn copy file tmp repos test far away file tmp repos test over ther m Committed revision 9 Esta a forma mais f cil de rotular tag uma revis o em seu reposit rio apenas execute um s
178. Se voc familiarizado com XML este exatamente o subconjunto ASCII da sintaxe de um Nome XML 43 T picos Avan ados dificar propriedades em todo um conjunto de arquivos com um nico comando Por exem plo n s poder amos ter feito svn propset copyright c 2006 Red Bean Software calc property copyright set on calc Makefile property copyright set on calc button c property copyright set on calc integer c Toda esta adi o e altera o de propriedades n o realmente muito Util se voc n o pu der obter facilmente o valor armazenado da propriedade Ent o o programa svn disp e de dois subcomando para exibi o dos nomes e valores das propriedades armazenadas nos arquivos e diret rios O comando svn proplist vai listar os nomes das propriedades que existem naquele caminho Uma vez que voc saiba os nomes das propriedades do n vo c pode verificar seus valores individualmente usando svn propget Este comando mos trar dado um nome de propriedade e um caminho ou conjunto de caminhos o valor da propriedade para a sa da padr o svn proplist calc button c Properties on calc button c copyright license svn propget copyright calc button c c 2006 Red Bean Software H ainda uma varia o do comando proplist que lista tanto o nome quanto o valor de to das as propriedades Apenas informe a op o verbose v svn proplist v calc button c Properties on calc button c
179. Se voc gostar do resultado voc pode fazer o commit dele Se voc n o gostar do resultado voc pode simplesmente reverter as mudan as com o comando svn revert A sintaxe do comando svn merge lhe permite especificar os tr s argumentos necess rios de forma flex vel Veja aqui alguns exemplos svn merge http svn example com repos branch1 150 http svn example com repos branch2 212 my working copy S svn merge r 100 200 http svn example com repos trunk my working copy svn merge r 100 200 http svn example com repos trunk A primeira sintaxe usa explicitamente os tr s argumentos nomeando cada rvore na for ma URL REV e nomeando a c pia de trabalho de destino A segunda sintaxe pode ser usada como um atalho em situa es onde voc esteja comparando duas revis es distin tas de uma mesma URL A ultima sintaxe mostra como o argumento da c pia de trabalho de destino opcional se omitido assume como padr o o diret rio atual Melhores pr ticas sobre Fus o Rastreando Fus es manualmente Fundir modifica es parece simples mas na pr tica pode se tornar uma dor de cabe a O problema que se voc repetidamente fundir as modifica es de uma ramo com outro voc pode acidentalmente fundir a mesma modifica o duas vezes Quando isso ocorre algumas vezes as coisas v o funcionar corretamente Quando aplicando um patch em um arquivo Subversion verifica se o arquivo j possui aquelas modifica es e se t
180. Servidor svnserve um servidor especializado O programa svnserve um servidor leve capaz de falar com clientes via TCP IP usando um protocolo espec fico e robusto Os clientes contactam um servidor svnserve usando URLs que come am com o esquema svn OU svn ssh Esta se o vai explicar as diversas formas de se executar o svnserve como os clientes se autenticam para o servi dor e como configurar o controle de acesso apropriado aos seus reposit rios Invocando o Servidor H poucas maneiras distintas de se invocar o programa svnserve Executar o svnserve como um daemon independente aguardando por requisi es Fazer com que o daemon inetd do Unix dispare temporariamente o svnserve a cada vez que uma requisi o chegar numa dada porta Fazer com que o SSH execute um svnserve tempor rio sobre um t nel criptografado Executar o svnserve como um servi o do Windows svnserve como Daemon A op o mais f cil executar o svnserve como um daemon independente Use a op o d para isto svnserve d O Svnserve esta rodando agora ouvindo na porta 3690 Ao executar o svnserve no modo daemon voc pode usar as op es listen port e listen host para especificar a porta e o hostname exatos aos quais o servidor estar associado Uma vez que tenhamos iniciado o svnserve como mostrado acima isto torna todos os re posit rios do sistema dispon veis na rede Um cliente precis
181. So if you find yourself typing svnserv tunnel on the command line and wondering what to do next see Tunelamento sobre SSH tunnel user NAME Used in conjunction with the tunne1 option tells svnserve to assume that NAME is the authenticated user rather than the UID of the svnserve process Useful for users 304 Refer ncia Completa do Subversion wishing to share a single system account over SSH but maintaining separate commit identities threads T When running in daemon mode causes svnserve to spawn a thread instead of a pro cess for each connection e g for when running on Windows The svnserve process still backgrounds itself at startup time listen once X Causes svnserve to accept one connection on the svn port serve it and exit This op tion is mainly useful for debugging svnversion 305 Refer ncia Completa do Subversion Nome svnversion Summarize the local revision s of a working copy Sinopse svnversion OPTIONS WC PATH TRAIL URL Descri o svnversion is a program for summarizing the revision mixture of a working copy The re sultant revision number or revision range is written to standard output It s common to use this output in your build process when defining the version number of your program TRAIL URL if present is the trailing portion of the URL used to determine if wc PATH it self is switched detection of switches within Wc PATH d
182. _fs_root_t txn_root const char conflict_str Abre o reposit rio localizado em REPOS PATH gi INT ERR svn repos open amp repos repos_path pool Obt m um ponteiro para o objeto de sistema de arquivo armazenado em REPOS fs svn_repos_fs repos Pede ao sistema de arquivo para nos retornar a mais jovem revis o que existe atualmente A INT ERR svn f fs youngest rev amp youngest rev fs pool Inicia uma nova transa o que tem por base a YOUNGEST REV Nos estamos I menos prov veis de ter nossa submiss o rejeitada como conflitante se sempre tentarmos fazer nossas mudan as novamente em uma c pia da ltima imagem da rvore do sistema de arquivo 7 INT_ GI RR svn_fs_begin_txn amp txn fs youngest_rev pool Agora que temos iniciada uma nova transa o Subversion recupera um objeto ra z que representa esta transa o E7 INT_ERR svn_fs_txn_root amp txn_root txn pool Cria nosso novo diret rio sob a transa o ra z para o caminho NEW DIRECTORY nos INT ERR svn fs make dir txn root new directory pool Submete a transa o criando uma nova revis o do sistema de arquivo a qual inclui o caminho de nosso diret rio adicionado of err svn repos fs commit txn amp conflict str repos amp youngest rev txn pool if err Sem erro Excelente Imprime um breve relat rio de nosso s
183. a As transa es do Subversion s o maiores em escopo incluindo opera es de alto n vel como fazer modifica es em um conjunto de arquivos e diret rios os quais ser o armazenados como a pr xima revis o da rvore do sistema de arquivos Como se j n o fosse confuso o suficiente considere o fato de que o Subversion usa uma transa o de 187 Incorporando o Subversion banco de dados durante a cria o de uma transa o Subversion de modo que se a cria o da transa o do Subversion falhar o banco de dados ficar como se nunca tiv ssemos tentado esta cria o no primeiro local Felizmente para os usu rios da API de sistema de arquivos o suporte a transa o provido pelo sistema de banco de dados est quase totalmente escondido para exibi o como seria esperado de um esquema de bibliotecas devidamente modulariza das Apenas quando voc come a a procurar dentro da implementa o do pr prio sistema de arquivos que essas coisas come am a ficar vis veis ou interessantes A maioria das funcionalidades providas pela interface de sistema de arquivos lida com a es que ocorrem em caminhos de sistema de arquivos individuais Isto de fora do sis tema de arquivos o mecanismo prim rio para descrever e acessar as revis es individuais de arquivos e diret rios vem atrav s do uso de de caminhos como foo bar como se voc estivesse endere ando arquivos e diret rios atrav s de s
184. a des al m de copiar mover travar ou destravar arquivos cadaver http host repos dav repos gt 1s Listing collection repos succeeded Coll gt foobar O May 10 16 19 gt playwright el 2864 May 4 16 18 gt proofbypoem txt 1461 May 5 15 09 gt westcoast jpg 66737 May 5 15 09 dav repos gt put README Uploading README to repos README Progress gt 100 0 of 357 bytes succeeded dav repos gt get proofbypoem txt Downloading repos proofbypoem txt to proofbypoem txt Progress gt 100 0 of 1461 bytes succeeded DAV Explorer outro cliente WebDAV independente escrito em Java distribu do sob uma licen a livre ao estilo da do Apache e est dispon vel em http www ics uci edu webdav O DAV Explorer faz tudo o que o cadaver faz mas tem as vantagens de ser uma aplica o gr fica mais port vel e mais amig vel Tamb m foi um dos primeiros clientes a dar suporte ao novo protocolo de acesso WebDAV RFC 3744 Obviamente o suporte a ACL do DAV Explorer in til neste caso j que o mod dav svn n o d suporte a ele O fato de tanto o Cadaver quanto o DAV Explorer suportarem alguns comandos DeltaV particularmente tamb m igualmente in til uma vez que eles n o per mitem requisi es MKACTIVITY Mas de qualquer forma isso tamb m n o relevante es tamos assumindo que todos esses clientes trabalham normalmente com um reposit rio com autov
185. a 38 Termos de REVIS O ss ibssme sra duas ar ee er Dia Aa 38 Controle de Vers o com Subversion Datas de REVIS O si sunas T E dano eevee Aad cei aaa DO a 39 PrOpNC A ES srair erae cee teil E pena ORA EaD eta Aja End aa en Cena lo ni Se 40 Por que Propriedades eee arara 41 Manipulando Propriedades rasta 43 Propriedades e o Fluxo de Trabalho no Subversion ccccssseeeeeees 45 Defini o Autom tica de Propriedades i rererere nenne 47 Portabilidade de Arquivo ccccccececeeeeeeeeeeeeeeeeeeeeeeseeeeeeeseeeeeeessaneeeensaneees 47 Tipo de Conte do do Arquivo eira 48 Executabilidade de Arquivo err eeerarac aaa 49 Sequ ncia de Caracteres de Fim de Linha ccccseeeeceeeeeeeeaeeeees 49 Ignorando Itens N o Versionados irreais 51 Substitui o de Palavra Chave c cccceeceeeeeaeeceeeeeeeeeeeeaeaaeeneeeeeeeeeaeaaeaees 53 Travamento assa cms bere Raio clase DRE AR on E ai AOS bla Praia SUAS Sd AO Ras 57 Cand itaVvaSiss tsssiscieedatasreotsancheadeasderotenaaicevasaacrotsancheavtadduoogsaeahcodises 59 Descobrindo as travas cece ce eeee ee eeee ee eeeaeeeeaeeeeeeeeaaeeeeaeeesaeeeed 61 Quebrando e roubando travas iii 62 Comunica o de Travas ee eeeeeeeeeeeeeeeaaaaeeeeeeeeeeeeaeaaeeeeeeeees 64 Defini es Externas sisasiapasoo eal el a eet 65 Revis es Marcadoras e Revis e
186. a autentica o do usu rio Quando os usu rios passam as op es username password para o cliente eles ficam sur presos ao ver que elas nunca foram usadas ou seja novas revis es parecem ter sido submetidas anonimamen te 75 Cap tulo 4 Fundir e Ramificar sobre o Tronco que trabalha um cavalheiro Confucio Criar Ramos R tulos e Fundir s o conceitos comuns a quase todos os sistemas de con trole de Vers o Caso voc n o esteja familiarizado com estes conceitos n s oferecemos uma boa introdu o a estes nesse cap tulo Se voc j conhece estes conceitos ent o vo c vai achar interessante conhecer a maneira como o Subversion os implementa Criar Ramos um item fundamental para Controle de Vers o Se voc vai usar o Subver sion para gerenciar seus dados ent o essa uma funcionalidade da qual voc vai acaber dependendo Este cap tulo assume que voc j esteja familiarizado com os conceitos b sicos do Subversion Cap tulo 1 Conceitos Fundamentais O que um Ramo Suponha que o seu trabalho seja manter um documento de uma divis o de sua empresa um livro de anota es por exemplo Um dia uma outra divis o lhe pede este mesmo livro mas com alguns ajustes para eles uma vez que eles trabalham de uma forma um pouco diferente O que voc faz nessa situa o Voc faz o bvio faz uma segunda c pia do seu docu mento e come a a controlar as duas c pias separ
187. a c pia de trabalho para espelhar o ramo Em outras palavras se um usu rio sabe que o trabalho no ramo s deve acontecer sobre um subdiret rio espec fico eles usam svn switch para mover somente este subdiret rio para o ramo Ou algumas vezes os usu rios comutar o apenas um nico arquivo de tra balho para o ramo Dessa forma eles podem continuar a receber normalmente as atuali za es do trunk para a maior parte de sua c pia de trabalho mas as por es comutadas ficar o imunes a n o ser que algu m submeta uma mudan a em seu ramo Esta funcio nalidade adiciona uma completa nova dimens o ao conceito de uma c pia de trabalho mista podemos ter n o apenas c pias de trabalho que possuem uma mistura de revi s es de trabalho mas tamb m uma mistura de locais de reposit rio Se sua c pia de trabalho cont m um n mero de sub rvores comutadas de diferentes lo cais do reposit rio ela continua a funcionar normalmente Quando voc atualiza voc re ceber as diferen as em cada sub rvore apropriadamente Quando voc submete suas mudan as locais ainda ser o aplicadas como uma nica e at mica mudan a para o repo sit rio Note que enquanto est tudo certo para sua c pia de trabalho refletir uma mistura de lo cais do reposit rio estes locais devem estar todos dentro do mesmo reposit rio Os repo sit rios do Subversion ainda n o s o capazes de comunicarem entre si esta uma funci onalidad
188. a com Sally ele poder tranquilamente salvar o arquivo fundido no repo sit rio O modelo copy modify merge pode soar um pouco ca tico mas na pr tica ele funciona de forma bastante suave Os usu rios podem trabalhar em paralelo nunca esperando uns pelos outros Quando eles trabalham nos mesmos arquivos verifica se que a maioria de suas altera es simult neas n o se sobrep e afinal conflitos n o s o muito frequentes E a quantidade de tempo que eles levam para resolver os conflitos geralmente muito me nor que o tempo perdido no sistema de locking No fim tudo se reduz a um fator cr tico a comunica o entre os usu rios Quando os usu rios se comunicam mal tanto conflitos sintaticos como sem nticos aumentam Nenhum sistema pode for ar os usu rios a se comunicarem perfeitamente e nenhum sistema pode detectar conflitos sem nticos Portanto n o h como confiar nessa falsa sensa o de se guran a de que o sistema de locking vai prevenir conflitos na pr tica o lock parece inibir a produtividade mais do que qualquer outra coisa Quando Lock Necess rio Conceitos Fundamentais Enquanto o modelo lock modify unlock geralmente considerado prejudicial cola bora o ainda h momentos em que ele apropriado O modelo copy modify merge baseado no pressuposto de que os arquivos s o contextualmente fund veis isto que os arquivos no reposit rio sejam majoritaria mente te
189. a do Subversion svn propget PROPNAME TARGET REV svn propget PROPNAME revprop r REV URL Descri o Exibe o valor de uma propriedade de arquivos diret rios ou revis es A primeira forma exibe a propriedade versionada de um item ou itens em sua c pia de trabalho enquanto que a segunda exibe propriedades remotas n o versionadas em uma revis o de reposit rio Veja Propriedades para mais informa es sobre propriedades Nomes Alternativos Altera pget pg C pia de trabalho reposit rio apenas se executando sobre uma URL Acessa o Reposit rio Op es Apenas se executando sobre uma URL recursive R revision r REV revprop strict username USER password PASS no auth cach non interactive config dir DIR Exemplos Examina uma propriedade de um arquivo em sua c pia de trabalho svn propget svn keywords foo c Author Date Rev O mesmo para revis es de propriedades svn propget svn log revprop r 20 Began journal 247 Refer ncia Completa do Subversion Nome svn proplist Lista todas as propriedades Sinopse svn proplist TARGET REV svn proplist revprop r REV TARGET Descri o Lista todas as propriedades de arquivos diret rios ou revis es A primeira forma lista pro priedades versionadas em sua c pia de trabalho enquanto que a segunda lista proprieda d
190. a especificar uma URL com um caminho absoluto do reposit rio Por exemplo se um reposit rio estiver localizado em usr local repositories project1 ent o um cliente deveria acess lo com svn host example com usr local repositories project1 Para aumentar a seguran a voc pode passar a op o r para o svnserve o que limita a exportar ape nas os reposit rios sob o caminho especificado Por exemplo svnserve d r usr local repositories O uso da op o r efetivamente modifica o local que o programa considera como a raiz do sistema de arquivos remoto Os clientes ent o usam URLs com aquela parte do cami nho removida tornando as mais curtas e bem menos informativas svn checkout svn host example com projectl svnserve atrav s do inetd Se voc quiser que o inetd execute o processo ent o voc precisa passar a op o i 145 Configura o do Servidor inetd No exemplo mostramos a sa da da execu o do comando svnserve i na li nha de comando mas note que atualmente n o assim que se inicia o daemon leia os par grafos depois do exemplo para saber como configurar o inetd para iniciar o svnserve svnserve i success 1 2 ANONYMOUS edit pipeline Quando invocado com a op o inetd o svnserve tenta se comunicar com um cliente Subversion por meio do stdin e stdout usando um protocolo espec fico Este o comporta mento padr o para um programa sendo executado atrav
191. a ferramenta para examinar a sa da dos registros de log usando grep ou talvez com uma busca incremental em um editor cd parent dir svn log v r808 joe 2003 12 26 14 29 40 0600 Fri 26 Dec 2003 3 lines Changed paths D calc trunk real c M calc trunk integer c Added fast fourier transform functions to integer c Removed real c because code now in double c No exemplo estamos assumindo que voc est procurando um arquivo exclu do chamado real c Olhando os logs de um diret rio pai voc percebeu que este arquivo foi exclu do na revis o 808 Portanto a ltima vers o do arquivo existia na revis o imediatamente an terior a essa Conclus o voc quer ressucitar o caminho calc trunk real c a partir da revis o 807 Esta foi a parte dif cil a pesquisa Agora que voc sabe o que voc quer restaurar voc tem duas diferentes escolhas Uma op o usar svn merge para aplicar a revis o 808 ao contr rio N s j falamos sobre como desfazer modifica es veja Desfazendo Altera es Isto teria o efeito de re adicionar o arquivo real c como uma modifica o local O arquivo deveria ser agendado para adi o e ap s ser submetido o arquivo deve estar novamente presente na revis o HEAD Neste exemplo em particular no entanto esta provavelmente n o a melhor estrat gia A aplica o reversa da revis o 808 n o apenas agenda real c para adi o mas a mensa gem de lo
192. a geral os nomes e valores das propriedades podem ser quaisquer coi sas que voc queira com a restri o de que os nomes devem ser texto leg vel por huma nos E a melhor parte sobre estas propriedades que elas tamb m s o versionadas tal como o conte do textual de seus arquivos Voc pode modificar submeter e reverter alte ra es em propriedades t o facilmente como em qualquer altera o no conte do de arqui vos E o envio e recebimento das modifica es em propriedades ocorrem como parte de suas opera es de submiss o commit e atualiza o update voc n o tem que mudar seus procedimentos b sicos para utiliz los O Subversion reservou um conjunto de propriedades cujos nomes come am com svn para si pr prio Ainda que haja apenas um conjunto til de tais pro priedades em uso hoje em dia voc deve evitar criar suas propriedades espe c ficas com nomes que comecem com este prefixo Do contr rio voc corre o risco de que uma vers o futura do Subversion aumente seu suporte a recur sos ou comportamentos a partir de uma propriedade de mesmo nome mas talvez com um significado completamente diferente Propriedades aparecem em qualquer parte no Subversion tamb m Da mesma maneira que arquivos e diret rios podem ter nomes de propriedades arbitr rios e valores anexados a eles cada revis o como um todo pode ter propriedades arbitr rias anexadas a si pr pria As mesmas restri es se aplicam mdash nomes
193. a pol tica de controle de acesso AuthzSVNAccessFile caminho do arquivo access apenas usu rios autenticados podem acessar o reposit rio Require valid user como autenticar um usu rio AuthType Basic AuthName Subversion repository AuthUserFile caminho do arquivo users lt Location gt 161 Configura o do Servidor Um terceiro padr o bem popular permitir uma combina o de acesso autenticado e an nimo Por exemplo muitos administradores querem permitir usu rios an nimos a ler cer tos diret rios do reposit rio mas querem que apenas usu rios autenticados leiam ou es crevam em reas mais sens veis Nesta configura o todos os usu rios come am aces sando o reposit rio anonimamente Se sua pol tica de controle de acesso solicitar um no me de usu rio real em algum ponto o Apache vai solicitar autentica o para o cliente Pa ra fazer isto voc usa ambas as diretivas Satisfy Any Require valid user em conjunto Exemplo 6 3 Um exemplo de configura o para acesso misto autenticado an nimo lt Location repos gt DAV svn SVNParentPath usr local svn nossa pol tica de controle de acesso AuthzSVNAccessFile caminho do arquivo access tente o acesso an nimo primeiro ajuste para autentica o real se necess rio Satisfy Any Require valid user como autenticar um usu rio AuthType Basic AuthName Subversion repository AuthUserFile caminho do arquivo users lt Loca
194. a qual adiciona a funcionalidade de disparo de gancho neste caso svn repos fs commit txn Para mais informa es em rela o aos ganchos de re posit rio Subversion veja Implementando Ganchos de Reposit rio Agora vamos trocar as linguagens Exemplo 8 2 Usando a Camada de Reposit rio com Python um exemplo de programa que usa os v nculos Python SWIG do Subversion pa ra recursivamente rastrear a mais jovem revis o do reposit rio e imprimir os v rios cami nhos descobertos durante o rastreamento Exemplo 8 2 Usando a Camada de Reposit rio com Python usr bin python Rastrear um reposit rio imprimindo os nomes de caminho dos objetos versiona import sys import os path import svn fs svn core svn repos def crawl filesystem dir root directory Rastreia recursivamente DIRECTORY sob ROOT no sistema de arquivo e reto uma lista de todos os caminhos no mesmo nivel ou baixo de DIRECTORY Imprime o nome deste caminho print directory Obt m as entradas de diret rio para DIRECTORY entries svn fs svn fs dir entries root directory Navega sobre as entradas names entries keys for name in names Calcula o caminho completo da entrada full_path directory name Se a entrada um diret rio seja recursivo A recurs o retornar uma lista com a entrada e todos seus filhos os quais adicionamos em nossa lista de caminhos que estamos correndo
195. aV interoperar com clientes Web DAV ordin rios que n o entendam versionamento Pelo fato de que muitos sistemas operacionais j t m clientes WebDAV integrados o caso de uso para este recurso pode ser incrivelmente interessante a administradores que este jam trabalhando com usu rios n o t cnicos imagine um escrit rio de usu rios comuns executando Microsoft Windows ou Mac OS Cada usu rio monta o reposit rio Subversi on o qual aparece como uma pasta de rede normal Eles usam a pasta compartilhada co mo est o acostumados abrem arquivos fazem modifica es salvam Enquanto isso o servidor est automaticamente versionando tudo Qualquer administrador ou usu rio com conhecimento adequado ainda pode usar um cliente Subversion para pesquisar num his t rico e obter vers es mais antigas dos dados Este cen rio n o fict cio real e funciona sendo o Subversion vers o 1 2 ou posterior Para ativar o autoversionamento no mod dav svn use a diretiva SVNAutoversioning dentro do bloco Location no httpd conf mais ou menos assim lt Location repos gt DAV svn SVNPath path to repository SVNAutoversioning on lt Location gt 331 WebDAV e Autoversionamento Quando o SVNAutoversioning est ativa requisi es de escrita a partir de clientes Web DAV resultam em submiss es autom ticas Uma mensagem de log gen rica gerada au tomaticamente e anexada a cada revis o Antes de ativar este r
196. acilidades Extras Cobrimos a maior parte das op es de autentica o e autoriza o para o Apache e o mod dav svn Mas h alguns outros poucos bons recursos que o Apache prov Navega o de Reposit rio Um dos mais teis benef cios de uma configura o do Apache WebDAV para seu reposi t rio Subversion que as revis es mais recentes de seus arquivos e diret rios sob contro le de vers o ficam imediatamente dispon veis para visualiza o por meio de um navega dor web comum Como o Subversion usa URLs para identificar recursos sob controle de vers o estas URLs usadas para acesso ao reposit rio baseado em HTTP podem ser digi tadas diretamente num navegador Web Seu navegador vai emitir uma requisi o HTTP GET para aquela URL e se aquela URL representar um diret rio ou arquivo sobre controle de vers o o mod dav svn ir responder com uma listagem de diret rio ou com o conte do do arquivo J que as URLs n o cont m nenhuma informa o sobre quais vers es do recurso voc quer ver o mod dav svn sempre ir responder com a vers o mais recente Esta funciona lidade tem um maravilhoso efeito colateral que a possibilidade de informar URLs do Sub version a seus parceiros como refer ncias aos documentos e estas URLs sempre v o apontar para a vers o mais recente do documento E claro voc ainda pode usar URLs como hiperlinks em outros web sites tamb m Posso ver revis es antigas Com um navegador
197. adamente Quando cada departamento lhe requisitar altera es voc as realizar em um c pia ou na outra Em raros casos voc vai precisar fazer altera es nos dois documentos Um exemplo se voc encontrar um erro em um dos arquivos muito prov vel que este erro exista na se gunda c pia A final os dois documentos s o quase id nticos eles t m apenas pequenas diferen as em locais espec ficos Este o conceito b sico de Ramo isto uma linha de desenvolvimento que existe inde pendente de outra linha e ainda partilham um hist rico em comum se voc olhar para tr s na linha tempo Um Ramo sempre se inicia como c pia de outra coisa e segue rumo pr prio a partir desse ponto gerando seu pr prio hist rico veja Figura 4 1 Ramos de desenvolvimento Figura 4 1 Ramos de desenvolvimento 3rd branch 1st branch Original line of development 2nd branch time O O Subversion tem comandos para ajudar a controlar Ramos paralelos de um arquivo ou diret rio Ele permite voc criar ramos copiando seus dados e ainda lembra que as c pias t m rela o entre si Ainda poss vel duplicar c pias de um ramo para outro Finalmente ele pode fazer com que partes de sua c pia de trabalho reflitam ramos diferentes assim 76 Fundir e Ramificar voc pode misturar e combinar diferentes linhas de desenvolvimento no seu trabalho de dia a dia Usando Ramos At aqui voc j deve saber
198. aded from original rev 1 gt gt gt lt lt lt Started new txn based on original revision 2 editing path A mu done editing path A D G rho done Committed new rev 2 loaded from original rev 2 gt gt gt 127 Administra o do Reposit rio lt lt lt Started new txn based on original revision 25 editing path A D gamma done SSS Committed new rev 25 loaded from original rev 25 gt gt gt lt lt lt Started new txn based on original revision 26 adding path A Z zeta done editing path A mu done qse entes Committed new rev 26 loaded from original rev 26 gt gt gt The result of a load is new revisions added to a repository the same thing you get by ma king commits against that repository from a regular Subversion client And just as in a com mit you can use hook programs to perform actions before and after each of the commits made during a load process By passing the use pre commit hook and use post commit hook options to svnadmin load you can instruct Subversion to execute the pre commit and post commit hook programs respectively for each loaded re vision You might use these for example to ensure that loaded revisions pass through the same validation steps that regular commits pass through Of course you should use these options with care if your post commit hook sends emails to a mailing list for each new commit
199. adu o ccceeeeeeceeeeeeeeeeeeeeeeeaeaaeeeeeeeeeeeaeaaaeees 328 M dulos sob Controle de Vers o eretas 328 AUtentiGaGao esris oba ccd he cszee dade do Qu nora SR Rena Pads ao Ana SESI Ras ne S 329 Convertendo um Reposit rio de CVS para Subversion 329 C WebDAV e Autoversionament cccccececeeeeeeeeeeeeeeeeeeaeeaeeeeeeeeeaeaaaaneeeeeees 330 O que WebDAV is ee aeee Ea aa aa anna AASA 330 Autoversionamento ere 331 Interoperabilidade com Softwares Clientes ii eenn rn rere rr rennene 332 Aplica es WebDAV Independentes 334 Extens es WebDAV para gerenciadores de arquivos 335 Implementa es de sistemas de arquivos WebDAV 337 D Ferramentas de Terceiros serrie isiyrosisri keni retiron kn EnA KEI EENKEER S RIETEN enk 339 COD YM A E A 340 Indice Remissivo oria aa nia aa ayan aa e Miler ade 345 vii Lista de Figuras 1 Arquitetura do Subversion ahdni raaraa anana xxi 1 1 Um t pico sistema cliente servidor eee eeeeeeeeeeeeeeaeaaeeeeeeeeeeeeaeaaes 1 1 2 O problema para evitar tees aa ee eeeeeeeeeeeeaaaaeeeeeeeeeeeeaeaaeaees 2 1 3 A solu o lock modify UNlOCK serras eee 3 1 4 A solu o copy modify merge serranas aerea 4 1 5 A solu o copy modify merge continuando eeee eee eeeeeeeeeeeeenees 5 1 6 O Sist
200. aebberestausees xvii Agradecimentos de Ben Collins Sussman ssec xvii Agradecimentos de Brian W Fitzpatrick xvii Agradecimentos de C Michael Pilato ereenn xviii O Que o Subversion ii eerrar aeee araa nana rraa aeee area nana ennen nnn xviii Hist rico do Subversion ee eeeeeeeeeeeeeeaeaaeeeeeeeeeeeeeeaaaaneneeeees xix Caracter sticas do Subversion errar XX Arquitetura do Subversion siri rranaaaaaaa xxi Componentes do Subversion ienes xxii 1 Conceitos Fundamentais nean ei aaiae NaN a Laaa 1 REDOSILONO EE E E O EE A A UR E EEA 1 Modelos de Versionamento s sssssesrrseerrsnssrrrrennrnnnennnnuennnnnnnnnnuannnnnnnnnnaanna 1 O Problema do Compartilhamento de Arquivos nne 2 A Solu o Lock Modify Unlock raras 3 A Solu o Copy Modify Merge araras 4 Subversion em A o ice ea eeeeeeeeeeaaaaaaeeeeeeeeeeaeaaaaees 7 URLs do Reposit rio Subversion ear 7 C pias de Trabalho ou C pias Locais is 8 REVISO S ist eira ndo Seis nai DE ERA cet radiante Ba 11 Como as C pias de Trabalho Acompanham o Reposit rio 13 Revis es Locais Mistas ee eiia eriin een E ia aA a Ea 14 SUMANG sarase r eo er en ee dama denis penha anan s di EEEn EErEE ES 15 ERNE E ea EEE EAE E T E nididadveevadhedeat A avtanvavectendidaaieavagees 16 L eE A
201. ai o termo DeltaV Clientes e servidores WebDAV DeltaV quase sempre s o apenas chamados de programas DeltaV uma vez que DeltaV implica na exist ncia de WebDAV b sico O padr o WebDAV original tem sido largamente usado com sucesso Cada sistema ope racional de computadores modernos tem uma implementa o interna de um cliente Web DAV mais detalhes a seguir e diversas aplica es independentes populares tamb m s o capazes de se comunicar em WebDAV como o Microsoft Office Dreamweaver e Photoshop para relacionar apenas algumas No lado do servidor o servidor web Apache tem capacidade de oferecer servi os WebDAV desde 1998 e considerado o padr o open source de facto H outros servidores WebDAV dispon veis incluindo o pr prio IIS da Microsoft J o DeltaV infelizmente n o tem sido t o bem sucedido muito dif cil de encontrar cli entes ou servidores DeltaV Os poucos que existem s o produtos comerciais relativamen te desconhecidos e assim muito dif cil testar interoperabilidade N o totalmente claro o porqu de que o DeltaV permanece estagnado Alguns argumentam apenas que a espe cifica o muito complexa j outros dizem que apesar de os recursos do WebDAV terem apelo maci o ao menos para usu rios t cnicos que apreciem compartilhamento de arqui vos em rede recursos de controle de vers o n o s o interessantes ou mesmo necess ri os para a maioria dos usu rios Finalmente alg
202. ais recente do r eposit rio com aquela data e ent o continua a opera o usando o n mero de revis o obtido svn log r 2006 11 28 r12 ira 2006 11 27 12 31 51 0600 Mon 27 Nov 2006 6 lines O Subversion esta um dia adiantado Se voc especificar uma nica data como uma revis o sem especificar uma hora do dia por exemplo 2006 11 27 voc pode pensar que o Subversion deveria dar a voc a ltima revis o que tivesse ocorrido em 27 de novembro Entretanto voc vai obter uma revis o do dia 26 ou mesmo anterior a isso Lembre se de que o Subver sion vai procurar a revis o do reposit rio mais recente que a da data que voc infor mou Se voc informar uma data sem a parte de hor rio como 2006 11 27 o Sub version assume um hor rio de 00 00 00 ent o procurar pela revis o mais recente n o vai retornar nada do dia 27 Se voc quiser incluir o dia 27 em sua busca voc pode tanto especificar o dia 27 com o hor rio 2006 11 27 23 59 ou apenas especificar o pr ximo dia 2006 11 28 Voc tamb m pode usar intervalos de datas O Subversion vai encontrar todas as revis es entre as datas inclusive svn log r 2006 11 20 2006 11 29 o Uma vez que a data e hor rio timestamp de uma revis o armazenada co mo uma propriedade da revis o n o versionada e pass vel de altera o veja Propriedades essas informa es de data e hor rio podem ser mod
203. al include quando voc constr i e instala o Subversion a partir dos fontes Estes cabe alhos repre sentam o conjunto das fun es e tipos que s o acess veis pelos usu rios das bibliotecas do Subversion A comunidade de desenvolvedores do Subversion meticulosa em garan tir que a API p blica esteja bem documentada refere se diretamente aos arquivos de ca be alho para esta documenta o Ao examinar os arquivos de cabe alho p blicos a primeira coisa que voc pode perceber que os tipos de dado e fun es do Subversion possuem um espa o de nomes protegi dos Isto cada nome de s mbolo p blico do Subversion inicia com svn seguido por um c digo curto para a biblioteca na qual o s mbolo est definido como wc client fs etc seguido por um nico sublinhado e ent o o restante do nome do s mbolo As fun es semi p blicas usadas entre os arquivos fonte de uma dada biblioteca mas n o por c digo fora desta biblioteca e encontrada dentro de seus pr prios diret rios diferem des te esquema de nomea o em que em vez de um nico sublinhado depois do c digo da biblioteca elas usam um sublinhado duplo __ As fun es que s o privadas a um dado arquivo fonte n o possuem prefixa o especial e s o declaradas como static Eviden temente um compilador n o est interessado nestas conven es de nomea o mas elas ajudam esclarecer o escopo de uma dada fun o ou tipo de dado Uma outra boa font
204. ally rw Agora Sally pode escrever no subdiret rio testing do ramo mas ainda continua tendo acesso somente leitura a outras partes Harry no entanto continua a ter acesso completo de leitura escrita ao ramo inteiro Tamb m poss vel negar permiss o a alguns usu rios atrav s das regras de heran a re movendo o valor da vari vel do nome do usu rio calc branches calc bug 142 harry rw sally calc branches calc bug 142 secret harry Neste exemplo Harry tem acesso completo leitura escrita toda a rvore bug 142 mas n o tem absolutamente nenhum acesso em todo o subdiret rio secret dentro dela O que voc deve lembrar que a correspond ncia sempre feita com os caminhos mais espec ficos primeiro O servidor tenta achar uma ocorr ncia com o pr prio caminho ent o depois com o caminho do diret rio pai e depois com o pai deste e assim por diante O efeito em rede que mencionando um caminho espec fico no arquivo de acesso sempre ir sobrescrever qualquer permiss o herdada dos diret rios pais Por padr o ningu m tem acesso ao reposit rio como um todo Isto significa que se voc est iniciando com um arquivo vazio voc provavelmente quer pelo menos dar permiss o 168 Configura o do Servidor de leitura a todos os usu rios na raiz do reposit rio Voc pode fazer isso usando a vari vel asterisco o que quer dizer todos os usu rios Esta uma configu
205. ally Any repositories created using an svnadmin which is compiled against Berkeley DB version 4 2 or greater will be configu red for this automatic log file removal If you don t want this feature enabled simply pass the bdb log keep option to the svnadmin create command If you forget to do this or change your mind at a later time simply edit the DB CONFIG file found in your repository s db directory comment out the line which contains the set_flags DB_LOG_AUTOREMOVE 124 Administra o do Reposit rio directive and then run svnadmin recover on your repository to force the configuration changes to take effect See Berkeley DB Configuration for more information about data base configuration Without some sort of automatic log file removal in place log files will accumulate as you use your repository This is actually somewhat of a feature of the database system you should be able to recreate your entire database using nothing but the log files so these fi les can be useful for catastrophic database recovery But typically you ll want to archive the log files that are no longer in use by Berkeley DB and then remove them from disk to conserve space Use the svnadmin list unused dblogs command to list the unused log files svnadmin list unused dblogs path to repos path to repos log 0000000031 path to repos log 0000000032 path to repos log 0000000033 rm svnadmin list unused dblogs path to re
206. almente h a quest o sobre o qu o sincronizado se deve manter um ramo de novos recursos com o tronco conforme o trabalho no c digo for avan ando Como j mencionado anteriormente h um grande risco de se permanecer trabalhando em um ramo por sema nas ou meses modifica es no tronco podem continuar a acontecer at o ponto em que as duas linhas de desenvolvimento possam diferir tanto a ponto de que realizar a fus o do ramo de volta para o tronco possa se tornar um grande pesadelo A melhor maneira de evitar essa situa o regularmente mesclar as altera es do tronco para o ramo em desenvolvimento Defina uma pol tica uma vez por semana realize a fu s o das altera es da ltima semana feitas no tronco para seu ramo Tome cuidado ao fa zer isto ser necess rio controle manual nas fus es visando evitar o problema de se reali zar repetidas fus es como descrito em Rastreando Fus es manualmente Voc preci sar escrever cuidadosamente suas mensagens de log detalhando quais intervalos de re vis o j foram mesclados como demonstrado em Mesclando um Ramo Inteiro para Ou tro Pode parecer assustador mas atualmente algo muito f cil de se fazer Em algum ponto voc estar pronto para fazer a fus o de seu ramo sincronizado de re cursos de volta para o tronco Para fazer isto comece fazendo uma ltima fus o das lti mas altera es presentes no tronco para seu ramo Ao terminar as
207. altera es acidentalmente em sua c pia de trabalho o svn revert requer que voc informe pelo menos um alvo 255 Refer ncia Completa do Subversion Nome svn status Exibe informa o sobre o estado de arquivos e diret rios na c pia de traba lho Sinopse svn status PATH Descri o Exibe informa o sobre o estado de arquivos e diret rios na c pia de trabalho Sem argu mentos o comando exibe apenas os itens modificados localmente sem acesso ao reposi t rio Com show updates ele adiciona informa o sobre a revis o de trabalho e in forma es defasadas de servidor Com verbose exibe informa es completas sobre revis o de cada item As primeiras seis colunas na sa da t m um caractere de largura cada e cada coluna lhe d informa o sobre diferentes aspectos de cada item na c pia de trabalho A primeira coluna indica que um item foi adicionado removido ou ent o alterado Sem modifica es A O item foi agendado para adi o D O item foi agendado para remo o dele o M O item esta sendo modificado R O item foi substitu do em sua c pia de trabalho Isto significa que o arquivo foi agen dado para remo o e ent o um novo arquivo com o mesmo nome foi agendado para adi o em seu lugar C O conte do ao contr rio das propriedades do item entra em conflito com as atualiza es recebidas do reposit rio De O item esta presente devido a uma def
208. amificado para vendors with fix e voc gostaria de trocar sua c pia de trabalho para esse ramo svn switch http svn red bean com repos branches vendors with fix myproj foo txt myproj bar txt myproj baz c myproj qux c Gaqcqn 260 Refer ncia Completa do Subversion Updated to revision 31 A para trocar de volta apenas informa a URL para o local no reposit rio a partir do qual voc originalmente obteve sua c pia de trabalho svn switch http svn red bean com repos trunk vendors U myproj foo txt U myproj bar txt U myproj baz c U myproj qux c Updated to revision 31 Voc pode apenas trocar parte de sua c pia de trabalho para um ramo se vo iy c nao quiser trocar toda a sua c pia de trabalho Algumas vezes um administrador pode mudar a localiza o base de seu reposit rio em outras palavras o conte do do reposit rio n o muda mas a URL principal que d acesso raiz do reposit rio sim Por exemplo o nome do host pode mudar o esquema da URL pode mudar ou qualquer parte da URL relacionada ao reposit rio em si pode mudar Ao inv s de obter check out uma nova c pia de trabalho voc pode fazer com que o co mando svn switch reescreva os come os de todas as URLs em sua c pia de trabalho Use a op o relocate para fazer a substitui o Nenhum conte do de arquivo mo dificado nem sequer o reposit rio contactado E semelhante a executar um script em Perl sobre os
209. aminhos ignor xternals Diz para o Subversion ignorar defini es externas e c pias de trabalho externas ge renciadas por elas incremental 203 Refer ncia Completa do Subversion Exibe sa da em um formado adequado para concatena o limit NUM Exibe apenas as primeiras NUM mensagens de log message m MESSAGE Indica que voc ir especificar seja uma mensagem de log ou seja um coment rio de uma trava na linha de comando depois desta op o Por exemplo svn commit m Eles n o fazem isso no domingo new ARG Utiliza ARG como objeto alvo novo para uso com svn diff no auth cach Evita cache de informa o de autentica o p ex nome de usu rio e senha nos dire t rios administrativos do Subversion no auto props Desabilita auto props sobrescrevendo a diretiva enable auto props no arquivo config no diff added Evita que o Subversion exiba diferen as para arquivos adicionados O comportamento padr o ao adicionar um arquivo que o svn diff exiba as mesmas diferen as que vo c veria se tivesse adicionado todo o conte do a um arquivo vazio existente no diff deleted Evita que o Subversion exiba diferen as para arquivos exclu dos O comportamento padr o ao remover um arquivo que o svn diff exiba as mesmas diferen as que voc veria se tivesse mantido o arquivo mas removido todo o seu conte do no ilgnore Mostra arquivos na listagem de status qu
210. amped with the time as of that revision s creation Also Subversion s underlying repository access in terfaces don t provide a mechanism for setting arbitrary revision properties as part of a commit So svnsync follows up with an immediate series of property modifications which copy all the revision properties found for that revision in the source repository into the tar get repository This also has the effect of fixing the author and datestamp of the revision to match that of the source repository 13Be forewarned that while it will take only a few seconds for the average reader to parse this paragraph and the sample output which follows it the actual time required to complete such a mirroring operation is shall we say quite a bit longer 136 Administra o do Reposit rio Also noteworthy is that svnsync performs careful bookkeeping that allows it to be safely interrupted and restarted without ruining the integrity of the mirrored data If a network glitch occurs while mirroring a repository simply repeat the svnsync synchronize com mand and it will happily pick up right where it left off In fact as new revisions appear in the source repository this is exactly what you to do in order to keep your mirror up to date There is however one bit of inelegance in the process Because Subversion revision pro perties can be changed at any time throughout the lifetime of the repository and don t lea ve an audit trail that indicates
211. apesar de n o terem qualquer interesse no assunto Voc sabe tem uns que dizem Voc escreveu um livro e ent o quando voc diz que um livro de computador eles te olham torto Agrade o aos meus amigos mais pr ximos que me fazem um rico rico homem N o me olhem assim voc s sabem quem s o Agrade o aos meus pais pela minha perfeita forma o b sica e pelos inacredit veis con selhos Agrade o ao meu filho pela oportunidade de passar isto adiante Agradecimentos de Brian W Fitzpatrick Oh e agradecemos ao Karl por ter dedicado muito trabalho ao escrever este livro sozinho xvii Pref cio Um grande obrigado minha esposa Marie por sua inacredit vel compreens o apoio e acima de tudo paci ncia Obrigado ao meu irm o Eric quem primeiro me apresentou programa o voltada para UNIX Agrade o minha m e e minha av por seu apoio sem falar nas longas f rias de Natal quando eu chegava em casa e mergulhava minha cabe a no laptop para trabalhar no livro Mike e Ben foi um prazer trabalhar com voc s neste livro Heck um prazer trabalhar com voc nesta obra Para todos da comunidade Subversion e a Apache Software Foundation agrade o por me receberem N o h um dia onde eu n o aprenda algo com pelo menos um de voc s Finalmente agrade o ao meu av que sempre me disse Liberdade igual responsabili dade Eu n o poderia estar mais de acordo Agradecimentos de C
212. ar como a propriet ria da trava nem ela possui o sinal de trava Mas quando ela passa force OS requisitos de autentica o e autoriza o s o ignorados e a trava remota agora est quebrada Simplesmente quebrar uma trava pode n o ser suficiente No exemplo atual Sally pode n o somente querer quebrar a trava esquecida a longo prazo por Harry mas tamb m re travar o arquivo para seu pr prio uso Ela pode realizar isto executando svn unlock force e ent o svn lock logo em seguida mas existe uma pequena chance de que outra pessoa possa travar o arquivo entre os dois comandos Uma coisa mais simples roubar a trava que envolve quebrar e retravar o arquivo em um passo at mico Para fazer isto Sally passa a op o force para svn lock svn lock raisin jpg svn Lock request failed 423 Locked http svn example com svn lock force raisin jpg raisin jpg locked by user sally 63 T picos Avan ados Em qualquer caso se a trava quebrada ou roubada Harry ter uma surpresa A c pia de trabalho de Harry ainda cont m o sinal original da trava mas esta trava n o existe mais O sinal da trava est agora extinto A trava representada pelo sinal de trava ou ter sido quebrada n o est mais no reposit rio ou roubada substitu da por uma trava dife rente De qualquer forma Harry pode ver isto pedindo para svn status verificar o reposi t rio svn status K raisin jpg svn status u B
213. ar os dados baixados Finalmente um padr o surgiu para entre outras coisas descrever o conte do de um fluxo de dados Em 1996 a RFC2045 foi publicada a primeira de cinco RFC s des Voc acha que foi complicado Durante este mesmo per odo o WordPerfect tamb m usou DOC como ex tens o para seu formato de arquivo propriet rio 48 T picos Avan ados crevendo o MIME Esta RFC descreve o conceito de tipos e subtipos de m dia e re comenda uma sintaxe para a representa o destes tipos Hoje os tipos de m dia Ml ME ou tipos MIME sao usados quase que universalmente em todas as aplica es de e mail servidores Web e outros softwares como o mecanismo de fato para esclarecer a confus o do conte do de arquivo Por exemplo um dos benef cios que o Subversion tipicamente fornece a fus o contextu al baseada nas linhas das mudan as recebidas do servidor durante uma atualiza o em seu arquivo de trabalho Mas para arquivos contendo dados n o textuais muitas vezes n o existe o conceito de linha Assim para os arquivos versionados cuja propriedade svn mime type definida com um tipo MIME n o textual geralmente algo que n o ini cie com text embora existam exce es o Subversion n o tenta executar fus es con textuais durante as atualiza es Em vez disso quando voc modifica localmente um ar quivo bin rio em sua c pia de trabalho na momento da atualiza o
214. ares com os diret rios administrativos do CVS ter o reconhecido neste pon to que o arquivo svn entries do Subversion serve o prop sito entre outras coisas dos arquivos CVS Entries CVS Root CVS Repository do CSV combinados O formato do arquivo snv entries tem mudado ao longo do tempo Originalmente um 192 Incorporando o Subversion arquivo XML ele agora usa um formato de arquivo customizado apesar de ainda leg vel a humanos Enquanto o XML foi uma boa escolha no in cio para os desenvolvedores do Subversion que foram frequentemente depurando o conte do do arquivo e o comporta mento do Subversion em fun o dele a necessidade de uma depura o f cil no desen volvimento foi se reduzindo com a maturidade do Subversion e vem sendo substitu da pe la necessidade de desempenho do usu rio Fique ciente que a biblioteca de c pia de tra balho do Subversion atualiza automaticamente as c pias de trabalho de um formato para outro ela l os formatos antigos e escreve os novos o que salva voc do problema de verificar uma nova c pia de trabalho mas pode complicar em situa es onde diferentes vers es do Subversion podem estar tentando usar a mesma c pia de trabalho C pias Inalteradas e Propriedade de Arquivos Como mencionado antes o diret rio svn tamb m mant m as vers es text base intac tas dos arquivos Eles podem ser encontrados em svn text base Os benef cios des tas c pias inalteradas
215. arquivos s o imediatamente submetidos ao re posit rio Isto tipicamente usado quando voc tem uma rvore de arquivos existente que voc quer monitorar em seu reposit rio Subversion Por exemplo svnadmin create usr local svn newrepos svn import mytree file usr local svn newrepos some project m Importa o inicial Adicionando mytree foo c 16 Uso B sico Adicionando mytree bar c Adicionando mytree subdir Adicionando mytree subdir quux h Commit da revis o 1 O exemplo anterior copiou o conte do do diret rio myt ree no diret rio some project no reposit rio S svn list file usr local svn newrepos some project bar c foo c subdir Note que ap s a importa o terminar a rvore inicial n o est convertida em uma c pia de trabalho Para come ar a trabalhar voc ainda precisa obter svn checkout uma nova c pia de trabalho da rvore Layout de reposit rio recomendado Enquanto a flexibilidade do Subversion permite que voc organize seu reposit rio da for ma que voc escolher n s recomendamos que voc crie um diret rio trunk para arma zenar a linha principal de desenvolvimento um diret rio branches para conter c pias ramificadas e um diret rio tags para conter c pias rotuladas por exemplo svn list file usr local svn repos trunk branches tags Voc aprender mais sobre tags e branches no Cap tulo 4 Fundir e Ramificar Para deta lhes e como conf
216. as altera es do reposit rio normalmente O arquivo marcado com U n o continha modifica es lo cais mas foi atualizado Updated com as modifica es do reposit rio O G vem de merced o que significa que o arquivo local continha altera es inicialmente e que tam b m houve altera es vindas do reposit rio que no entanto n o se sobrepuseram s alte ra es locais J o c significa conflito Isto quer dizer que as modifica es do servidor se sobrep em com as suas pr prias e que agora voc precisa escolher entre elas manualmente Sempre que um conflito ocorre normalmente acontecem tr s coisas para ajudar voc a compreender e resolver este conflito O Subversion exibe um c durante o update e lembra que o arquivo esta num estado de conflito e Se o Subversion considerar que o arquivo mescl vel ele p e marca es de conflito strings de texto especiais que delimitam os lados do conflito dentro do ar quivo para mostrar visivelmente as reas de sobreposi o O Subversion usa a proprie dade svn mime type para decidir se um arquivo pass vel de combina o contextual de linhas Veja Tipo de Conte do do Arquivo para saber mais Para cada arquivo em conflito o Subversion mant m tr s arquivos extras n o versionados em sua c pia de trabalho fi lename mine Este o seu arquivo como o que existia em sua c pia de trabalho antes de voc atua liz la isto sem as marca e
217. as altera es serem submetidas Uma outra forma de pensar a respeito imaginar que a revis o N representa o estado do sistema de arquivos do reposit rio ap s o N simo commit Quando os usu rios do Subversion falam sobre a revis o n mero 5 do arquivo foo c eles realmente entendem o foo c que aparece na re vis o 5 Note que em geral revis es N e M de um arquivo podem n o ser necessa riamente diferentes Muitos outros sistemas de controle de vers o usam n mero de revis o por arquivo ent o este conceito pode parecer n o usual primeira vista Usu rios do CVS podem querer ver Ap ndice B Subversion para Usu rios de CVS para mais detalhes importante notar que nem sempre as c pias de trabalho correspondem a uma nica re vis o do reposit rio elas podem conter arquivos de v rias revis es diferentes Por exem plo suponha que voc fa a checkout de uma c pia de trabalho cuja revis o mais recente seja 4 calc Makefile 4 integer c 4 button c 4 Neste momento este diret rio de trabalho corresponde exatamente revis o n mero 4 no reposit rio Contudo suponha que voc fa a uma altera o no arquivo button c e pu blique essa altera o Assumindo que nenhum outro commit tenha sido feito o seu com mit ir criar a revis o 5 no reposit rio e sua c pia de trabalho agora ir parecer com isto calc Makefile 4 integer c 4 button c 5 12 Conceitos Fundamentais Sup
218. as vezes bom ter registros de tempo de arquivos na c pia de trabalho que reflitam a ltima vez em que eles foram modificados no repo sit rio O comando svn export sempre p e estes registros de tempo do ltimo com mit nas rvores geradas por ele Ao definir esta vari vel de configura o para yes os comandos svn checkout svn update svn switch e svn revert passar o a registrar momentos de tempo dos comandos de ltimo commit nos arquivos que manipularem A se o auto props controla a capacidade de um cliente Subversion de atribuir proprie dades automaticamente em arquivos quando eles forem adicionados ou importados Ela cont m um conjunto de pares chave valor no formato PATTERN PROPNA M E PROPVALUE onde PATTERN um padr o que corresponde a um conjunto de nomes de arquivo e o restante da linha a propriedade e seu valor M ltiplas correspond ncias para um arquivo ir o resultar em m ltiplas propriedades definidas para aquele arquivo no entanto n o h garantia de que essas propriedades autom ticas ser o aplicadas na or dem na qual estiverem listadas no arquivo de configura o ent o voc n o pode fazer com que uma regra sobrescreva Voc pode encontrar diversos exemplos do uso de pro priedades autom ticas no arquivo config E por ltimo n o se esque a de atribuir ena ble auto props para yes na se o miscellany se voc quiser habilitar propriedades autom ticas Localiza
219. aso contr rio n o recomendamos esta op o largamente ao p blico Ter seus usu rios acessando o reposit rio por meio de contas imagin rias ge renciadas pelo svnserve ou pelo Apache geralmente considerado mais seguro do que ter acesso por meio de contas reais no sistema Se o motivo para voc fazer isso for apenas obter uma comunica o criptografada n s recomendamos que voc utilize Apa che com SSL no lugar N o e entusiasme simplesmente com a id ia de ter todos os seus usu rios acessando o reposit rio diretamente atrav s de URLs file Mesmo se o reposit rio estiver dis pon vel a todos para leitura atrav s de um compartilhamento de rede isto uma m id ia Esta configura o remove quaisquer camadas de prote o entre os usu rios e o reposit rio os usu rios podem acidentalmente ou intencionalmente corromper a base de dados do reposit rio dificulta deixar o reposit rio offline para fins de inspe o ou atu aliza o e ainda podem surgir problemas relacionados a permiss es de arquivos veja Dando Suporte a M ltiplos M todos de Acesso ao Reposit rio Perceba que esta uma das raz es pelas quais n s alertamos acerca do acesso aos reposit rios atrav s de URLs svn ssh o que sob a perspectiva de seguran a efetivamente o mes mo que ter usu rios locais acessando via file e pode resultar nos mesmos pro blemas se o administrador n o for cuidadoso 144 Configura o do
220. assword file Sinopse svnadmin recover REPOS PATH Descri o Run this command if you get an error indicating that your repository needs to be recovered Op es wait Exemplos Recover a hung repository svnadmin recover usr local svn repos Repository lock acquired Please wait recovering the repository may take some time Recovery completed The latest repos revision is 34 Recovering the database requires an exclusive lock on the repository This is a database lock see Os tr s significados de trava If another process is accessing the repository then svnadmin recover will error svnadmin recover usr local svn repos svn Failed to get exclusive repository access perhaps another process such as httpd svnserve or svn has it open The wait option however will cause svnadmin recover to wait indefinitely for other processes to disconnect svnadmin recover usr local svn repos wait Waiting on repository lock perhaps another process has it open time goes by Repository lock acquired Please wait recovering the repository may take some time Recovery completed The latest repos revision is 34 278 Refer ncia Completa do Subversion Nome svnadmin rmlocks Unconditionally remove one or more locks from a repository Sinopse svnadmin rmlocks REPOS PATH LOCKED PATH Descri o Remove lock ffom each LOCKED PATH Op es Nenhum E
221. autenticado da pessoa quem destravou os caminhos Adicionalmente a lista de caminhos destravados passada ao programa de gancho por meio da entrada padr o um caminho por linha Usos Comuns notifica o de destravamento 319 Ap ndice A Guia R pido de Introdu o ao Subversion Se voc est ansioso para ter o Subversion configurado e funcionando e se voc da queles que gostam de aprender fazendo este cap tulo vai lhe mostrar como criar um re posit rio importar c digo e ent o obt lo de volta como uma c pia de trabalho Ao longo do caminho damos refer ncias aos cap tulos relevantes deste livro usado tanto pelo CVS quanto pelo Subversion ent o voc deveria ler Cap tu Se os conceitos de controle de vers o ou o modelo copiar modificar mesclar lo 1 Conceitos Fundamentais antes de seguir em frente Instalando o Subversion O Subversion constru do sobre uma camada de portabilidade chamada APR a bibliote ca Apache Portable Runtime A biblioteca APR prov todas as interfaces de que o Subver sion precisa para funcionar em diferentes sistemas operacionais acesso a disco acesso rede ger ncia de mem ria e por a vai Ainda que o Subversion seja capaz de usar o Apache como um de seus programas servidores de rede sua depend ncia da APR n o significa que o Apache seja um componente requerido APR uma biblioteca independen te e que pode ser usada por qualquer aplica o Isso sig
222. az de executar o X11 ou outro tipo de redirecionamento de portas atrav s do servidor Para dar ao usu rio o m nimo de permiss o poss vel voc pode querer especificar algumas op es restriti vas imediatamente ap s 0 command command svnserv t tunnel user harry no port forwarding no agent forwarding no X11 forwarding no pty TIPO1 CHAVE1 harry example com httpd o servidor HTTP Apache O servidor Apache HTTP um servidor de rede robusto do qual o Subversion pode tirar proveito Por meio de um m dulo espec fico o httpd torna os reposit rios Subversion dis pon veis aos clientes por meio do protocolo WebDAV DeltaV que uma extens o ao 152 Configura o do Servidor HTTP 1 1 consulte http Awww webdav org para mais informa es Este protocolo usa o onipresente protocolo HTTP que o cora o da World Wide Web e adiciona capacida des de escrita especificamente escrita sob controle de vers o O resultado um sistema robusto padronizado e que est convenientemente empacotado como uma parte do soft ware Apache 2 0 suportado por v rios sistemas operacionais e produtos de terceiros e n o requer administradores de rede para abrir nenhuma outra porta espec fica 4 Apesar de o servidor Apache Subversion ter mais recursos que o svnserve ele tamb m um pouco mais dif cil de configurar Um pouco mais de complexidade o pre o a se pagar por um pouco mais de flexibilidade Mu
223. balhar neste novo projeto Coincidentemente no momento Karl j estava discutindo o projeto para um novo sistema de controle de vers o com seu amigo Jim Blandy Em 1995 os dois iniciaram a Cyclic Software uma empresa que mantinha contratos de suporte para o CVS e apesar de te rem vendido a empresa posteriormente eles ainda usavam o CVS todos os dias em seus trabalhos Suas frustra es com o CVS levou Jim a pensar cuidadosamente sobre melho res maneiras para gerenciar dados versionados no que ele n o apenas j tinha pensado no nome Subversion mas tamb m com o projeto b sico para armazenamento de dados do Subversion Quando a CollabNet chamou Karl concordou imediatamente em trabalhar no projeto e Jim sugeriu empresa em que trabalhava Red Hat Software essencialmen te a ced lo para o projeto por um per odo de tempo indefinido A CollabNet contratou Karl e Ben Collins Sussman e um projeto detalhado de trabalho come ou em Maio Com a ajuda e o bem vindo incentivo de Brian Behlendorf e Jason Robbins da CollabNet e de Greg Stein poca um desenvolvedor independente trabalhando no processo de especi fica o do WebDAV DeltaV o Subversion rapidamente atraiu uma comunidade ativa de desenvolvedores Detectou se que muitas pessoas tamb m tinham as mesmas experi n cias frustrantes com o CVS agora satisfeitas com a oportunidade de finalmente fazer algo sobre isso A equipe do projeto original determinou alguns objetivos si
224. bcomandos todas as op es s o globais isto garante se que cada op o signifique a mesma coisa indepen dentemente do subcomando que voc use com ela Por exemplo verbose v sem pre significa sa da verbosa qualquer que seja o subcomando que voc utilizar com ela aUPto props Habilita auto props sobrescrevendo a diretiva enable auto props no arquivo con fig change c ARG Usado como uma forma de se referir a uma mudan a leia se uma revis o esta op o sintaticamente equivalente a r ARG 1 ARG config dir DIR Diz para o Subversion ler a informa o de configura o a partir do diret rio especifica do ao inv s de seu local padr o subversion no diret rio home do usu rio diff cmd CMD Especifica um programa externo a ser usado para exibir diferen as entre arquivos Quando svn diff invocado sem esta op o ele usa o mecanismo de diff interno do Subversion que exibe diffs unificados por padr o Se voc quiser usar um programa diff externo use diff cmd Voc pode passar op es para o programa diff com a op o extensions mais detalhes sobre isso mais adiante nesta se o diff3 cmd CMD sim sim voc n o precisa de um subcomando para usar a op o version mas vamos falar disso num ins tante 202 Refer ncia Completa do Subversion Especifica um programa externo a ser usado para mesclar arquivos dry run Faz men
225. bout it you can manually inspect and modify it Of course the downside is that if you have three years worth of repository activity encapsulated in what is likely to be a very large dump file it could take you a long long time to manually inspect and modify it That s where svndumpfilter becomes useful This program acts as path based filter for re pository dump streams Simply give it either a list of paths you wish to keep or a list of paths you wish to not keep then pipe your repository dump data through this filter The re sult will be a modified stream of dump data that contains only the versioned paths you explicitly or implicitly requested Let s look a realistic example of how you might use this program We discuss elsewhere see Planejando a Organiza o do Reposit rio the process of deciding how to choose a layout for the data in your repositories using one repository per project or combining them arranging stuff within your repository and so on But sometimes after new revisions start flying in you rethink your layout and would like to make some changes A common change is the decision to move multiple projects which are sharing a single repository into separate repositories for each project Our imaginary repository contains three projects calc calendar and spreadsheet They have been living side by side in a layout like this That s rather the reason you use version control at all right Conscious ca
226. c preten de modificar um arquivo apenas fa a suas altera es usando seu editor de texto suite de escrit rio programa gr fico ou qualquer outra ferramenta que voc use normalmente O Subversion automaticamente ir identificar que arquivos foram modificados ele tamb m vai manipular arquivos bin rios da mesma forma que manipula arquivos de texto e t o eficientemente quanto Para altera es na rvore voc pode solicitar ao Subversion que marque os arquivos e diret rios para remo o adi o c pia ou movimenta o agenda da Estas altera es ter o efeito imediatamente em sua c pia de trabalho mas nenhuma adi o ou remo o vai acontecer no reposit rio at que voc registre tais altera es Aqui est uma vis o geral dos cinco subcomandos do Subversion que voc vai usar mais frequentemente para fazer altera es na rvore Versionando links simb licos Em plataformas n o Windows o Subversion capaz de versionar arquivos do tipo especial link simb lico ou symlink Um link simb lico um arquivo que funciona como uma esp cie de refer ncia transparente para alguns outros objetos no sistema de arquivos permitindo que programas leiam e escrevam nestes objetos indireta mente atrav s da execu o destas opera es no link simb lico em si Quando um link simb lico registrado em um reposit rio Subversion o Subversion se lembra que o arquivo de fato um symlink bem como tamb
227. cada ramo e r tulo que voc tem Propriedades de Metadados Uma nova caracter stica do Subversion que voc pode atribuir um metadado arbitr rio ou propriedades as arquivos e diret rios Propriedades s o pares nome valor arbitr rios Isto desde que o espa o em disco n o acabe antes de o seu checkout terminar 327 Subversion para Usu rios de CVS associados com arquivos e diret rios na sua c pia de trabalho Para atribuir ou obter o nome de uma propriedade use os subcomandos svn propset e svn propget Para listar todas as propriedades de um objeto use svn proplist Para mais informa es veja Propriedades Resolu o de Conflitos O CVS marca conflitos com marcadores de conflito em linha e imprime um c durante uma atualiza o Historicamente isso tem causado problemas porque o CVS n o est fa zendo o suficiente Muitos usu rios esquecem ou n o v em o c depois que ele passa correndo pelo terminal Eles frequentemente esquecem at mesmo que os marcadores de conflitos est o presentes e ent o acidentalmente submetem arquivos contendo marcado res de conflitos O Subversion resolve este problema tornando os conflitos mais tang veis Ele se lembra de que um arquivo encontra se em um estado de conflito e n o permitir que voc sub meta suas mudan as at que execute svn resolved Veja Resolvendo Conflitos Combinando Altera es de Outros para mais detalhes
228. cado em UTF 8 Por m isto n o quer dizer que todas suas intera es com o Subversion devam envolver UTF 8 Como uma regra geral os clientes Sub version graciosa e transparentemente manipular o as convers es entre UTF 8 e o sistema de codifica o em uso em seu computador caso tal convers o possa ser feita de forma que fa a sentido o que o caso das codifica es mais comuns em uso hoje Adicionalmente caminhos de arquivos s o usados como valores de atributos XML nas trocas WebDAV bem como em alguns arquivos internamente mantidos pelo Subversion Isto significa que os caminhos de arquivos podem somente conter ca racteres aceitos no XML 1 0 Subversion tamb m pro be os caracteres TAB CR e LF em nomes de caminhos para prevenir que caminhos sejam quebrados nos diffs ou em sa das de comandos como svn log ou svn status Embora pare a que h muito o que recordar na pr tica estas limita es raramente s o um problema Enquanto suas configura es regionais s o compat veis com UTF 8 e voc n o usar caracteres de controle nos nomes dos caminhos voc n o ter problemas na comunica o com o Subversion O cliente de linha de comando d um pouco de ajuda extra ele automaticamente adiciona informa es de escape para os caracteres ilegais nos caminhos em URLs que voc digita para criar vers es legalmente corretas para uso interno quando necess rio Embora os exemplos acima efetuem o checkout do diret r
229. car o A comunica o n o teria sido algo t o ruim para os hom nimos de Harry e Sally em Hollywood ainda que seja para nosso caso 58 T picos Avan ados arquivo de destravar este arquivo cedendo este direito exclusivo de modificar de ver relat rios sobre quais arquivos est o travados e por quem de marcar arquivos para os quais o travamento antes da edi o fortemente aconselhado e assim por diante Nesta se o cobriremos todas destas facetas da ampla funcionalidade de travamento Os tr s significados de trava Nesta se o e em quase todas neste livro as palavras trava e travamento repre sentam um mecanismo para exclus o m tua entre os usu rios para evitar submis s es conflitantes Infelizmente existem dois outros tipos de trava com os quais o Subversion e portanto este livro algumas vezes precisam se preocupar O primeiro tipo s o as travas da c pia de trabalho usadas internamente pelo Sub version para prevenir conflitos entre m ltiplos clientes Subversion operando na mes ma c pia de trabalho Este o tipo de trava indicada por um L na terceira coluna da sa da produzida por svn status e removida pelo comando svn cleanup como es pecificado em As Vezes Voc S Precisa Limpar Em segundo lugar existem as travas do banco de dados usadas internamente pelo sistema Berkeley DB para prevenir conflitos entre m ltiplos programas tentando acessar o banco de da
230. ce D Ferramentas de Ter ceiros for discussion of some of the most commonly used hook programs Or if you wish to write your own see Capitulo 8 Incorporando o Subversion 117 Administra o do Reposit rio ok script authors should show restraint do not modify a commit transaction using hook scripts While it might be tempting to use hook scripts to automati cally correct errors or shortcomings or policy violations present in the files be ing committed doing so can cause problems Subversion keeps client side ca ches of certain bits of repository data and if you change a commit transaction in this way those caches become indetectably stale This inconsistency can lead to surprising and unexpected behavior Instead of modifying the transacti on you should simply validate the transaction in the pre commit hook and reject the commit if it does not meet the desired requirements As a bonus your users will learn the value of careful compliance minded work habits While hook scripts can do almost anything there is one dimension in which ho Berkeley DB Configuration A Berkeley DB environment is an encapsulation of one or more databases log files region files and configuration files The Berkeley DB environment has its own set of default confi guration values for things like the number of database locks allowed to be taken out at any given time or the maximum size of the journaling log files etc Subversion s filesystem l
231. cebido permiss o expressa do Licenciante para exercer direitos sob esta Licen a apesar de uma viola o pr via Direitos de Uso Leg timo Nada nesta licen a deve ser interpretado de modo a reduzir limitar ou restringir quaisquer direitos relativos ao uso leg timo ou outras limita es sobre os direitos exclusivos do titular de direitos autorais sob a legisla o autoral ou quaisquer outras leis aplic veis Concess o da Licen a O Licenciante concede a Voc uma licen a de abrang ncia mundial sem royalties n o exclusiva perp tua pela dura o do direito autoral aplic vel sujeita aos termos e condi es desta Licen a para exercer os direitos sobre a Obra definidos abaixo a reproduzir a Obra incorporar a Obra em uma ou mais Obras Coletivas e reproduzir a Obra quando incorporada em Obra Coletiva criar e reproduzir Obras Derivadas distribuir c pias ou grava es da Obra exibir publicamente executar publicamente e executar publicamente por meio de uma transmiss o digital de udio a Obra inclusive quando incorporada em Obras Coletivas distribuir c pias ou grava es de Obras Derivadas exibir publicamente executar publicamente e executar publicamente por meio de uma transmiss o digital de udio Obras Derivadas De modo a tornar claras estas disposi es quando uma Obra for uma composi o musical i Royalties e execu o p blica O Licenciante renuncia o seu direito exclusivo
232. cert password Se seu arquivo do certificado de cliente SSL estiver criptografado com uma frase se nha o Subversion ir lhe pedir que voc forne a a frase senha toda vez que certifica do for usado Se voc achar isto um estorvo e se n o se importa em deixar a senha armazenada no arquivo servers ent o voc pode definir esta vari vel para a frase senha do certificado Assim esta informa o n o mais lhe ser solicitada Configura o O arquivo config cont m as demais op es em tempo de execu o atualmente disponi veis no Subversion estas n o relacionadas conex o de rede H apenas algumas pou cas op es em uso at o momento em que este livro estava sendo escrito mas elas ainda s o agrupadas em se es na expectativa para adi es futuras A se o auth cont m configura es relacionadas autentica o e autoriza o no Sub version no reposit rio Ela cont m store passwords Isto orienta o Subversion a armazenar ou n o em cache as senhas que s o informa das pelo usu rio em resposta a desafios de autentica o do servidor O valor padr o yes Altere seu valor para no para desabilitar este recurso de cache de senhas em disco Voc pode sobrescrever esta op o para uma nica inst ncia do comando svn usando o par metro no auth cache de linha de comando para os subcomandos que d em suporte a ele Para mais informa es veja Armazenando Credenciais no Cliente store auth
233. ch allow it to recover in the face of catastrophe Unless you enable DB LOG AUTOR EMOV E the log files accumulate although most are no longer used and can be deleted to reclaim disk space See Managing Disk Space for more information Exemplos Remove all unused log files from a repository svnadmin list unused dblogs path to repos path to repos log 0000000031 path to repos log 0000000032 path to repos log 0000000033 svnadmin list unused dblogs path to repos disk space reclaimed xargs rm 274 Nome svnadmin load Read a dumpfile formatted stream from stdin Sinopse Refer ncia Completa do Subversion svnadmin load REPOS PATH Descri o Op es Read a dumpfile formatted stream from stdin committing new revisions into the reposi tory s filesystem Send progress feedback to stdout quiet q ignore uuid force uuid use pre commit hook use post commit hook parent dir Example This shows the beginning of loading a repository from a backup file made of course with svnadmin dump svnadmin load usr local svn restored lt repos backup lt lt lt Started new txn based on original revision 1 adding path test done adding path test a done Or if you want to load into a subdirectory svnadmin load parent dir new subdir for project usr local svn restored lt r lt lt
234. cnol gica que controle o acesso ou o uso da Obra de maneira inconsistente com os termos deste Acordo de Licen a O disposto acima se aplica Obra enquanto incorporada em uma Obra Coletiva mas isto n o requer que a Obra Coletiva parte da Obra em si esteja sujeita aos termos desta Licen a Se Voc criar uma Obra Coletiva em havendo notifica o de qualquer Licenciante Voc deve na medida do razo vel remover da Obra Coletiva qualquer refer ncia a este Licenciante ou Autor Original conforme solicitado Se voc criar uma Obra Derivada em havendo notifica o de qualquer Licenciante Voc deve na medida do razo vel remover da Obra Derivada qualquer refer ncia a este Licenciante ou ao Autor Original conforme solicitado b Se Voc distribuir exibir publicamente executar publicamente ou executar publicamente por meios digitais a Obra ou qualquer Obra Derivada ou Obra Coletiva Voc deve manter intactas todas as informa es relativas a direitos autorais sobre a Obra e atribuir ao Autor Original cr dito razo vel com rela o ao meio ou m dia que Voc est utilizando atrav s da veicula o do nome ou pseud nimo se for o caso do Autor Original se fornecido o t tulo da Obra se fornecido na medida do razo vel o Identificador Uniformizado de Recursos URI que o Licenciante especificar para estar associado Obra se houver exceto se o URI n o se referir ao aviso de direitos autora
235. co de perder informa o se n o for cuidadoso com suas altera es O administrador do repo sit rio pode definir formas de prote o contra perda de dados e por padr o al m de que as modifica es de propriedades n o versionadas s o desabilitadas por padr o set Ainda que o resultado da execu o dos comandos seja o mesmo o pri meiro vai lhes permitir visualizar o valor atual da propriedade que querem mo dificar o que ajuda a conferir que est o de fato fazer a altera o que acham que est o fazendo Isto especialmente verdadeiro ao modificar as proprieda des n o versionadas de revis o E ainda significativamente modificar valo res de propriedades em m ltiplas linhas em um editor de texto do que pela li nha de comando O Usu rios poderia quando poss vel usar svn propedit ao inv s de svn prop Propriedades e o Fluxo de Trabalho no Subversion Agora que voc est familiarizado com todos os subcomandos svn relacionados a proprie dades vamos ver como as modifica es de propriedades afetam o fluxo de trabalho usual do Subversion Como mencionado anteriormente as propriedades de arquivos e diret rios 2Corre o de erros de ortografia gramaticais outros ajustes simples de texto nas mensagens de log de uma re gistro talvez seja o uso mais comum da op o revprop option 45 T picos Avan ados s o versionadas tal como os conte dos de arquivos Como resultado o Subversion dis p
236. como cada commit cria uma nova rvore de arquivos chamada de revis o no reposit rio Caso n o saiba volte e leia sobre revis es em Revis es Neste cap tulo vamos usar o mesmo exemplo de antes Cap tulo 1 Conceitos Fundamen tais Lembre se que voc e Sally est o compartilhando um reposit rio que cont m dois projetos paint e calc Note que em Figura 4 2 Layout Inicial do Reposit rio entretan to cada diret rio de projeto cont m subdiret rios chamados trunk e branches O moti vo para isso logo ficar mais claro Figura 4 2 Layout Inicial do Reposit rio i LILL AL em Como antes assuma que voc e Sally possuem c pias de trabalho do projeto calc Es pecificamente cada um de voc s tem uma c pia de trabalho de calc trunk Todos os arquivos deste projeto est o nesse diret rio ao inv s de estarem no calc porque a sua equipe decidiu que calc trunk onde a Linha Principal de desenvolvimento vai ficar Digamos que voc recebeu a tarefa de implementar uma grande funcionalidade nova no projeto Isso vai requerer muito tempo para escrever e vai afetar todos os arquivos do pro jeto O problema aqui que voc n o quer interferir no trabalho de Sally que est corrigin do pequenos bugs aqui e ali Ela depende de que a ltima vers o do projeto em calc trunk esteja sempre dispon vel Se voc come ar a fazer commits de suas modi fica es pouco a pouco com certeza voc
237. comunica o entre processos IPC ou vamos ficar loucos devemos voc pode at implementar um protocolo baseado em email O Subversion oferece as APIs voc oferece a criatividade 190 Incorporando o Subversion Camada Cliente No lado do cliente a c pia de trabalho do Subversion onde todas as a es tomam lugar A pilha de funcionalidades implementadas pelas bibliotecas do lado cliente existem para o nico prop sito de gerenciar c pias de trabalho diret rios cheios de arquivos e outros sub diret rios que servem como uma esp cie de reflexos locais e edit veis de um ou mais locais do reposit rio e propagando mudan as para e a partir da Camada de Acesso ao Reposit rio A biblioteca de c pia de trabalho do Subversion libsvn wc diretamente respons vel por gerenciar os dados nas c pias de trabalho Para conseguir isso a biblioteca armazena in forma es administrativas sobre cada diret rio da c pia de trabalho dentro de um sub diret rio especial Este sub diret rio nomeado svn est presente em cada diret rio da c pia de trabalho e cont m v rios outros arquivos e diret rios que registram o estado e oferecem um espa o de trabalho privado para as a es de administra o Para os familia res com o CVS este sub diret rio svn similar em prop sito aos diret rios administrati vos CVs encontrados em c pias de trabalho CVS Para mais informa es sobre a rea ad ministrativa
238. configura o por usu rio o Subversion tamb m reconhece a exist ncia de uma rea de configura o a n vel de sistema Isto oferece aos administradores de sis tema a habilidade de estabelecer padr es para todos usu rios em uma determinada m quina Note que a rea de configura o a n vel de sistema n o define uma pol tica obriga t ria as defini es na rea de configura o do usu rio substitui as de n vel de sistema e os argumentos de linha de comando passados ao programa svn possuem a palavra final no comportamento realizado Em plataformas Unix espera se que a rea de configura o do sistema esteja no diret rio etc subversion em m quinas Windows ela aparece em um diret rio Subversion dentro do local Application Data do sistema novamente como especificado pelo Registro do Windows Diferentemente do caso por usu rio o programa svn n o tenta criar a rea de configura o a n vel de sistema A rea de configura o por usu rio atualmente cont m tr s arquivos dois arquivos de 1A vari vel de ambiente APPDATA aponta para a rea Application Data assim voc sempre pode referir a esta pasta como APPDATA Subversion 172 Customizando sua Experi ncia com Subversion configura o config e servers e um arquivo README txt que descreve o formato INI Quando s o criados os arquivos cont m valores padr o para cada uma das op es suportadas pelo Subversion a maioria comentadas e agru
239. creds Esta configura o id ntica a store passwords exceto que ela habilita ou desabi lita o cache em disco de todas as informa es de autentica o nomes de usu rio se nhas certificados de servidor e quaisquer outros tipos de credenciais armazen veis A se o helpers controla quais aplica es externas o Subversion usa como suporte na execu o de suas tarefas Op es v lidas nesta se o s o 176 Customizando sua Experi ncia com Subversion editor cmd Isto especifica o programa que o Subversion ir usar para solicitar uma mensagem longa ao usu rio durante uma opera o de submiss o como ao usar svn commit sem as op es message m ou file F Este programa tamb m usado com o comando svn propedit um arquivo tempor rio preenchido com o valor atual da propriedade que o usu rio pretende editar e permite que o usu rio realize as modi fica es neste programa editor veja Propriedades O valor padr o para esta op o vazio A ordem de prioridade para determinar o comando editor em ordem crescen te de preced ncia 1 A op o de linha de comando editor cmd 2 A vari vel de ambiente SVN EDITOR 3 A op o de configura o editor cmd 4 A vari vel de ambiente VISUAL 5 A vari vel de ambiente EDITOR 6 Possivelmente um valor padr o j embutido no Subversion ausente em distribui es oficiais do Subversion O valor de quaisquer dessas op
240. cri o Exibe as diferen as entre dois caminhos As formas de se usar o svn diff s o Use somente svn diff para exibir as modifica es locais em uma c pia de trabalho Exibe as mudan as feitas nos TARGETs de como eram em REV entre duas revis es TAR GETS podem ser todos c pias de trabalho como URLS Se TARGETS s o caminhos na c pia de trabalho N se referir por padr o a BASE e M c pia de trabalho se forem URLs N deve ser especificado e M servir de refer ncia a HEAD A op o c M equivalente a r N M sendo N M 1 Usar c M faz o contr rio r M N sendo N M 1 Exibe as diferen as entre OLD TGT de como estava em OLDREV e NEW TGT de como es tava em NEWREV PATHS se especificados s o relativos a OLD TGT e NEW TGT e restrin gem a sa da s diferen as entre estes caminhos OLD TGT e NEW TGT podem ser cami nhos na c pia de trabalho ou URL GREV NEW TGT por padr o se refere a OLD TGT se n o for especificada r N faz com que OLDREV seja N r N M faz com que OLDREV seja Ne que NEWREV seja M Abrevia o para svn diff old OLD URL OLDREV new NEW URL NEWREV svn diff r N M URL abrevia o para svn diff r N M old URL new URL svn diff r N M URL1 N URL2 M abrevia o para svn diff r N M old URL1 new URL2 Se TARGET for uma URL ent o as revis es N e M podem ser dadas tanto pela op o revision como pela nota o co
241. cripts e similares Estes itens j devem ter sido configurados com um conjunto de permiss es que lhes possibilitam tra balhar com o Apache ou mais adequadamente que permite ao Apache trabalhar com es tes arquivos O Apache quando usado como um servidor Subversion tamb m vai preci sar das permiss es corretas para ler e escrever em seu reposit rio Subversion Voc vai precisar determinar uma configura o do sistema de permiss es que satisfa a os requisitos do Subversion sem causar problemas em nenhuma p gina ou script previa mente instalado Isto pode significar alterar as permiss es de seu reposit rio Subversion para corresponder quelas em uso por outras coisas que o Apache lhe serve ou pode sig 155 Configura o do Servidor nificar usar as diretivas User e Group No httpd conf para especificar que o Apache de ve executar como o usu rio e grupo de que seja dono do seu reposit rio Subversion N o h apenas uma maneira correta de configurar suas permiss es e cada administrador vai ter diferentes raz es para fazer as coisas de uma dada maneira Apenas tenha cuidado pois problemas de permiss o s o talvez a falha mais comum ao se configurar o reposit rio Subversion para uso com o Apache Op es de Autentica o Neste ponto se voc configurou 0 httpd conf para conter algo como lt Location svn gt DAV svn SVNParentPath usr local svn lt Location gt ent o seu reposit rio est anonimam
242. crito a todos os contribuintes do seu projeto dizendo lhes para se certificar de que t m as vers es espec ficas dessa in forma o de terceiros de que seu projeto precisa Se a informa o de terceiros mantida em um reposit rio Subversion voc tamb m pode utilizar as defini es externas do Sub version para efetivamente imobilizar vers es espec ficas dessa informa o em algum lu gar no pr prio diret rio da sua c pia de trabalho ver Defini es Externas Mas s vezes voc quer manter modifica es personalizadas de dados de terceiros em seu pr prio sistema de controle de vers es Retornando ao exemplo do desenvolvimento de software programadores poderiam precisar fazer modifica es naquela biblioteca de 102 Fundir e Ramificar terceiros para seus pr prios prop sitos Estas altera es poderiam incluir novas funciona lidades ou corre es de bugs mantidas apenas internamente at se tornarem parte de uma libera o oficial da biblioteca de terceiros Ou as mudan as poderiam nunca ser transmitidas de volta para os mantenedores da biblioteca existindo apenas como ajustes personalizados para fazer com que a biblioteca atenda melhor as necessidades dos de senvolvedores de software Agora voc enfrenta uma situa o interessante Seu projeto poderia abrigar suas pr prias modifica o aos dados de terceiros de algum modo desarticulado tal como a utiliza o de patches ou vers es alternati
243. ctly as it does the rest of the revisions in the dump range mentioning only the changes that occurred in that revision The benefit of this is that you can create several small dump files that can be loaded in succession inste ad of one large one like so svnadmin dump myrepos r 0 1000 gt dumpfilel svnadmin dump myrepos r 1001 2000 incremental gt dumpfile2 svnadmin dump myrepos r 2001 3000 incremental gt dumpfile3 These dump files could be loaded into a new repository with the following command se quence svnadmin load newrepos lt dumpfilel svnadmin load newrepos lt dumpfile2 svnadmin load newrepos lt dumpfile3 Another neat trick you can perform with this incremental option involves appending to an existing dump file a new range of dumped revisions For example you might have a post commit hook that simply appends the repository dump of the single revision that triggered the hook Or you might have a script that runs nightly to append dump file data for all the revisions that were added to the repository since the last time the script ran Used like this synadmin dump can be one way to back up changes to your repository over time in case of a system crash or some other catastrophic event The dump format can also be used to merge the contents of several different repositories into a single repository By using the parent dir option of svnadmin load you can specify a new virtual root directory for the l
244. cute na porta PORT quando executado em modo daemon Por padr o daemons FreeBSD s escutam em tcp6 esta op o tamb m faz com que escutem em tcp4 listen host HOST Faz com que o svnserve escute na interface especificada por HOST que pode ser tanto um nome de host ou um endere o de IP foreground Quando usado junto com d esta op o faz com que o svnserve permane a em pri meiro plano Esta op o especialmente til para depura o inetd i Faz com que o svnserve use os descritores de arquivo stdin stdout como apropriado para um daemon que esteja executando via inetd help h Exibe um resumo de utiliza o do comando e encerra version Exibe informa o de vers o uma lista de m dulos dispon veis para reposit rio e en cerra root ROOT r ROOT Define a raiz virtual para os reposit rio servidos pelo svnserve O caminho nas URLs provido pelo cliente ser interpretado como relativo a este diret rio raiz e n o sera permitido de l escapar tunnel t Causes svnserve to run in tunnel mode which is just like the inetd mode of operation both modes serve one connection over stdin stdout then exit except that the con nection is considered to be pre authenticated with the username of the current uid This flag is automatically passed for you by the client when running over a tunnel agent such as ssh That means there s rarely any need for you to pass this option to svnser ve
245. da ou que voc recente mente tenha obtido uma nova c pia de trabalho de calc trunk Mas quais duas rvores deveriam ser comparadas primeira vista a resposta pode pare cer bvia apenas compare a rvore mais recente do tronco com sua rvore mais recente de seu ramo Mas cuidado esta suposi o est errada e isso costuma confundir muito os novos usu rios Como o svn merge opera como o svn diff comparar as ltimas ver s es das rvores do tronco e do ramo n o descreve apenas o conjunto de modifica es que voc fez em seu ramo Tal compara o exibe muito mais mudan as ele n o apenas exibe o efeito das modifica es de seu ramo mas tamb m todas as altera es de remo va o que nunca aconteceram em seu ramo Para expressar apenas as modifica es que aconteceram em seu ramo voc precisa comparar o estado inicial de seu ramo com seu estado final Usando um svn log em seu ramo voc pode ver que seu ramo foi criado na revis o 341 E o estado final de seu ramo simplesmente uma dada forma de uso da revis o HEAD Isso significa que voc deve comparar as revis es 341 e HEAD do seu diret rio branch e aplicar estas diferen as na c pia de trabalho de trunk Uma tima maneira de encontrar a revis o na qual um ramo foi criado a iy pase do ramo usar a op o stop on copy do comando svn log O subcomando log normalmente ir mostrar cada modifica o feita no ramo in cluindo o rastreamen
246. da do usu rio ou falha de rede passe a op o diff3 cmd para permitir que a limpeza complete qualquer mesclagem com seu progra ma diff externo Voc tamb m pode especificar um diret rio de configura o com config dir mas voc deve precisar destas op es em rar ssimas ocasi es Nomes Alternativos Nenhum Altera C pia de trabalho Acessa o Reposit rio N o Op es diff3 cmd CMD config dir DIR Exemplos Bem nao ha muito para esta parte de exemplo aqui pois o svn cleanup nao gera nenhu ma sa da Se voc n o informar um caminho PATH ent o usado svn cleanup svn cleanup path to working copy 213 Refer ncia Completa do Subversion Nome svn commit Envia as altera es de sua c pia de trabalho para o reposit rio Sinopse svn commit PATH Descri o Envia as altera es de sua c pia de trabalho para o reposit rio Se voc n o informar uma mensagem de log de registro usando seja a op o file ou a op o message O svn vai executar seu editor de texto para que voc escreva uma mensagem de commit Veja a se o editor cmd em Configura o svn commit vai enviar quaisquer marcadores de trava que encontrar e ir liberar as travas em todos os caminhos PATHS submetidos recursivamente a menos que no unlock seja passado Se voc come ar um commit e o Subversion executar seu editor para que vo iy c componha a mensagem de regist
247. de incorporar na sua c pia de tra balho especialmente se voc rodar um svn update depois de semanas trabalhando so zinho A melhor solu o criar seu pr prio ramo ou linha de desenvolvimento no reposit rio Is so lhe permite salvar seu trabalho ainda incompleto sem interferir com outros e ainda vo c pode escolher que informa es compartilhar com seus colaboradores Voc ver exa tamente como isso funciona mais frente Criando um Ramo Criar um ramo realmente simples voc faz uma c pia do projeto no reposit rio usando o comandosvn copy O Subversion copia n o somente arquivos mas tamb m diret rios completos Neste caso voc quer fazer a c pia do diret rio calc trunk Onde deve fi car a nova c pia Onde voc quiser isso depende da politica do projeto Digamos que sua equipe tem a pol tica de criar novos ramos na rea calc branches do reposit rio e voc quer chamar o seu ramo de my calc branch Voc vai querer criar um novo di ret rio calc branches my calc branch que inicia sua vida como c pia de calc trunk H duas maneiras diferentes de fazer uma c pia Vamos mostrar primeiro a maneira com plicada apenas para deixar claro o conceito Para come ar fa a um checkout do diret rio raiz do projeto calc svn checkout http svn example com repos calc bigwe A bigwc trunk A bigwc trunk Makefile A bigwc trunk integer c A bigwc trunk button c A bigwc branches Checked
248. de soft ware como identifica o nativa de linguagens de programa o ou ferramentas de apoio para compila o de software O Subversion no entanto n o um sistema desse tipo E um sistema de car ter geral que pode ser usado para gerenciar quaisquer conjuntos de arquivos Para voc estes arquivos podem ser c digo fonte para outros podem ser qualquer coisa desde listas de compras de supermercado a arquivos de edi o de v deo e muito mais Hist rico do Subversion No come o do ano 2000 a CollabNet Inc http www collab net come ou a procurar de senvolvedores para desenvolver um substituto para o CVS A CollabNet j tinha uma suite colaborativa cnamada CollabNet Enterprise Edition CEE cujo um de seus componentes era o controle de vers o Apesar de o CEE usar o CVS como seu sistema de controle de vers o inicial as limita es do CVS ficaram evidentes desde o princ pio e a CollabNet sa bia que eventualmente teria que procurar por algo melhor Infelizmente o CVS havia se firmado como um padr o de fact no mundo open source principalmente porque n o havia nada melhor pelo menos sob licen a livre Ent o a CollabNet decidiu desenvolver um no vo sistema de controle de vers o a partir do zero mantendo as id ias b sicas do CVS mas sem os bugs e seus inconvenientes Em Fevereiro de 2000 eles contactaram Karl Fogel o autor de Open Source Development with CVS Coriolis 1999 e perguntaram se ele gostaria de tra
249. dos Este o tipo de trava cuja indesej vel persist ncia ap s um erro pode fazer com que um reposit rio seja corrompido como descrito em Berkeley DB Recovery Voc pode geralmente esquecer destes outros tipos de travas at que algo de errado ocorra e requeira seus cuidados sobre eles Neste livro trava possui o significado do primeiro tipo ao menos que o contr rio esteja claro pelo contexto ou explicitamen te indicado Criando travas No reposit rio Subversion uma trava um peda o de metadados que concede acesso ex clusivo para um usu rio modificar um arquivo Este usu rio cnamado de propriet rio da trava Cada trava tamb m tem um identificador nico tipicamente uma longa cadeia de caracteres conhecida como o sinal de trava O reposit rio gerencia as travas basicamen te manipulando sua cria o aplica o e remo o Se qualquer transa o de submiss o tenta modificar ou excluir um arquivo travado ou excluir um dos diret rios pais do arqui vo O reposit rio exigir dois peda os de informa o que o cliente executante da sub miss o esteja autenticado como o propriet rio da trava e que o sinal de trava tenha sido fornecido como parte do processo de submiss o como um tipo de prova que o cliente co nhece qual trava ele est usando Para demonstrar a cria o de uma trava vamos voltar ao nosso exemplo de m ltiplos de senhistas gr ficos trabalhando sobre os mesmos arquivo
250. dos ver sionados vivem Estrat gias para Implementa o de Reposit rios Devido em grande parte a simplicidade do projeto do reposit rio Subversion e as tecnolo gias nas quais ele se baseia cri lo e configur lo s o tarefas bastante naturais Existem algumas decis es preliminares que voc precisar tomar mas o trabalho necess rio para fazer alguma configura o no reposit rio Subversion muito simples tendendo a repeti o mec nica a medida que voc come a a configurar v rias dessas coisas Algumas coisas que voc precisar considerar logo no in cio s o Que dados voc espera armazenar no seu reposit rio ou reposit rios e como eles se r o organizados Onde viver o seu reposit rio e como ele ser acessado Que tipo de controle de acesso e notifica o de eventos voc ir precisar Qual tipo de armazenamento de dados entre os dispon veis voc ir utilizar Nessa se o n s iremos tentar ajud lo a responder essas quest es Planejando a Organiza o do Reposit rio Embora o Subversion permita que voc mova arquivos e diret rios versionados sem qual 108 Administra o do Reposit rio quer perda de informa o e at mesmo prov meios de mover conjuntos inteiros de even tos hist ricos versionados de um reposit rio para outro fazer isso pode atrapalhar signifi cativamente o fluxo de trabalho daqueles que acessam o reposit rio frequentemente e es
251. dvantages to using this option deltified dumpfiles are more CPU intensive to create cannot be operated on by svndumpfilter and tend not to compress as well as their non deltified counterparts when using third party tools like gzip and bzip2 Opcoes revision r REV incremental quiet q deltas Exemplos Dump your whole repository svnadmin dump usr local svn repos SVN fs dump format version 1 Revision number 0 Dumped revision 0 Prop content length 56 Content length 56 269 Refer ncia Completa do Subversion Incrementally dump a single transaction from your repository svnadmin dump usr local svn repos r 21 incremental Dumped revision 21 SVN fs dump format version 1 Revision number 21 Prop content length 101 Content length 101 270 Refer ncia Completa do Subversion Nome svnadmin help Help Sinopse svnadmin help SUBCOMMAND Descri o This subcommand is useful when you re trapped on a desert island with neither a net con nection nor a copy of this book Nomes Alternativos h 271 Refer ncia Completa do Subversion Nome svnadmin hotcopy Make a hot copy of a repository Sinopse svnadmin hotcopy REPOS PATH NEW REPOS PATH Descri o This subcommand makes a full hot backup of your repository including all hooks confi guration files and of course database files If you pass the clean
252. e mais seguro htpasswd cm etc svn auth file harry New password x Re type new password x Adding password for user harry htpasswd m etc svn auth file sally New password x x Re type new password xx x Adding password for user sally A seguir voc precisa adicionar mais algumas diretivas do httpd conf dentro de seu bloco Location para indicar ao Apache o que fazer com seu novo arquivo de senhas A diretiva AuthType especifica o tipo de sistema de autentica o a usar Neste caso vamos 156 Configura o do Servidor especificar o sistema de autentica o Basic AuthName um nome arbitr rio que voc d para o dom nio da autentica o A maioria dos navegadores web vai mostrar este no me da caixa de di logo quando o navegador estiver perguntando ao usu rio por seu nome e senha Finalmente use a diretiva AuthUserFile para especificar a localiza o do ar quivo de senhas que voc criou usando o comando htpasswd Depois de adicionar estas tr s diretivas seu bloco lt Location gt deve ser algo parecido com isto lt Location svn gt DAV svn SVNParentPath usr local svn AuthType Basic AuthName Subversion repository AuthUserFile etc svn auth file lt Location gt Este bloco lt Location gt ainda n o esta completo e n o far nada de til Esta meramen te dizendo ao Apache que sempre que uma autoriza o for requerida o Apache deve ob ter um nome de usu rio e senha
253. e nas n veis na rvore de chaves do registro O Subversion procura por valores de configura o globais em n vel de sistema sob a cha ve HKEY LOCAL MACHINENSoftwareNTigris orgNSubversion Por exemplo a op o global ignores a qual est est na se o miscellany do arquivo config po deria ser encontrada em HKEY_LOCAL_MACHINE Software Tigris org Subversion Config Miscellany global ignores Valores de configura o por usu rio devem estar armazenados abai xo de HKEY CURRENT USERNSoftwareNTigris orgNSubversion Op es de configura o baseadas em registro s o analisadas antes do que suas contra partes em arquivo assim elas s o sobrescritas pelos valores encontrados nos arquivos de configura o Em outras palavras o Subversion procura por informa o de configura o nos seguintes locais em um sistema Windows a rela o abaixo organiza os locais em or dem dos de maior para os de menor preced ncia 1 Op es de linha de comando 2 Arquivos INI por usu rio 3 Valores de registro por usu rio 4 Arquivos INI globais em n vel de sistema 5 Valores de registro em n vel de sistema Adicionalmente o registro do Windows n o suporta a no o de algo sendo comentado No entanto o Subversion ir ignorar quaisquer op es cujos nome da chave comece com um caractere de cerquilha 4 Na pr tica efetivamente isto permite que voc comente uma op o do Subversion sem remover a chav
254. e O mundo tem sido um tanto lento para atualizar para o Apache da s rie 2 X por v rias raz es algumas pessoas t m medo da mudan a especialmente mudan a em algo t o cr tico como um servidor web Outras pessoas dependem de m dulos de plug in que s funcionam sobre a API do Apache 1 3 e est o aguardando que estes sejam portados para a 2 X Qualquer que seja a raz o muitas pessoas come am a se preocupar quando descobrem que o m dulo Apache do Subversion escrito es pecificamente para a API do Apache 2 A resposta adequada a este problema n o se preocupe com isto f cil executar o Apache 1 3 e o Apache 2 lado a lado simplesmente instale os em locais separa dos e use o Apache 2 como um servidor Subversion dedicado que execute em outra porta que n o a 80 Os clientes podem acessar o reposit rio inserindo o n mero da porta na URL svn checkout http host example com 7382 repos project Pr requisitos Para disponibilizar seus reposit rios em rede via HTTP voc basicamente necessita de quatro componentes dispon veis em dois pacotes Voc vai precisar do Apache httpd 2 0 do m dulo DAV mod dav que j vem com ele do Subversion e do mod dav svn m dulo que prov acesso ao sistema de arquivos distribu do junto com o Subversion Uma vez que voc tenha todos estes componentes o processo de disponibilizar seus reposit Eles realmente detestam fazer isso 153 Configura o do Servidor
255. e do na te la svn list Exibe os arquivos em um diret rio para uma dada revis o Gerando uma lista de altera es hist ricas Para encontrar informa o acerca do hist rico de um arquivo ou diret rio use o comando svn log O svn log vai lhe dar um registro de quem fez altera es em um arquivo ou dire t rio em qual revis o houve a mudan a a data e hora daquela revis o e se for informa da a mensagem de log associada a esse registro svn log r3 sally Mon 15 Jul 2002 18 03 46 0500 1 line Added include lines and corrected of cheese slices r2 harry Mon 15 Jul 2002 17 47 57 0500 1 line Added main methods rl sally Mon 15 Jul 2002 17 40 08 0500 1 line Initial import Veja que as mensagens de log s o exibidas em ordem cronol gica inversa por padr o Se voc quiser ver um intervalo de revis es em uma ordem espec fica ou apenas uma nica revis o utilize a op o revision r S svn log r 5 19 exibe os logs de 5 a 19 em ordem cronol gica svn log r 19 5 exibe os logs de 5 a 19 na order inversa svn log r 8 mostra o log para a revisdo 8 Voc tamb m pode examinar o hist rico de logs de um nico arquivo ou diret rio Por exemplo svn log foo c svn log http foo com svn trunk code foo c Isto vai exibir as mensagens de log apenas para aquelas revis es nas quais o arquivo de trabalho ou a URL mudaram Se voc quiser ainda mais informa
256. e Ruby De certa forma o trabalho realizado preparando os arqui vos de interface SWIG para estas linguagens reutiliz vel em esfor os para produzir v n culos para outras linguagens suportadas por SWIG as quais incluem vers es de C Gui le Java MzScheme OCaml PHP e Tcl entre outras No entanto alguma programa o extra necess ria para compensar as APIs complexas assim o SWIG precisa de alguma ajuda na tradu o entre linguagens Para mais informa es sobre o SWIG veja o site do projeto em http Awww swig org O Subversion tamb m possui v nculos de linguagem para Java Os v nculos JavaJL localizados em subversion bindings java na rvore de fontes do Subversion n o s o baseados no SWIG por m s o uma mistura de javah e JNI codificada na unha Ja vaHL abrange a maior parte das APIs do Subversion no lado do cliente e especifica mente orientada aos implementadores de clientes Subversion baseado em Java e integra es em IDE Os v nculos de linguagem do Subversion tendem a necessitar do n vel de aten o do de senvolvedor dada aos m dulos principais do Subversion mas podem geralmente serem confi veis como prontos para produ o Um n mero de scripts e aplica es clientes Sub 195 Incorporando o Subversion version alternativos com GUI e outras ferramentas de terceiros est o atualmente usando com sucesso os v nculos de linguagem do Subversion para realizar suas integra es com o Subv
257. e Subversion server to replay revisions one at a time It then uses that revision information to mimic a commit of the sa me to another repository Neither repository needs to be locally accessible to machine on which svnsync is running its parameters are repository URLs and it does all its work th rough Subversion s repository access RA interfaces All it requires is read access to the source repository and read write access to the destination repository When using svnsync against a remote source repository the Subversion ser ver for that repository must be running Subversion version 1 4 or better Assuming you already have a source repository that you d like to mirror the next thing you need is an empty target repository which will actually serve as that mirror This target repo sitory can use either of the available filesystem data store back ends see Escolhendo uma Base de Dados but it must not yet have any version history in it The protocol via which svnsyne communicates revision information is highly sensitive to mismatches bet ween the versioned histories contained in the source and target repositories For this rea son while svnsyne cannot demand that the target repository be read only 1a allowing the revision history in the target repository to change by any mechanism other than the mirro ring process is a recipe for disaster Do not modify a mirror repository in such a way as to cause its version history to
258. e colaboradores comum que cada um tenha sua c pia de trabalho do tronco Sempre que alguem precise fazer uma longa modi fica o que possa corromper o tronco o procedimento padr o criar um ramo privado e fazer os commits neste ramo at que todo o trabalho esteja concluido Ent o a boa not cia que voc n o est interferindo no trabalho de Sally e vice versa A m not cia que muito f cil se distanciar do projeto Lembre se que um dos problemas com a estrat gia do se isolar que quando voc terminar de trabalhar no seu ramo po de ser bem perto de imposs vel de fundir suas modifica es novamente com o tronco do projeto sem um grande numero de conflitos Ao inv s disso voc e Sally devem continuamente compartilhar as modifica es ao longo 82 Fundir e Ramificar do seu trabalho Depende de voc para decidir quais modifica es devem ser compartilha das O Subversion lhe da a capacidade para selecionar o que copiar entre os ramos E quando voc terminar de trabalhar no seu ramo todas as modifica es realizadas no seu ramo podem ser copiadas novamente para o tronco Copiando modifica es espec ficas Na se o anterior nos comentamos que tanto voc quanto Sally fizeram altera es em integer c em ramos distintos Se voc olhar a mensagem de log de Sally na revis o 344 voc ver que ela corrigiu alguns erros de escrita Sem duvida alguma a sua c pia deste arquivo tem os
259. e configura o para acesso autenticado 161 Um exemplo de configura o para acesso misto autenticado an nimo 162 Desabilitando verifica es de caminho como um todo 163 Arquivo reg com Entradas de Registro de Exemplo 174 QMIWIAD S fess ls scaseeeeh ok T A SS cela RhE TA E EE TE E pies ueeneet 182 Oiffwrap Dales am neta E dg sects dneeahs bade bah dE SB APTE SGA ESSE bra ead Edo Heel 182 o IN FGA VAg 6 DRA ERR E PR adn NR a 183 o INCA ARS Po E NARRA ieee sh ett eet eit rate ett eet ttt 183 Usando a Camada de Reposit rio 196 Usando a Camada de Reposit rio com Python 198 Um Rastreador de Status em Python ane 199 Apresenta o Karl Fogel Chicago 14 de Mar o de 2004 Uma base ruim de Perguntas Frequentes FAQ aquela que composta n o de pergun tas que as pessoas realmente fizeram mas de perguntas que o autor da FAQ desejou que as pessoas tivessem feito Talvez voc j tenha visto isto antes P De que forma posso utilizar o Glorbosoft XYZ para maximizar a produti vidade da equipe R Muitos dos nossos clientes desejam saber como podem maximizar a produtividade atrav s de nossas inova es patenteadas de groupware pa ra escrit rios A resposta simples primeiro clique no menu Arquivo Des a at a op o Aumentar Produtividade ent o O problema com estas bases de FAQ
260. e de informa es sobre programa o com as APIs do Subversion s o as diretrizes de hacking do projeto o qual pode ser encontrado em http subversion tigris org hacking html Este documento cont m informa es teis que embora destinadas a desenvolvedores e aos pr prios desenvolvedores do Subversion 193 Incorporando o Subversion igualmente aplic vel a pessoas desenvolvendo com o Subversion como um conjunto de bibliotecas de terceiros A Biblioteca Apache Portable Runtime Juntamente com os tipos de dado do Subversion voc ver muitas refer ncias a tipos de dado que iniciam com apr s mbolos da biblioteca Apache Portable Runtime APR APR uma biblioteca de portabilidade da Apache originalmente esculpida fora do c digo de seu servidor como uma tentativa em separar as partes espec ficas de SO das por es independentes de SO O resultado foi uma biblioteca que oferece uma API gen rica para executar opera es que diferem levemente ou agressivamente de SO para SO En quanto o Servidor HTTP da Apache foi obviamente o primeiro usu rio da biblioteca APR os desenvolvedores do Subversion imediatamente reconheceram o valor de usar APR tamb m Isto significa que existe praticamente nenhum c digo espec fico de SO no Sub version Al m disso significa que o cliente Subversion compila e executa em qualquer lu gar em que o Servidor HTTP da Apache compila e executa tamb m Atualmente esta lista inclui todos
261. e deste livro est em desenvolvimento e muitos dos tradutores volunt rios est o se reunindo no site http svnbook red bean com L voc pode encontrar links para as lti mas vers es lan adas e vers es compiladas deste livro em diversos formatos bem como as instru es de acesso ao reposit rio Subversion do livro onde est o c digo fonte em formato DocBook XML Um feedback bem vindo e encorajado tamb m Por favor en vie todos os seus coment rios reclama es e retifica es dos fontes do livro para o e mail lt svnbook dev red bean com gt Agradecimentos Este livro n o existiria nem seria til se o Subversion n o existisse Assim os autores gostariam de agradecer ao Brian Behlendorf e CollabNet pela vis o em acreditar em um arriscado e ambicioso projeto de C digo Aberto Jim Blandy pelo nome e projeto original do Subversion n s amamos voc Jim Karl Fogel por ser um excelente amigo e grande l der na comunidade nesta ordem Agradecimentos a O Reilly e nossos editores Linda Mui e Tatiana Diaz por sua paciente e apoio Finalmente agrademos s in meras pessoas que contribu ram para este livro com suas revis es informais sugest es e retifica es Certamente esta n o uma lista completa mas este livro estaria incompleto e incorreto sem a ajuda de David Anderson Jani Aver bach Ryan Barrett Francois Beausoleil Jennifer Bevan Matt Blais Zack Brown Martin Buchholz Brane Cibej John R
262. e habilitada certamente ve mos SRev 12 Revis o da ltima submiss o SAuthor harry S Autor da ltima submiss o Date 2006 03 15 02 33 03 0500 Wed 15 Mar 2006 Data da tltima submis O resultado n o t o elegante E voc pode ser tentado a ent o ajustar o arquivo depois da substitui o para que pare a tabular novamente Mas isto apenas funciona quando os valores da palavra chave s o da mesma largura Se a ltima revis o submetida aumentar em uma casa decimal ou seja de 99 para 100 ou se uma outra pessoa com um nome de usu rio maior submete o arquivo teremos tudo bagun ado novamente No entanto se voc est usando o Subversion 1 2 ou superior voc pode usar a nova sintaxe para pala vra chave com tamanho fixo definir algumas larguras de campo que sejam razo veis e agora seu arquivo pode ter esta apar ncia SRev S Revis o da ltima submiss o SAuthor S Autor da ltima submiss o 56 T picos Avan ados SDate Data da ltima submiss o Voc submete esta mudan a ao seu arquivo Desta vez o Subversion nota a nova sintaxe para palavra chave com tamanho fixo e mant m a largura dos campos como definida pelo espa amento que voc colocou entre o duplo dois pontos e o sinal de moeda final Depois da substitui o a largura dos campos est completamente inalterada os curtos valores de Rev Author s o preenchidos com espa os e o longo campo Date truncado com um carac
263. e hist rico Revis es marcadoras s o especificadas pelo cliente de linha de comando do Subversion usando sintaxe de arroba assim chamada porque envolve anexar se um sinal de arroba e a revis o marcadora ao final do caminho com o qual a revis o esta associada Mas e sobre as revis es dadas por revision r as quais falamos tanto neste li vro Essas revis es ou conjuntos de revis es s o cnamadas de revis es operativas ou intervalos de revis es operativas Uma vez que uma linha em particular do hist rico tenha sido identificada usando se um caminho e uma revis o marcadora o Subversion executa a opera o requisitada usando a s revisao 6es operativa s Para relacionar isto com nossa analogia s ruas de Chicago se nos disserem para irmos para at a Main Street em Wheaton 606 N 1 poder amos pensar na Main Street como nosso caminho e em Wheaton como nossa revis o marcadora Estes dois peda os de informa o identificam um nico caminho que pode ser percorrido em sentido sul ou sentido norte na Main Stre et e que nos permitir andar para cima e para baixo na Main Street ao acaso na busca pe lo nosso destino Agora temos 606 N como nossa revis o operativa de sorte que sabe mos exatamente aonde temos que ir O algoritmo de revis es marcadoras O Subversion em linha de comando executa o algoritmo de revis es marcadora a qualquer momento em que precise resolver poss veis ambig idade
264. e inteira do registro o que obviamente sim plifica o processo de restaurar tal op o O cliente de linha de comando svn tenta escrever no registro do Windows e ent o n o tentar escrever uma rea de configura o padr o Voc pode criar as chaves que voc precisa usando o programa REGEDIT Alternativamente voc pode criar um arquivo 173 Customizando sua Experi ncia com Subversion e ent o dar um duplo clique nele a partir do Windows Explorer o que ir fazer com que os dados sejam mesclados ao seu registro Exemplo 7 1 Arquivo reg com Entradas de Registro de Exemplo REGEDITA HKEY_LOCAL_MACHINE Software Tigris org Subversion Servers groups KEY_LOCAL_MACHINE Software Tigris org Subversion Servers global http proxy host http proxy port http proxy username h h h ttp proxy password ttp proxy exceptions ttp timeout 0 http compression yes neon debug mask ssl authority files ssl trust default ca ssl clien rt file ssl clien rt password adc Cc Cc store passwords yes store auth creds yes HKEY_CURRENT_USER Software Tigris org Subversion Config auth HKEY_CURRENT_USER Software Tigris org Subversion Config helpers ditor cmd not pad tdiff cmd tdiff3 cmd kdiff3 has program arg HKEY_CURRENT_USER
265. e normalmente seriam omitidos por corres ponderem a um padr o na op o de configura o global ignores ou na proprieda de svn ignore Veja Configura o e Ignorando Itens N o Versionados para mais informa es no unlock N o destrava arquivos automaticamente o comportamento padr o destravar todos os arquivos listados como parte de um commit Veja Travamento para mais informa es non interactive No caso de uma falha de autenticagao ou credenciais insuficientes evita a outra soli cita o de credenciais p ex nome de usu rio ou senha E til se voc estiver execu tando o Subversion dentro de um script automatizado e for mais adequado ter uma fa lha de autentica o do Subversion do que um prompt solicitando mais informa o non recursive N Evita a recurs o de um subcomando dentro de subdiret rios Muitos subcomandos fa zem recurs o por padr o mas alguns subcomandos usualmente aqueles com po tencial de remover ou desfazer suas altera es locais n o notice ancestry Leva os ancestrais diret rios acima em considera o ao determinar diferen as old ARG Utiliza ARG como objeto alvo antigo para uso com svn diff password PASS 204 Refer ncia Completa do Subversion Indica que voc est informando sua senha para autentica o na linha de coman do do contr rio se for preciso o Subversion ir solicit la interativamente quiet
266. e planejada para o futuro Comuta es e Atualiza es Voc reparou que a sa da dos comandos svn switch e svn update possuem a mes ma apar ncia O comando switch na verdade um super comando do comando update Quando voc executa svn update voc est pedindo ao reposit rio para comparar duas rvores O reposit rio assim faz e ent o envia uma descri o das diferen as de volta para o cliente A nica diferen a entre svn switch e svn update que o co mando update sempre compara dois caminhos id nticos Isto se sua c pia de trabalho um espelho de calc trunk ent o svn update comparar automaticamente sua c pia de trabalho de calc trunk com calc trunk na revis o HEAD Se voc est comutando sua c pia de trabalho para um ramo ent o svn switch comparara sua c pia de trabalho de calc trunk com algum outro diret rio de ramo na revis o HEAD Em outras palavras uma atualiza o move sua c pia de trabalho atrav s do tempo Uma comuta o move sua c pia de trabalho atrav s do tempo e do espa o Porque svn switch essencialmente uma variante de svn update ele compartilha os mesmos comportamentos qualquer modifica o local em sua c pia de trabalho preser vada quando novos dados chegam do reposit rio Isso lhe permite executar todos os tipos de truques engenhosos Por exemplo suponha que voc tem uma c pia de trabalho de calc trunk e realizou um certo n me
267. e propriedades que foram mudados Op es revision r REV transaction t no diff added no diff deleted Exemplos Isto mostra um novo arquivo adicionado deletado e copiado svnlook diff r 40 usr local svn repos Copied egg txt from rev 39 trunk vendors deli pickle txt Added trunk vendors deli soda txt Modified trunk vendors deli sandwich txt trunk vendors deli sandwich txt original trunk vendors deli sandwich txt 2003 02 22 17 45 04 000000000 0600 GR 0 0 1 Don t forget the mayo Modified trunk vendors deli logo jpg Binary files differ Deleted trunk vendors deli chips txt Deleted trunk vendors deli pickle txt Se um arquivo tem um conteudo que n o texto propriedade svn mime type ent o as diferen as n o s o explicitamente mostradas 288 Refer ncia Completa do Subversion Nome svnlook dirs changed Mostra os diret rios que foram mudados Sinopse svnlook dirs changed REPOS PATH Descri o Mostra os diret rios que foram mudados edi o de propriedade ou tiveram seus filhos mudados Op es revision r REV transaction t Exemplos Isto mostra os difert rios que foram mudados na revis o 40 no nosso respost rio de exemplo svnlook dirs changed r 40 usr local svn repos trunk vendors deli 289 Refer ncia Completa do Subversion Nome svnlook help Help
268. e sua lti ma atualiza o Use svn update para deixar sua c pia de trabalho em sincronia com a l tima revis o no reposit rio svn update U foo c U e par Updated to revision 2 20 Uso B sico Neste caso algu m submeteu modifica es em foo c e bar c desde a ltima vez que voc atualizou e o Subversion atualizou sua c pia de trabalho para incluir estas modifica es Quando o servidor envia as altera es para sua c pia de trabalho por meio do svn upda te uma letra exibida como c digo pr ximo de cada item para que voc saiba que a es o Subversion executou para deixar sua c pia de trabalho atualizada Para conferir o que essas letras significam veja svn update Fazendo Altera es em Sua C pia de Trabalho Agora voc j pode trabalhar e fazer altera es em sua c pia de trabalho comumente mais conveniente optar por fazer uma altera o ou conjunto de altera es discreta co mo escrever um novo recurso corrigir um bug etc Os comandos do Subversion que voc usar aqui s o svn add svn delete svn copy svn move e svn mkdir No entanto se voc est meramente editando arquivos que j se encontram no Subversion voc pode n o precisar usar nenhum destes comandos para registrar suas altera es H dois tipos de altera es que voc pode fazer em sua c pia de trabalho altera es nos arquivos e altera es na rvore Voc n o precisa avisar ao Subversion que vo
269. ea te a trunk directory to hold the main line of development a branches directory to con tain branch copies and a tags directory to contain tag copies If a repository holds only one project then often people create these top level directories trunk branches tags If a repository contains multiple projects admins typically index their layout by project see Planejando a Organiza o do Reposit rio to read more about project roots paint trunk paint branches paint tags calc trunk calc branches calc tags Of course you re free to ignore these common layouts You can create any sort of variati on 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 the svn move command 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 Remember though that while moving directories may be easy to do you need to be consi derate of your users as well Your juggling can be disorienting to users with existing wor king copies If a user has a working copy of a particular repository directory your svn mo ve operation might remove the path from the latest revision When the user next r
270. eckout para criar o tipo de estrutura aninhada de c pia de trabalho que voc est tentando construir Mas se essa estrutura importante para todos os que usam seu reposit rio todos os outros usu rios precisar o realizar as mesmas opera es de checkout que voc fez Felizmente o Subversion prov suporte para defini es externas Uma defini o externa Exceto talvez uma mente l gica do cl ssico Vulcaniano 65 T picos Avan ados um mapeamento de um diret rio local para a URL e idealmente uma determinada revi s o de um diret rio sob controle de vers o No Subversion voc declara defini es ex ternas em conjunto usando a propriedade svn externals Voc pode criar ou modificar essa propriedade usando svn propset ou svn Ppropedit veja Manipulando Propriedades Essa propriedade pode ser configurada em qualquer diret rio sob controle de vers o e seu valor uma tabela multilinha de subdiret rios relativos ao diret rio sob controle de vers o no qual a propriedade est configurada op es de revis o e URLs absolutas totalmente qualificadas de reposit rios Subversion svn propget svn externals calc third party sounds http sounds red bean com repos third party skins http skins red bean com repositories skinproj third party skins toolkit r21 http svn red bean com repos skin maker A conveni ncia da propriedade svn externals que uma vez configurada em um dire t rio
271. ecurso no entanto entenda no que voc est se metendo Clientes WebDAV tendem a fazer muitas requisi es de escrita resultando em um n mero enorme de revis es submetidas automaticamente Por exemplo ao salvar dados muitos clientes far o um PUT de um arquivo de zero bytes como uma forma de reservar um nome segui da de outro PUT com os dados do arquivo real Um nico salvamento de arquivo resulta em duas submiss es em separado Tamb m considere que muitas aplica es realizam salvamento autom tico em intervalos definidos resultando em ainda mais submiss es de rede Se voc tiver um script de hook post commit que envie um e mail voc pode querer desa bilitar a gera o de e mail como um todo ou em certas se es do reposit rio depende de como voc acha que o fluxo de e mails resultante ainda sejam notifica es importantes ou n o Ainda um script de hook post commit esperto pode diferenciar entre uma transa o criada a partir de autoversionamento e uma criada a partir de um svn commit normal O truque olhar para uma propriedade da revis o chamada svn autoversioned Se exis tir o commit foi feito por um cliente WebDAV gen rico Outro recurso que pode ser um til complemento para o SVNAutoversioning vem do m dulo mod_mime do Apache Se um cliente WebDAV adicionar um novo arquivo ao re posit rio n o haver uma oportunidade para que o usu rio defina a propriedade svn mime type Isto pode fazer com que o arqui
272. ed revision 351 Este exemplo assume que o diret rio calc tags j existe Se ele n o existir voc po de cri lo usando svn mkdir Depois da copia completar o novo diret rio vers o 1 0 ser para sempre uma foto de como o projeto estava na revis o HEAD no momento que a copia foi feita Claro que voc pode querer mais precis o em saber qual revis o a copia foi feita em caso de algu m ter feito commit no projeto quando voc n o estava vendo En t o se voc sabe que a revis o 350 do calc trunk exatamente a foto que voc quer voc pode especificar isso passando r 350 para o comando svn copy Mas espere um pouco n o essa cria o do r tulo o mesmo procedimento para criar um ramo Sim de fato No Subversion n o h diferen a entre um r tulo e um ramo Assim como com ramos a nica raz o uma c pia um r tulo porque humanos decidiram tra tar isso desse jeito desde que ningu m nunca fa a commit para esse diret rio ele perma necer para sempre uma foto Se as pessoas come arem a fazer commit para ele ele se transoforma num ramo Se voc est administrando um reposit rio existe duas maneiras para gerenciar r tulos A primeira n o toque como uma pol tica do projeto decida onde os r tulos v o morar e garanta que todos os usu rios saibam como tratar os diret rios que eles v o copiar para l Isso quer dizer garanta que eles saibam que n o devem fazer neles A segu
273. efetivamente no reposi t rio Os comandos que operam em URLs n o disp em deste luxo ent o quando voc opera diretamente em uma URL quaisquer das a es acima resultam em com mits imediatos Verificando Suas Altera es Tendo terminado de fazer suas altera es voc precisa registr las no reposit rio mas antes de fazer isso quase sempre uma boa id ia conferir exatamente que altera es vo c fez Ao verificar suas altera es antes de dar commit voc pode criar uma mensagem de log bem mais adequada Voc tamb m pode descobrir se n o modificou um arquivo inadvertidamente e ent o ter a oportunidade de reverter essas modifica es antes de dar commit Voc pode ter uma vis o geral das altera es que voc fez usando svn status e obter os detalhes sobre essas altera es usando svn diff Olha M e Sem a Rede Os comandos svn status svn diff e svn revert podem ser usados sem nenhum acesso a rede mesmo se seu reposit rio for disponibilizado em rede Isto facilitar a ger ncia de suas altera es em curso quando voc estiver sem conex o de rede como enquanto estiver voando de avi o andando de trem ou mesmo usando seu Claro que nada completamente exclu do do reposit rio mas apenas da vers o HEAD do reposit rio Voc po de trazer de volta qualquer coisa que voc tenha exclu do dando um checkout ou atualizando sua c pia de tra balho para uma revis o anterior quela e
274. em ria suficiente para o uso manter controle dessas aloca es liberar a mem ria quando voc n o precisa mais dela estas tarefas podem ser bastante complexas E certamente falhar ao fazer essas coisas adequadamente pode resultar em um programa que trava sozinho ou pior ainda trava todo o computador Em linguagens de alto n vel por outro lado deixam o trabalho de gerenciamento de mem ria completamente distante do desenvolvedor E Linguagens como Java e Python usam um coletor de lixo alocando mem ria para os objetos quando necess rio e automaticamente liberando esta mem ria quando o objeto n o est mais em uso A APR fornece uma abordagem de meio termo chamada gerenciamento de memoria baseada em recipientes Isto permite ao desenvolvedor controlar o uso de mem ria em uma resolu o mais baixa por peda os ou recipientes de mem ria em vez de por objeto alocado Ao inv s de usar malloc e similares para alocar mem ria suficiente para um dado objeto voc pede que a APR aloque a mem ria de um reci piente de mem ria Quando voc estiver finalizado o uso dos objetos criados naque le recipiente voc destr i todo o recipiente efetivamente desalocando a mem ria 2Afinal o Subversion usa as APIs do Subversion tamb m 30 Subversion usa chamadas de sistema e tipos de dado em ANSI sempre que poss vel Neon e Berkeley DB s o exemplos de tais bibliotecas Ou pelo menos torn lo algo que voc somen
275. ema de Arquivos do Reposit rio 9 1 75 O ROPOSIOMO seann rea pes dhearadebets aa a nl asc sad Leah fovaridetebebest doves 11 4 1 Ramos de desenvolvimento erre eraaeareraa aan 76 4 2 Layout Inicial do Reposit rio eect ee cece cette eee ae ete eeeeeeeeeeaaeaeneeeeeeeeeaea 77 4 3 Reposit rio COM uma nova c pia ae eeeeeeeeeeeeeeaaaaeeeeeeeeeeeeaea 79 4 4 Ramifica o do hist rico de um arquivo iria 81 8 1 Arquivos e diret rios em duas dimens es nne 188 8 2 Versionando o tempo a terceira dimens o cece ee eeeeeeeeeeeeeeenees 189 viii Lista de Tabelas 1 1 URLs de Acesso ao Reposit rio errar 10 5 1 Comparativo dos Mecanismos de Armazenamento 0 ccccesseeeeeenneeeeeees 111 6 1 Compara o das Op es para o Servidor Subversion 141 C 1 Clientes WebDAV Comuns see rrereeeerraa aaa rraa aaa rnrn nnt 333 Lista de Exemplos 5 1 5 2 5 3 6 1 6 2 6 3 6 4 7 1 7 2 7 3 7 4 7 5 8 1 8 2 8 3 txn info sh Reporting Outstanding Transactions ccccceseeeeeeeeeeeeeeeeees 123 Mirror repository s pre revprop change hook script sssssessssssssrrsrssrrrnens 134 Mirror repository s start commit hook script s ssessssesssssssrrssssrrrrssrrrrssrrrenss 135 Um exemplo de configura o para acesso an nimo i 161 Um exemplo d
276. emover uma trava em um arqui vo Ele pode ser usado para criar pol ticas que especifique quais usu rios s o permitidos para destravar caminhos determinados Isto particularmente importante para determinar pol ticas sobre quebra de travas Se o usu rio A trava um arquivo o usu rio B permitido a quebrar a trava E se a trava existe a mais de uma semana Estes tipos de coisas po dem ser decididas e executadas pelo gancho Se o programa de gancho pre unlock retorna um c digo de sa da n o zero a a o de destrava abortada e qualquer coisa impressa em stderr devolvida ao cliente Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio 2 caminho versionado a ser destravado 3 nome de usu rio autenticado da pessoa tentando o destravamento Usos Comuns controle de acesso 318 Refer ncia Completa do Subversion Nome post unlock Notifica o de um destravamento de caminho com sucesso Descri o O gancho post unlock executa depois que um ou mais caminhos tenham sido destrava dos Isto geralmente usado para enviar mensagem de notifica o do evento de destrava A sua sa da e o c digo de sa da retornados pelo programa de gancho post unlock s o ig norados Par metros de Entrada Os argumentos de linha de comando passados ao programa de gancho em ordem s o 1 caminho do reposit rio 2 nome do usu rio
277. endo uso de funci onalidades do Subversion confira a p gina de Links no site do Subversion http subversion tigris org project_links html 339 Ap ndice E Copyright Copyright c 2002 2007 Ben Collins Sussman Brian W Fitzpatrick C Michael Pilato Este livro est licenciado sob a Licen a Creative Commons Attribution Para ver uma c pia desta licen a visite http creativecommons org licenses by 2 0 br legalcode ou envie uma carta para a Creative Commons 559 Nathan Abbott Way Stanford California 94305 USA Um resumo desta licen a apresentado logo abaixo seguido pelo seu texto completo Voc pode copiar distribuir exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes condi es Atribui o Voc deve dar cr dito aos autores originais Para cada novo uso ou distribui o voc deve deixar claro para outros os termos da licen a desta obra Qualquer uma destas condi es podem ser renunciadas desde que Voc obtenha permiss o dos autores Seu uso leg timo e outros direitos n o s o afetados de forma alguma pelo exposto acima Este texto acima um resumo da licen a que descrita na ntegra abaixo Creative Commons Legal Code tribui o 2 0 na A A INSTITUI O CREATIVE COMMONS N O UM ESCRIT RIO DE ADVOCACIA N PRESTA SERVI OS JUR DICOS A DISTRIBUI O DESTA LICEN
278. entas de diferencia o e fus o No fim das contas o Subversion atualmente nem verifica se as coisas que mencionamos executar eram membros do kit de ferramentas GNU diffutils Mas o nico aspecto configur vel ao usar estas ferramentas externas a sua localiza o no sistema e n o o conjunto de op es par metros ordem etc O Sub version continua incluindo todas essas op es de utilit rios GNU sua ferramenta externa de diferencia o independentemente se o programa em quest o pode entender tais op es ou n o E aqui que as coisas deixam de ser intuitivas para a maioria dos usu rios O ponto chave ao usar ferramentas externas de diferencia o e fus o com o Subversion que n o as diff e diff3 do kit GNU claro usar scripts encapsuladores que convertam a entrada do Subversion em algo que sua ferramenta de diferencia o possa entender e ent o converter a sa da de sua ferramenta de volta num formato esperado pelo Subversi on o formato que as ferramentas GNU deveriam usar As se es seguintes abordam os detalhes sobre esses formatos A decis o sobre quando disparar uma diferencia o ou fus o contextual como parte de uma opera o maior do Subversion feita inteiramente pelo Subver sion e afetada por entre outras coisas se os arquivos em quest o sobre os quais o sistema estiver operando estiver ou n o em um formato leg vel por hu manos como determinado a partir de sua propriedade svn mime ty
279. ente acess vel ao mundo At que voc configure algumas pol ticas de autentica o e autoriza o os reposit rios Subversion que voc dis ponibilizar atrav s da diretiva Location v o estar globalmente acess veis a qualquer um Em outras palavras qualquer pessoa pode usar seu cliente Subversion para dar checkout numa c pia de trabalho de uma URL do reposit rio ou qualquer de seus subdiret rios qualquer pessoa pode navegar interativamente pela ltima revis o do reposit rio sim plesmente direcionando seu navegador web para a URL do reposit rio e qualquer pessoa pode dar commit no reposit rio Certamente voc pode j ter definido um hook script para prevenir commits veja Implementando Ganchos de Reposit rio Mas conforme voc for lendo ver que tam b m poss vel usar os m todos inerentes ao Apache para restringir o acesso de manei ras espec ficas Autentica o HTTP B sica A maneira mais f cil de autenticar um cliente atrav s do mecanismo de autentica o HTTP Basic o qual simplesmente usa um nome de usu rio e senha para verificar se o usu rio quem ele diz ser O Apache prov um utilit rio htpasswd para gerenciar a lista de nomes de usu rios e senhas aceit veis Vamos permitir o acesso a commit a Sally e Harry Primeiro precisamos adicion los ao arquivo de senhas Primeira vez us c para criar o arquivo S Use m para usar criptografia MD5 na senha o qu
280. ente Esta informa o n o apenas inclui o n mero de vers o do cliente mas tamb m uma listagem de todos os m dulos de acesso ao reposit rio que o cliente pode usar para acessar um reposit rio Subversion Com quiet q ele exibe apenas o n mero de vers o de forma compacta xml Exibe a sa da em um formato XML Subcomandos svn Aqui temos v rios subcomandos 206 Refer ncia Completa do Subversion Nome svn add Adiciona arquivos diret rios ou links simb licos Sinopse svn add PATH Descri o Agenda arquivos diret rios ou links simb licos em sua c pia de trabalho para adi o no reposit rio Eles ser o carregados e adicionados efetivamente ao reposit rio em sua pr xima submiss o Se voc adicionar alguma coisa e mudar de id ia antes de realizar o commit voc pode cancelar o agendamento usando svn revert Nomes Alternativos Nenhum Altera C pia de trabalho Acessa o Reposit rio N o Op es targets FILENAME non recursive N quiet q config dir DIR no ignore auto props no auto props force Exemplos Para adicionar um arquivo para sua copia de trabalho S svn add foo c A foo c Ao adicionar um diret rio o comportamento padr o do svn add ser recursivo S svn add testdir A testdir A testdir a A testdir b A testdir c A testdir d Voc tamb m pode adicionar um diret rio sem adicionar seu conte do
281. entos vai se referir URL do reposit rio associada ao diret rio atual da c pia de trabalho e n o ao diret rio local da c pia de traba lho Afinal se voc quer listar o conte do de seu diret rio local voc pode usar um simples Is ou comando equivalente em seu sistema n o Unix Retornando o reposit rio a momentos antigos Al m de todos os comandos acima voc pode usar o svn update e o svn checkout com a op o revision para fazer com que toda a sua c pia de trabalho volte no tempo svn checkout r 1729 Obt m uma nova c pia de trabalho em r1729 svn update r 1729 Atualiza a c pia de trabalho existente para r1729 desfazer modifica es submetidas mas isso n o funciona j que voc n o pode n o pode submeter altera es que voc obteve voltando uma c pia de trabalho se seus arquivos modificados tiverem novas revis es Veja Ressucitando Itens Exclu dos para uma descri o de como desfazer um commit O Muitos novatos no Subversion tentam usar o svn update deste exemplo para Finalmente se voc estiver criando uma vers o final e quiser empacotar seus arquivos do Subversion mas n o gostaria de incluir os inc modos diret rios svn de forma nenhuma ent o voc pode usar o comando svn export para criar uma c pia local de todo o conte do de seu reposit rio mas sem os diret rios svn Da mesma forma que com o svn upda te e svn checkout voc tamb m pode incluir a o
282. environment As a service to the fine developers of our favorite version control system we will be mirro ring the public Subversion source code repository and exposing that mirror publicly on the Internet hosted on a different machine than the one on which the original Subversion sour ce code repository lives This remote host has a global configuration which permits anony mous users to read the contents of repositories on the host but requires users to authenti cate in order to modify those repositories Please forgive us for glossing over the details of Subversion server configuration for the moment those are covered thoroughly in Cap tu lo 6 Configura o do Servidor And for no other reason than that it makes for a more inte resting example we ll be driving the replication process from a third machine the one which we currently find ourselves using First we ll create the repository which will be our mirror This and the next couple of steps do require shell access to the machine on which the mirror repository will live Once the re pository is all configured though we shouldn t need to touch it directly again ssh admin svn example com svnadmin create path to repositories svn mirror admin svn example com s password At this point we have our repository and due to our server s configuration that repository is now live on the Internet Now because we don t want anything modifying the repository exc
283. eposit rio Entre em sua c pia de trabalho e modifique o conte do de algum arquivo Execute svn diff para ver uma sa da unificada de suas altera es Execute svn commit para submeter a nova vers o de seu arquivo ao reposit rio Execute svn update para deixar sua c pia de trabalho atualizada com o reposit rio Para conhecer todas as coisas que voc pode fazer com sua c pia de trabalho leia Cap tulo 2 Uso B sico Neste ponto voc tem a op o de tornar seu reposit rio dispon vel a outras pessoas atra v s de uma rede Consulte Cap tulo 6 Configura o do Servidor para aprender sobre os diferentes tipos de processos servidores e sobre como configur los 323 Ap ndice B Subversion para Usu rios de CVS Este ap ndice um guia para usu rios de CVS novos no Subversion essencialmente uma lista das diferen as entre os dois sistemas como s o vistos a 10 000 p s de altura Em cada se o n s fornecemos refer ncias a cap tulos relevantes quando poss vel Embora o objetivo do Subversion seja assumir a atual e futura base de usu rios do CVS algumas novas caracter sticas e mudan as de projeto foram necess rias para corrigir cer tos comportamentos quebrados que o CVS apresentava Isto significa que como um usu rio de CVS voc pode precisar mudar h bitos a come ar pelos que voc esqueceu que eram estranhos Os N meros de Revis o Agora S o Diferen tes No CV
284. eposit rio est a implementa o do sistema de arqui vos versionado Seu novo sistema de arquivos versionado do reposit rio come a sua vida na revis o 0 que consiste apenas do diret rio raiz de mais alto n vel Inicialmente a re vis o O tamb m tem uma nica propriedadede revis o svn date configurada com o dia hora em que o reposit rio foi criado Agora que voc tem um reposit rio hora de customiz lo Enquanto algumas partes de um reposit rio como seus arquivos de configu ra o e scripts de gancho s o pass veis de serem examinados e modifica dos manualmente voc n o deve e n o deveria precisar modificar outras partes manualmente O comando svnadmin deve ser suficiente para qual quer altera o no seu reposit rio ou voc pode procurar por ferramentas de terceiros como a su te de ferramentas para o Berkeley DB para ajustar sub se es relevantes do reposit rio N o tente manipular manualmente o hist ri co do seu controle de vers es mexendo nos arquivos de armazenamento Implementando Ganchos de Reposit rio Um gancho um programa disparado por um evento ocorrido no reposit rio como a cria o de uma nova revis o ou a modifica o de uma propriedade n o versionada Alguns ganchos os chamados pre hooks s o executados antes da ocorr ncia de uma opera o no reposit rio e prov m um meio tanto de reportar o que est acontecendo quanto de previnir o acontecimento O
285. ept our replication process we need a way to distinguish that process from other would be committers To do so we use a dedicated username for our process Only com mits and revision property modifications performed by the special username syncuser will be allowed We ll use the repository s hook system both to allow the replication process to do what it needs to do and to enforce that only it is doing those things We accomplish this by imple menting two of the repository event hooks pre revprop change and start commit Our pre revprop change hook script is found in Exemplo 5 2 Mirror repository s pre revprop change hook script and basically verifies that the user attempting the property changes is our syncuser user If so the change is allowed otherwise it is denied Exemplo 5 2 Mirror repository s pre revprop change hook script bin sh USER 3 if SUSER syncuser then exit 0 fi 134 Administra o do Reposit rio echo Only the syncuser user may change revision properties gt amp 2 exit 1 That covers revision property changes Now we need to ensure that only the syncuser user is permitted to commit new revisions to the repository We do this using a start commit hook scripts like the one in Exemplo 5 3 Mirror repository s start commit hook script Exemplo 5 3 Mirror repository s start commit hook script bin sh USER 2 if SUSER syncuser then exit
286. er compilado na camada de re de Atribua a esta op o o valor no para desabilitar compacta o por exemplo ao de purar transmiss es de rede neon debug mask Isto uma m scara inteira que a biblioteca HTTP da camada inferior a Neon utiliza para escolher que tipo de sa da de depura o ela deve gerar O valor padr o 0 que ir silenciar toda a sa da de depura o Para mais informa es sobre como o Subver sion faz uso da biblioteca Neon veja Cap tulo 8 Incorporando o Subversion ssl authority files Isto uma lista de caminhos delimitada por pontos e v rgulas para os arquivos que contenham certificados das autoridades certificadoras as ACs que s o aceitas pelo cliente Subversion quando acessando reposit rios sob HTTPS ssl trust default ca Defina esta vari vel para yes se voc quer que o Subversion confie automaticamente no conjunto padr o de ACs que v m com o OpenSSL ssl client cert fil Se um host ou um conjunto de hosts necessitar de um certificado SSL de cliente vo c provavelmente ser solicitado a informar um caminho para seu certificado Ao defi nir esta vari vel para o mesmo caminho o Subversion ser capaz de encontrar seu certificado de cliente automaticamente sem precisa lhe solicitar esta informa o N o h um local padronizado para armazenar seu certificado de cliente no disco o Subver sion conseguir l lo a partir de qualquer caminho que voc especificar ssl client
287. eriamente o uso de um n mero de revis o expl cito O comando svn status tamb m reconhece defini es externas exibindo um c digo de status x para subdiret rios desmembrados nos quais as externas foram obtidas e ent o varrer recursivamente dentro destes subdiret rios para mostrar o status dos pr prios itens externos O suporte que existe para defini es externas no Subversion ainda est abaixo do ideal Primeiro uma defini o externa pode apenas apontar para diret rios n o para arquivos Segundo as defini es externas n o podem apontar para caminhos relativos tais como skins myskin Terceiro o suporte a c pias de trabalho criadas por meio de de fini es externas ainda est desconectado da c pia de trabalho prim ria na qual a propri edade svn externals dos diret rios versionados foi atualmente definida E o Subversi on ainda s pode operar verdadeiramente em c pias de trabalho n o desmembradas En t o por exemplo se voc quiser submeter as altera es que voc tenha feito em um ou mais destas c pias de trabalho externas voc deve executar um svn commit explicita mente nessas c pias de trabalho submeter altera es numa c pia de trabalho n o ir implicar numa recurs o dentro de nenhuma das externas E tamb m como as defini es externas em si usam URLs absolutas a movimenta o ou c pia de um diret rio ao qual elas estejam anexadas n o afetar aquela obtida como uma externa ainda
288. erior vers o 1 2 o OS X vai se negar a montar o compartilhamento como leitura escrita e ele aparecer como somente leitura Isto por 337 WebDAV e Autoversionamento que o OS X insiste em usar travar para o suporte a compartilhamentos leitura escrita e o recurso de travas de arquivos s surgiu no Subversion vers o 1 2 Mais uma palavra de alerta o cliente WebDAV do OS X algumas vezes pode ser excessi vamente sens vel a redirecionamentos HTTP Se o OS X n o for capaz de montar um re posit rio como um todo voc pode precisar habilitar a diretiva BrowserMatch no httpd conf de seu servidor Apache BrowserMatch WebDAVES 1 012 redirect carefully Linux davfs2 Linux davfs2 um m dulo de sistema de arquivos para o kernel do Linux cujo desenvolvi mento est centrado em http dav sourceforge net Uma vez instalado este m dulo um compartilhamento pode ser montado normalmente com o comando mount do Linux mount davfs http host repos mnt dav 338 Ap ndice D Ferramentas de Terceiros O projeto modular do Subversion abordado em Projeto da Biblioteca em Camadas e a disponibilidade de extens es para outras linguagens como descrito em Usando Outras Linguagens al m de C e C o tornam um prov vel candidato a ser usado como uma extens o ou como suporte backend para outros componentes de software Para uma lis tagem de diversas ferramentas de terceiros que est o elas mesmas faz
289. ermitem ou n o que um certo usu rio pode quebrar ou roubar uma trava Os ganchos post lock e post unlock tamb m est o dispon veis e podem ser usados para enviar e mail ap s a es de travamento Para aprender mais sobre ga nhos de reposit rio veja Implementando Ganchos de Reposit rio Comunica o de Travas Vimos como svn lock e svn unlock podem ser usados para criar liberar quebrar e rou bar travas Isso satisfaz o objetivo de serializar o acesso a submiss es de um arquivo Mas o que aconteceu com o maior problema da preven o de perda de tempo Por exemplo suponha que Harry trave um arquivo de imagem e em seguida inicie sua edi o Entretanto a milhas de dist ncia Sally deseja fazer a mesma coisa Ela n o pen sa em executar svn status show updates portanto ele n o tem id ia de que Harry j tenha travado o arquivo Ela gasta horas editando o arquivo e quando ela tenta submeter sua mudan a ela descobre que ou o arquivo est travado ou que ela est desatualizada Indiferente disso suas altera es n o s o mescl veis com as de Harry Uma destas duas pessoas tem que jogar fora seu trabalho e um monte de tempo foi perdido A solu o do Subversion para este problema oferecer um mecanismo para avisar aos usu rios que um arquivo deve ser travado antes de iniciar sua edi o O mecanismo 64 T picos Avan ados uma propriedade especial svn needs lock Se esta propriedade
290. ers es de cada arquivo podem estar vis veis a ltima vers o em cada ramo cada vers o rotulada e claro a ltima vers o no pr prio tronco Assim para refinar ainda mais os termos poderia se frequentemente dizer foo c como aparece em branches REL1 na revis o 5 Para mais detalhes sobre este t pico veja Revis es Vers es de Diret rio O Subversion rastreia estruturas de rvores e n o apenas o conte do dos arquivos Esta uma das maiores raz es pelas quais o Subversion foi escrito para substituir o CVS Aqui est o que isto significa para voc como antigo usu rio de CVS Os comandos svn add e svn delete agora funcionam em diret rios da mesma forma como funcionam em arquivos O mesmo vale para svn copy e svn move Entretanto estes comandos n o causam nenhum tipo de mudan a imediata no reposit rio Em vez disso os itens de trabalho s o simplesmente marcados para adi o ou exclus o Ne 324 Subversion para Usu rios de CVS nhuma mudan a no reposit rio acontece at que voc execute svn commit e Os diret rios n o s o mais simples cont ineres eles t m n meros de revis o como os arquivos Ou mais propriamente correto dizer diret rio foo na revis o 5 Vamos falar mais sobre esse ltimo ponto O versionamento de diret rios um problema dificil como n s queremos permitir c pias de trabalho de revis es mistas h algumas li mita es no quan
291. ersion Cabe notar aqui que existem outras op es para interfacear com o Subversion usando ou tras linguagens v nculos alternativos para o Subversion que n o s o fornecidos por toda a comunidade de desenvolvimento do Subversion Voc pode encontrar links para estes v n culos alternativos na p gina de links do projeto Subversion em http subversion tigris org links html mas existe uma dupla popular que sentimos serem especialmente not veis Primeiro os v nculos PySVN de Barry Scott http pysvn tigris org s o uma op o popular para vincula o com Python PySVN os tenta uma interface mais Pyth nica do que a das APIs baseadas na da C e oferecida pe los v nculos Python do pr prio Subversion Para pessoas procurando por uma implemen ta o puramente em Java do Subversion verifiquem o SVNKit http svnkit com que um Subversion reescrito totalmente em Java Contudo voc deve ter muito cuidado aqui porque o SVNkKit n o utiliza as bibliotecas base do Subversion seu comportamento n o possui garantias de coincidir com o do pr prio Subversion Exemplos de C digo Exemplo 8 1 Usando a Camada de Reposit rio cont m um segmento de c digo escrito em C que ilustra alguns dos conceitos que estamos discutindo Ele usa ambas as interfa ces de reposit rio e sistema de arquivo como pode ser determinado pelos prefixos svn repos esvn fs dos nomes de fun o respectivamente para criar uma nova re vis o
292. ersionamento Extens es WebDAV para gerenciadores de arquivos 10 suporte a WebDAV foi removido do Microsoft Access por algum motivo mas existe nos demais programas da su te de escrit rio 335 WebDAV e Autoversionamento Alguns programas gr ficos gerenciadores de arquivos d o suporte a extens es WebDAV que permitem ao usu rio navegar em compartilhamentos DAV como se fossem apenas mais um diret rio no computador local al m de realizar opera es b sicas de edi o de rvore nos itens naquele compartilhamento Por exemplo o Windows Explorer capaz de navegar em um servidor WebDAV como um local de rede Os usu rios podem arrastar arquivos de e para sua rea de trabalho ou podem renomear copiar ou excluir arquivos normalmente Mas pelo fato de ser apenas um recurso do gerenciador de arquivos o com partilhamento DAV n o vis vel s aplica es ordin rias Todas as intera es DAV de vem acontecer dentro da interface do gerenciador de arquivos Microsoft Web Folders A Microsoft foi uma das incentivadoras originais da especifica o WebDAV e come ou desenvolvendo um cliente no Windows 98 conhecido como Web Folders Este cliente tamb m estava presente no Windows NT4 e no 2000 O cliente Web Folders original era uma extens o para o Explorer o principal programa gr fico usado para navegar em sistemas de arquivos Ele funciona suficientemente bem No Windows 98 o recurso precisa ser explicita
293. ervi o esteja definido ele pode ser parado iniciado ou consultado usan do se as ferramentas GUI o painel de controle administrativo Servi os bem como atra v s da linha de comando C gt net stop svn C gt net start svn O servi o tamb m pode ser desinstalado i e indefinido excluindo se sua defini o sc delete svn Apenas certifique se de parar o servi o antes O programa SC EXE tem di versos outros subcomandos e op es digite sc para saber mais sobre ele Autentica o e autoriza o internos Quando um cliente se conecta a um processo svnserve as seguintes coisas acontecem O cliente seleciona um reposit rio espec fico e O servidor processa o arquivo conf svnserve conf do reposit rio e come a a tomar medidas para ratificar quaisquer pol ticas de autentica o e autoriza o nele definidas Dependendo da situa o e das pol ticas de autoriza o ao cliente pode ser permitido fazer requisi es de forma an nima sem mesmo preci sar receber um desafio de autentica o OU 147 Configura o do Servidor o cliente pode ser desafiado para se autenticar a qualquer tempo OU se operando em modo t nel o cliente ir declarar a si pr prio como j tendo sido ex ternamente autenticado At o momento em que este livro estava sendo escrito o servidor sabia apenas como en viar desafios de autentica o do tipo CRAM MD5 Essencialmente o servidor envia uma pe
294. es Isto seria um grande incomodo para os usu rios se eles forem for ados a digitar suas senhas v rias vezes Felizmente o cliente Subversion possui um rem dio para isto um sistema embutido para armazenamento das credenciais de autentica o em disco Por padr o se o cliente de linha de comando responde com sucesso a um desafio de autentica o do servidor ele salva as credenciais na rea privada de configura o de execu o do usu rio subversion auth em sistemas baseado em Unix ou SAPPDATAS Subversion auth em Windows veja Area de Configura o do Tempo de Execu o para maiores detalhes sobre o sistema de configura o de execu o As credenciais aprovadas s o armazenadas em disco chaveadas com uma combina o do nome do servidor porta e o dom nio de autentica o Quando o cliente recebe um desafio de autentica o ele primeiro procura pelas credenci ais apropriadas na cache em disco do usu rio Se aparentemente nenhuma credencial ap ta est presente ou se em ltimo caso a credencial armazenada falhar ao autenticar en t o o cliente por padr o voltar a solicitar ao usu rio pela informa o necess ria O leitor consciente de seguran a suspeitar imediatamente que h motivo para preocupa o aqui Armazenar senhas em disco Isto terr vel Voc nunca deve fazer isto Os desenvolvedores do Subversion reconhecem a legitimidade de tais preocupa es e por esta raz o o Subver
295. es an RFC 822 format the same type of format used for most email it is not a plaintext file format It is a binary file for mat highly sensitive to meddling For example many text editors will corrupt the file by automatically converting line endings While the Subversion repository dump format contains human readable porti There are many reasons for dumping and loading Subversion repository data Early in Subversion s life the most common reason was due to the evolution of Subversion itself As Subversion matured there were times when changes made to the back end database schema caused compatibility issues with previous versions of the repository so users had to dump their repository data using the previous version of Subversion and load it into a freshly created repository with the new version of Subversion Now these types of schema changes haven t occurred since Subversion s 1 0 release and the Subversion developers promise not to force users to dump and load their repositories when upgrading between minor versions such as from 1 3 to 1 4 of Subversion But there are still other reasons for dumping and loading including re deploying a Berkeley DB repository on a new OS or CPU architecture switching between the Berkeley DB and FSFS back ends or as we ll cover in Filtering Repository History purging versioned data from repository history Whatever your reason for migrating repository history using the svnadmin dump and sv
296. es dispon veis para WebDAV Mais detalhes sobre o que esses softwares oferecem bem como sua categori za o geral podem ser encontrados nas se es seguintes 332 WebDAV e Autoversionamento Tabela C 1 Clientes WebDAV Comuns Software Tipo Windows Mac Linux Descri o Adobe Pho Aplica o X Software de toshop WebDAV in edi o de dependente imagens que permite abrir e escrever di retamente em URLs Web DAV Cadaver Aplica o X X Cliente Web WebDAV in DAV de linha dependente de comando que suporta transfer ncia de arquivos rvores e opera es de travamento DAV Explorer Aplica o X X X Ferramenta WebDAV in GUI Java pa dependente ra navega o em comparti lhamentos WebDAV Macromedia Aplica o X Software de Dreamweaver WebDAV in produ o web dependente capaz de ler de e escrever diretamente em URLs WebDAV Microsoft Offi Aplica o X Su te de pro ce WebDAV in dutividade de dependente escrit rio com diversos com ponentes ca pazes de ler de e escrever diretamente em URLs WebDAV Microsoft Extens o X Programa Web Folders WebDAV pa GUI para ge ra gerencia renciador de dor de arqui arquivos que vos permite ope ra es de r vore em com partilhamen tos WebDAV GNOME Nau Extensao X Gerenciador tilus WebDAV pa de arquivos ra gerencia visual capaz dor de arqui de executar vos opera es de 333 WebDAV e
297. es remotas n o versionadas em uma revis o de reposit rio TARGET apenas determina que reposit rio acessar Nomes Alternativos plist pl Altera C pia de trabalho reposit rio apenas se executando sobre uma URL Acessa o Reposit rio Apenas se executando sobre uma URL Op es verbose v recursive R revision r REV quiet q revprop username USER password PASS no auth cach non interactive config dir DIR Exemplos Voc pode usar proplist para ver as propriedades de um item em sua c pia de trabalho svn proplist foo c Properties on foo c svn mime type svn keywords owner Mas com a op o verbose O svn proplist torna se extremamente til pois tamb m lhe mostra os valores das propriedades svn proplist verbose foo c Properties on foo c 248 Refer ncia Completa do Subversion svn mime type text plain svn keywords Author Date Rev owner sally 249 Refer ncia Completa do Subversion Nome svn propset Define PROPNAME para PROPVAL em arquivos diret rios ou revis es Sinopse svn propset PROPNAME PROPVAL F VALFILE PATH svn propset PROPNAME revprop r REV PROPVAL F VALFILE TARGET Descri o Define PROPNAME para PROPVAL em arquivos diret rios ou revis es O primeiro exemplo cria uma modifica o numa propriedade local versionada na c pia de trabalho e o se gundo cria uma modi
298. esentar seu problema Os autores ainda es t o l continuam observando e n o somente os tr s listados na capa mas muitos outros que contribu ram com corre es e materiais originais Do ponto de vista da comunidade resolver o seu problema meramente um agrad vel efeito de um projeto muito mai or realmente o ajuste paulatino deste livro e em ltimo caso do pr prio Subversion pa ra ver mais de perto como as pessoas o utilizam Eles est o ansiosos para ouvir voc n o apenas porque eles querem ajud lo mas porque voc tamb m os ajuda Com o Subver sion assim como em todo projeto ativo de software livre voc n o est sozinho Que este livro seja seu primeiro companheiro xii Pref cio importante n o deixar que o perfeito se torne inimigo do bom mesmo quando voc puder estar certo sobre o que o perfeito Duvide quando voc n o puder Como desagrad vel ser aprisionado pelos erros passa dos voc n o pode fazer qualquer progresso tendo medo de sua pr pria sombra durante a a o Greg Hudson No mundo dos softwares open source o Concurrent Versions System CVS foi a ferra menta escolhida para controle de vers o por muitos anos E com raz o O pr prio CVS um software open source tamb m e seu modus operandi n o restritivo e o suporte a ope ra es de rede permitiram que diversos programadores distribu dos geograficamente com partilhassem seus trabalhos Ele atende natur
299. essa as tabe las as aplica es n o precisam se preocupar com rela o a conflitos de permiss o No entanto esse tipo de cen rio n o se aplica ao Berkeley BD O Subversion e os progra mas que usam bibliotecas do Subversion acessam as tabelas da base de dados direta mente o que quer dizer que o travamento de um programa pode deixar a base de dados temporariamente inconsistente em um estado inacess vel Quando isso acontece um ad ministrador precisa solicitar que o Berkeley DB restaure se a partir de um ponto de verifi ca o o que um tanto quanto inconveniente Outras coisas tamb m podem comprometer um reposit rio em virtude de processos travados tais como conflitos entre programas relacionados a permiss es e propriedades dos arquivos na base de dados O Berkeley DB 4 4 oferece para o Subversion nas vers es do Subversion 1 4 e superiores a capacidade de se recuperar o ambiente do Berkeley DB de forma autom tica e transparente caso necess rio Quando um processo do Subversion se interliga a um ambiente Berkeley DB do reposit rio ele utiliza alguns mecanismos de contabiliza o para detectar quaisquer desconex es de processos anteriores executa alguma recupera o necess ria e ent o prossegue como se nada tiver acontecido Isto n o elimina completamente as possibilidade de corrup o de inst ncias do reposit rio mas reduz drastica mente a necessidade de intera o humana necess ria para se recuperar des
300. esta diretiva ou SVNParent Path deve estar presente mas n o ambas SVNSpecialURI Especifica o componente URI espa o de nome para recursos especiais do Subversi on O padr o svn e a maioria dos administradores nunca usar o esta diretiva Somente defina ela se houver uma necessidade premente de ter um arquivo chamado svn em seu reposit rio Se voc mudar ela em um servidor j em uso ele quebrar todas as c pias de trabalho existentes e seus usu rios ca ar o voc com garf es e tochas de fogo SVNReposName Especifica o nome de um reposit rio Subversion a ser usado nas respostas HTTP GET Este valor ser colocado no in cio do t tulo de todas as listagens de diret rio as quais s o servidas quando voc navega em um reposit rio Subversion com um nave gador web Esta diretiva opcional SVNIndexXSLT Especifica a URI de uma transforma o XSL para os ndices de diret rio Esta diretiva opcional SVNParentPath Especifica o local no sistema de arquivo de um diret rio pai cujos diret rios filhos s o reposit rios do Subversion Em um bloco de configura o para um reposit rio Subver sion ou esta diretiva ou SVNPath deve estar presente mas n o ambas SVNPathAuthz Controla a autoriza o baseada em caminho ao habilitar ou desabilitar sub re quisi es Veja Desabilitando Verifica o baseada em Caminhos para detalhes 308 Refer ncia Completa do Subversion Propriedades
301. et rios para ramifica es branches e r tulos tags veja Cap tulo 4 Fundir e Ramificar a comunidade recomenda que voc escolha uma localiza o para ca da raiz de projeto o mais alto diret rio que ir conter dados relacionados com o proje to e ent o criar tr s subdiret rios abaixo desse raiz trunk o diret rio no qual o desen volvimento principal do projeto ocorre branches diret rio no podem ser criados v rios ramos da linha principal de desenvolvimento tags diret rio que poder conter uma cole o de instant neos de rvores de diret rio que s o criados e possivelmente destru dos mas nunca alterados Por exemplo seu reposit rio poder se parecer com o seguinte calc trunk Quer seja baseado na ignor ncia ou em fracos conceitos sobre como produzir m tricas de desenvolvimento cor retamente n meros de revis es globais s o uma coisa tola para temer e n o o tipo de coisa que voc deveria pesar na hora de decidir como organizar seus projetos e reposit rios O trio trunk tags branches s o muitas vezes chamados de diret rios TTB 109 Administra o do Reposit rio tags branches calendar trunk tags branches spreadsheet trunk tags branches Note que n o importa onde est cada raiz de projeto no seu reposit rio Se voc possuir somente um nico projeto por reposit rio o lugar mais l gico para colocar cada raiz de projeto na raiz d
302. eu arquivo a n o ser que seja explicitamente solicitado Afinal voc pode estar escreven do um documento sobre como usar palavras chave e voc n o quer que o Subversion 54 T picos Avan ados substitua seus belos exemplos de ncoras de palavra chave permanecendo n o substitu das Para dizer ao Subversion se substitui ou n o as palavras chave em um arquivo particular voltamos novamente aos subcomandos relacionados a propriedades A propriedade svn keywords quando definida em um arquivo versionado controla quais palavras cha ve ser o substitu das naquele arquivo O valor uma lista delimitada por espa os dos no mes ou apelidos de palavra chave encontradas na tabela anterior Por exemplo digamos que voc tenha um arquivo versionado nomeado weather txt que possui esta apar ncia Aqui est o mais recente relat rio das linhas iniciais SLastChangedDate SRevs Ac mulos de nuvens est o aparecendo com mais freqti ncia quando o ver o se aprox Sem definir a propriedade svn keywords neste arquivo o Subversion far nada especi al Agora vamos permitir a substitui o da palavra chave Last ChangedDate svn propset svn keywords Date Author weather txt property svn keywords set on weather txt Agora voc fez uma modifica o local da propriedade no arquivo weather txt Voc ve r nenhuma mudan a no conte do do arquivo ao menos que voc tenha feito alguma de fini o na propriedade a
303. eu programa de terminal fa vorito Voc adiciona novos arquivos e diret rios passando seus futuros caminhos para as fun es certas da API Voc requisita informa es sobre eles pelo mesmo mecanismo Ao contr rio de muitos sistemas de arquivos entretanto um caminho sozinho n o infor ma o suficiente para identificar um arquivo ou diret rio no Subversion Pense na rvore de diret rios como um sistema de duas dimens es onde um irm o de um n representa uma esp cie de movimento horizontal e descendo nos subdiret rios um movimento verti cal Figura 8 1 Arquivos e diret rios em duas dimens es mostra uma t pica representa o de uma rvore exatamente assim Figura 8 1 Arquivos e diret rios em duas dimens es A diferen a aqui que o sistema de arquivos Subversion tem uma brilhante terceira di mens o que muitos sistemas de arquivos n o possuem Tempo Na interface de siste ma de arquivos quase toda fun o que tem um um argumento path tamb m espera um argumento root Este argumento svn fs root t descreve tanto uma revis o quanto uma transa o do Subversion que simplesmente uma revis o em forma o e oferece esse contexto de terceira dimens o necess rio para entender a diferen a entre foot bar na revis o 32 e o mesmo caminho existente na revis o 98 A Figura 8 2 Versionando o tempo a terceira dimens o mostra o hist rico de revis es como uma dimens o adicio nal no unive
304. extuais em arquivos de texto modificados local mente mas n o tentar fazer o mesmo com arquivos bin rios Para determinar se uma fus o contextual poss vel o Subversion examina a propriedade svn mime type Se o arquivo n o tem a propriedade svn mime type ou tem um mi me type que textual por exemplo text o Subversion sup e que ele texto Caso contr rio o Subversion sup e que o arquivo bin rio O Subversion tamb m ajuda os usu rios executando um algoritmo para detectar arquivos bin rios nos comandos svn im port e svn add Estes comandos far o uma boa suposi o e ent o possivelmente colo car o uma propriedade svn mime type bin ria no arquivo que est sendo adicionado Se o Subversion fizer uma suposi o errada o usu rio sempre pode remover ou editar manualmente a propriedade M dulos sob Controle de Vers o Diferentemente do que ocorre no CVS uma c pia de trabalho do Subversion sabe que 328 Subversion para Usu rios de CVS efetuou checkout de um m dulo Isso significa que se algu m muda a defini o de um m dulo por exemplo adiciona ou remove componentes ent o uma chamada a svn update ir atualizar a c pia de trabalho apropriadamente adicionando e removendo componen tes O Subversion define m dulos como uma lista de diret rios dentro de uma propriedade de diret rio veja Defini es Externas Autentica o Com o pserver do CVS exige se que voc in
305. ez que o usu rio pode usar o comando svn merge para definir e aplicar qualquer delta antigo para a c pia de trabalho o delta pode conter altera es que n o se aplicam sem erros ao arquivo local mesmo que o arquivo n o tenha modifica es locais Outra pequena diferen a entre os comandos svn update e svn merge o nome dos ar quivos de texto criados quando ocorre um conflito Em Resolvendo Conflitos Combinando Altera es de Outros vimos que um update produz arquivos nomeados de filename mine filename rOLDREV e filename rNEWREV Entretanto quando o comando svn merge produz um conflito ele cria tr s arquivos nomeados como filena me working filename left e filename right Neste caso os termos left e right est o indicando de que lado da compara o vieram os arquivos Em todo caso es ses nomes v o ajuda lo a diferenciar conflitos que s o resultado de um update ou de uma fus o Percebendo ou Ignorando os Ancestrais Ao conversar com um desenvolvedor do Subversion voc frequentemente ouviria refer n cias ao termo ancestral Esta palavra usada para descrever a rela o entre dois objetos em um reposit rio se estiverem relacionados entre si ent o um objeto dito ser um an cestral do outro Por exemplo suponha que voc submeta a revis o 100 a qual inclui uma mudan a num arquivo foo c Ent o foo c 99 o ancestral de ancestral de foo c 100 Por outro lado suponha que v
306. eza colaborativa do mundo open source como um todo O CVS e seu modelo de desenvolvimento semi ca tico se tornou um mar co da cultura open source Mas o CVS tamb m tinha seus defeitos e simplesmente corrigir estes defeitos prometia ser um enorme esfor o Chega o Subversion Desenvolvido para ser um sucessor do CVS os criadores do Subversion pretendiam ganhar a simpatia dos usu rios CVS de du as maneiras criando um sistema open source com o projeto e a apar ncia semelhan te ao do CVS e tentando evitar muitos de seus conhecidos defeitos Por mais que o resul tado n o seja necessariamente a pr xima grande evolu o no projeto de controle de ver s o o Subversion muito poderoso muito us vel e muito flex vel E agora muitos proje tos open source quase todos rec m iniciados preferem agora o Subversion ao CVS Este livro foi escrito para documentar a s rie 1 4 do sistema de controle de vers o Subver sion N s tentamos ser bem profundos em nossa abordagem Entretanto o Subversion possui uma comunidade de desenvolvedores pr spera e cheia de energia ent o eles j t m um conjunto de recursos e melhorias planejadas para futuras vers es do Subversion que podem mudar alguns dos comandos e notas espec ficas deste livro P blico Alvo Este livro foi escrito para pessoas habituadas com computadores que desejam usar o Subversion para gerenciar seus dados Ainda que o Subversion rode em v rios sistemas operacionais d
307. fica o numa propriedade remota n o versionada em uma revis o de reposit rio TARGET apenas determina que reposit rio acessar O Subversion tem um conjunto de propriedades especiais que afetam seu comportamento Veja Propriedades do Subversion para mais sobre estas propriedades Nomes Alternativos pset ps Altera C pia de trabalho reposit rio apenas se executando sobre uma URL Acessa o Reposit rio Apenas se executando sobre uma URL Op es file F FIL quiet q revision r R targets FILENAME recursive R revprop username USER password PASS no auth cach non interactive encoding ENC force config dir DIR GI q lt Exemplos Define o tipo mime de um arquivo svn propset svn mime type image jpeg foo jpg property svn mime type set on foo jpg 250 Refer ncia Completa do Subversion Em um sistema UNIX se voc quiser que um arquivo tenha a permiss o de execu o de finida svn propset svn executable ON somescript property svn executable set on somescript Talvez voc tenha uma politica interna que defina certas propriedades para beneficiar seus colaboradores svn propset owner sally foo c property owner set on foo c Se voc se enganar escrevendo uma mensagem de log para uma dada revis o e quiser mud la use revprop e atribua o valor de svn 1og para a nova mensagem de lo
308. ficient credentials prevents prompting for credentials e g username or password This is useful if you re running Subversion inside of an automated script and it s more appropriate to have Subversion fail than to prompt for more information 299 Refer ncia Completa do Subversion password PASS Indicates that you are providing your password for authentication on the command li ne otherwise if it is needed Subversion will prompt you for it username NAME Indicates that you are providing your username for authentication on the command li ne otherwise if it is needed Subversion will prompt you for it svnsync Subcommands Here are the various subcommands 300 Refer ncia Completa do Subversion Nome svnsync copy revprops Copy all revision properties for a given revision from the source repository to the mirror repository Sinopse svnsync copy revprops DEST URL REV Descri o Because Subversion revision properties can be changed at any time it s possible that the properties for some revision might be changed after that revision has already been synch ronized to another repository Because the svnsync synchronize command operates only on the range of revisions that have not yet been synchronized it won t notice a revision property change outside that range Left as is this causes a deviation in the values of that revision s properties between the source and mirror repositorie
309. figurou a autentica o mas n o a autoriza o O Apache capaz de desafiar cliente e confirmar identidades mas n o est sendo dito como permitir ou res tringir acesso a clientes que possuam estas identidades Esta se o descreve duas estra t gias para controle de acesso de seus reposit rios Controle de Acesso Geral A maneira mais simples de controle de acesso autorizar certos usu rios ou para acesso somente leitura a um reposit rio ou acesso leitura escrita a um reposit rio The simplest form of access control is to authorize certain users for either read only access to a repository or read write access to a repository Voc pode restringir acesso em todas as opera es de reposit rio adicionando a diretiva Require valid user ao seu bloco lt Location gt Usando nosso exemplo anterior isto significa que apenas aos clientes que afirmaram ser harry OU sally e forneceram a se nha correta para seus respectivos nomes de usu rio ser permitido fazer qualquer coisa com o reposit rio Subversion Pessoas mais preocupadas com seguran a podem n o querer armazenar a senha do certificado de cliente no arquivo servers em tempo de execu o 159 Configura o do Servidor lt Location svn gt DAV svn SVNParentPath usr local svn como autenticar um usu rio AuthType Basic AuthName Subversion repository AuthUserFile caminho do arquivo users apenas usu rios autenticados podem acessar o reposi
310. for deciding how to deal with empty revisions If a given revision contained only changes to paths that were filtered out that now empty revision could be considered uninteresting or even unwanted So to give the user control over what to do with those revisions svndumpfilter provides the following command line options drop empty revs Do not generate empty revisions at all just omit them renumber revs If empty revisions are dropped using the drop empty revs option change the revision numbers of the remaining revisions so that there are no gaps in the numeric sequence preserve revprops If empty revisions are not dropped preserve the revision properties log message author date custom properties etc for those empty revisions Otherwise empty revi sions will only contain the original datestamp and a generated log message that indi cates that this revision was emptied by svndumpfilter While svndumpfilter can be very useful and a huge timesaver there are unfortunately a couple of gotchas First this utility is overly sensitive to path semantics Pay attention to whether paths in your dump file are specified with or without leading slashes You ll want to look at the Node path and Node copyfrom path headers Node path spreadsheet Makefil If the paths have leading slashes you should include leading slashes in the paths you pass to svndumpfilter include and svndumpfilter exclude and if they don t yo
311. fus es mer ges 106 Cap tulo 5 Administra o do Reposit rio O reposit rio Subversion a central de todos os dados que est o sendo versionados As sim ele se transforma num candidato bvio para receber todo amor e aten o que um ad ministrador pode oferecer Embora o reposit rio seja geralmente um item de baixa manu ten o importante entender como configurar e cuidar apropriadamente para que proble mas potenciais sejam evitados e problemas eventuais sejam resolvidos de maneira segu ra Neste cap tulo vamos discutir sobre como criar e configurar um reposit rio Subversion Vamos falar tamb m sobre manuten o dando exemplos de como e quando usar as fer ramentas svnlook e svnadmin providas pelo Subversion Vamos apontar alguns questio namentos e erros e dar algumas sugest es sobre como organizar seus dados em um re posit rio Se voc planeja acessar um reposit rio Subversion apenas como um usu rio cujos dados est o sendo versionados isto por meio de um cliente Subversion voc pode pular es se cap tulo todo Entretanto se voc ou deseja se tornar um administrador de um repo sit rio Subversion este cap tulo para voc O Reposit rio Subversion Defini o Antes de entrarmos no vasto t pico da administra o do reposit rio vamos primeiro defi nir o que um reposit rio Como ele se parece Como ele se sente Ele gosta de ch ge lado ou quente doce e com lim o
312. g svn propset revprop r 25 svn log Journaled about trip to New York property svn log set on repository revision 25 Ou se voc n o tiver uma c pia de trabalho voc pode informar uma URL svn propset revprop r 26 svn log Document nap http svn red bean com r property svn log set on repository revision 25 Por fim voc pode informar ao propset para obter suas entradas a partir de um arquivo Voc ainda pode usar isso para definir o conte do de uma propriedade para qualquer va lor binario svn propset owner pic F sally jpg moo c property owner pic set on moo c Por padr o voc n o pode modificar propriedades de revis o em um reposit rio Subversion O administrador de seu reposit rio deve explicitamente permi tir modifica es em revis es de propriedades criando um script de extens o hook chamado pre revprop change Veja Implementando Ganchos de Reposit rio para mais informa es sobre scripts de extens o 251 Refer ncia Completa do Subversion Nome svn resolved Remove arquivo ou diret rios da c pia de trabalho do estado de conflito Sinopse svn resolved PATH Descri o Remove o estado de conflito em arquivos ou diret rios numa c pia de trabalho Esta roti na n o resolve marcadores de conflito semanticamente ele apenas remove os arquivos auxiliares relacionados ao conflito e permite que o PATH possa ser submetido novamente is
313. g indica que ele tamb m deve desfazer certas altera es em integer c 0 que voc n o quer Certamente voc poderia fazer uma mesclagem reversa da revis o 808 e ent o executar um svn revert nas modifica es locais em integer c mas esta t cnica n o bem escal vel E se tiv ssemos 90 arquivos modificados na revis o 808 Uma segunda e mais precisa estrat gia envolve n o usar o svn merge mas o comando svn copy em seu lugar Simplesmente copie a revis o exata e o caminho como par de coordenadas do reposit rio para sua c pia de trabalho svn copy r 807 http svn example com repos calc trunk real c real c S svn status A real c S svn commit m Resurrected real c from revision 807 calc trunk real c Adding real c Transmitting file data Committed revision 1390 O sinal de mais na sa da do comando status indica que o item n o est meramente agen dado para adi o mas agendado para adi o com hist rico O Subversion lembra de on de ele foi copiado No futuro executar svn log neste arquivo ir percorrer at o arquivo 94 Fundir e Ramificar ressucitado e atrav s do hist rico que ele tinha antes da revis o 807 Em outras palavras este novo real c n o realmente novo um descendente direto do arquivo original que fora exclu do Apesar de nosso exemplo nos mostrar uma ressurrei o de arquivo veja que estas mes mas t cnicas funcionam muito bem tamb m para ress
314. grafar toda a comunica o O SSH tamb m usado exclusivamente para autentica o ent o s o necess rias contas reais no sistema do host servidor diferentemente do uso do svnserve tradicional que possui suas pr prias contas de usu rio particulares Finalmente pelo fato desta con figura o precisar que cada usu rio dispare um processo tempor rio svnserve particular esta op o equivalente do ponto de vista de permiss es a permitir total acesso de um grupo local de usu rios no reposit rio por meio de URLs file Assim controle de acesso com base em caminhos n o faz sentido j que cada usu rio est acessando os arquivos da base de dados diretamente Aqui est um breve sum rio destas tr s configura es t picas de servidor Tabela 6 1 Compara o das Op es para o Servidor Subversion 141 Configura o do Servidor Caracter stica Apache mod dav svn svnserve svnserve sobre SSH Op es de autentica o Autentica o b sica HTTP S certificados X 509 LDAP NTLM ou quaisquer outros mecanismos disponi veis ao Apache httpd CRAM MD5 SSH Op es para contas de usu rios arquivo users priva tivo arquivo users priva tivo contas no sistema Op es de autoriza o acesso leitura escrita pode ser dado para o reposit rio como um todo ou especificado acesso leitura escrita pode ser dado para o reposit rio como um todo
315. gs backups of only the portion of the repository data that has changed since the previous backup As far as full backups go the naive approach might seem like a sane one but unless you temporarily disable all other access to your repository simply doing a recursive directory copy runs the risk of generating a faulty backup In the case of Berkeley DB the documen tation describes a certain order in which database files can be copied that will guarantee a valid backup copy A similar ordering exists for FSFS data But you don t have to imple ment these algorithms yourself because the Subversion development team has already done so The svnadmin hotcopy command takes care of the minutia involved in making a hot backup of your repository And its invocation is as trivial as Unix s cp or Windows copy operations svnadmin hotcopy path to repos path to repos backup The resulting backup is a fully functional Subversion repository able to be dropped in as a replacement for your live repository should something go horribly wrong When making copies of a Berkeley DB repository you can even instruct svnadmin hot copy to purge any unused Berkeley DB logfiles see Purging unused Berkeley DB logfi les from the original repository upon completion of the copy Simply provide the clean logs option on the command line svnadmin hotcopy clean logs path to bdb repos path to bdb repos backup Additional tooling around this command is a
316. gurar seu bloco Location para usar a diretiva AuthzSVNAccessFile a qual especifica um arquivo contendo pol ticas de permiss es para caminhos dentro de seus reposit rios Logo logo vamos discutir o formato deste ar quivo O Apache flex vel ent o voc tem a op o de configurar seu bloco em um destes tr s padr es gerais Para come ar escolha um destes tr s padr es de configura o Os exemplos abaixo s o muito simples consulte a documenta o do pr prio Apache para ter muito mais detalhes sobre as op es de autentica o e autoriza o do Apache O bloco mais simples permitir acesso abertamente a todo mundo Neste cen rio o Apa che nunca envia desafios de autentica o ent o todos os usu rios s o tratados como anonymous Exemplo 6 1 Um exemplo de configura o para acesso an nimo lt Location repos gt DAV svn SVNParentPath usr local svn nossa pol tica de controle de acesso AuthzSVNAccessFile caminho do arquivo access lt Location gt No outro extremo da escala de paran ia voc pode configurar seu bloco para requisitar autentica o de todo mundo Todos os clientes devem prover suas credenciais para se identificarem Seu bloco requer autentica o incondicional atrav s da diretiva Require valid user e define meios para autentica o Exemplo 6 2 Um exemplo de configura o para acesso autenticado lt Location repos gt DAV svn SVNParentPath usr local svn noss
317. h had a relatively short lifetime you may have created it to fix a bug or implement a new feature When your task is done so is the branch In soft ware development though it s also common to have two main branches running side by side for very long periods For example suppose it s time to release a stable version of the calc project to the public and you know it s going to take a couple of months to shake bugs out of the software You don t want people to add new features to the project but you don t want to tell all developers to stop programming either So instead you create a stable branch of the software that won t change much svn copy http svn example com repos calc trunk http svn example com repos calc branches stable 1 0 m Creating stable branch of calc project Committed revision 377 And now developers are free to continue adding cutting edge or experimental features to calc trunk and you can declare a project policy that only bug fixes are to be commit ted to calc branches stable 1 0 That is as people continue to work on the trunk a human selectively ports bug fixes over to the stable branch Even after the stable branch has shipped you ll probably continue to maintain the branch for a long time that is as long as you continue to support that release for customers Ramos de fornecedores Como especialmente o caso quando se trata de desenvolvimento de software os dados que voc mant
318. his option all the existing repository revisions will be dumped svnadmin dump myrepos r 23 gt rev 23 dumpfile svnadmin dump myrepos r 100 200 gt revs 100 200 dumpfile As Subversion dumps each new revision it outputs only enough information to allow a fu ture loader to re create that revision based on the previous one In other words for any gi ven revision in the dump file only the items that were changed in that revision will appear in the dump The only exception to this rule is the first revision that is dumped with the cur rent svnadmin dump command By default Subversion will not express the first dumped revision as merely differences to 128 Administra o do Reposit rio be applied to the previous revision For one thing there is no previous revision in the dump file And secondly Subversion cannot know the state of the repository into which the dump data will be loaded if it ever is To ensure that the output of each execution of svnadmin dump is self sufficient the first dumped revision is by default a full representation of every directory file and property in that revision of the repository However you can change this default behavior If you add the incremental option when you dump your repository svnadmin will compare the first dumped revision against the previous revision in the repository the same way it treats every other revision that gets dumped It will then output the first revision exa
319. i vel definir regras de acesso mais pormenorizadas Um conjunto de usu rios podem ter permiss o para escrever em um certo diret rio do reposit rio mas n o em outros outro 166 Configura o do Servidor diret rio pode n o ser leg vel por todos exceto alguns usu rios em particular Ambos os servidores usam um formato de arquivo comum para descrever estas regras de acesso baseadas em caminhos No caso do Apache precisa se carregar o m dulo mod authz svn e ent o adicionar se a diretiva AuthzSVNAccessFile dentro do arqui vo httpd conf para apontar para seu arquivo de regras Para uma descri o completa veja Controle de Acesso por Diret rio Se voc est usando o svnserve ent o voc precisa fazer a vari vel authz db dentro do svnserve conf apontar para seu arquivo de regras Voc realmente precisa de controle de acesso baseado em caminhos Muitos administradores que configuram o Subversion pela primeira vez tendem a usar controle de acesso baseado em caminhos mesmo sem pensar muito sobre ele O administrador comumente sabe quais equipes de pessoas est o trabalhando em quais projetos ent o f cil considerar isso e permitir que certas equipes acessem determinados diret rios e n o outros Parece uma coisa natural e isso at tranquiliza os desejos dos administradores de manter um controle r gido do reposit rio Perceba por m que sempre h custos invis veis e vis veis associados a es
320. ia de trabalho do seu ramo privado e agora existe co mo uma modifica o local A esta altura depende de voc revisar essa modifica o local e ter certeza de funciona Em outra simula o poss vel que as coisas n o tenham ocorrido t o bem assim e o ar quivo integer c tenha entrado em estado de conflito Pode ser que voc precise resol ver o conflito usando procedimentos padr o veja Cap tulo 2 Uso B sico ou se voc de cidir que fazer a fus o dos arquivos tenha sido uma m id ia desista e rode o comando svn revert para retirar as modifica es locais Partindo do pressuposto que voc revisou as modifica es do processo de fus o ent o voc pode fazer o svn commit como de costume A este ponto a mudan a foi fusionada ao seu ramo no reposit rio Em tecnologias de controle de vers o esse ato de copiar mu dan as entre ramos recebe o nome de portar mudan as Quando voc fizer o commit das modifica es locais n o esque a de colocar na mensa gem de log que voc est portando uma modifica o especifica de um ramo para ou tro Por exemplo svn commit m integer c ported r344 Sending integer c Transmitting file data Committed revision 360 spelling fixes from trunk Como voc ver nas pr ximas se es essa uma boa pratica important ssima a ser se guida pat Hunk Hunk Hunk Hunk done Porque nao usar Patches Gla oo aires 1 succeeded 2 s
321. ias relacionadas ao conceito Depois de algumas revis es nas quais c di gos reais foram adicionados e manipulados n s na revis o 20 renomeamos este diret rio para frabnaggilywort L pela revis o 27 temos um novo conceito e criamos um novo diret rio concept para armazen lo e um novo arquivo IDEA para descrev lo E assim cinco anos e vinte mil revis es se passaram tal como seria em qualquer hist ria de romance que se preze Agora anos depois nos questionamos como seria ter d e volta o arquivo IDEA tal como na revis o 1 Mas o Subversion precisa saber se n s estamos querendo saber sobre como o atual arquivo se pareceria na revis o 1 ou se estamos solicitando o conte do de qualquer que fosse o arquivo que estivava como concept s IDI EA na revis o 1 Certamente estas 70 T picos Avan ados quest es t m respostas diferentes e devido as revis es marcadoras poss vel obter am bas as respostas Para ver como o arquivo IDEA atual era naquela revis o antiga voc executa svn cat r 1 concept IDEA svn Unable to find repository location for concept IDEA in revision 1 claro neste exemplo o atual arquivo IDEA n o existia ainda na revis o 1 ent o o Sub version lhe exibe um erro O comando acima uma vers o resumida para uma nota o mais longa que relaciona explicitamente uma revis o marcadora A nota o expandida svn cat r 1 concept
322. icado do ser vidor ser armazenado em cache em sua rea privativa de tempo de execu o auth da mesma forma que seu nome de usu rio e senha s o armazenados veja Armazenando Credenciais no Cliente Uma vez armazenado o Subversion automaticamente lembrar de confiar neste certificado em negocia es futuras Seu arquivo em tempo de execu o servers tamb m lhe possibilita fazer seu cliente Subversion confiar automaticamente em ACs espec ficas tanto de forma global quanto discriminadamente por ssl authority files para uma lista de certificados das ACs com codifica o PEM separados por ponto e v rgula global ssl authority files caminho do CAcert1 pem caminho do CAcert2 pem Muitas instala es OpenSSL tamb m possuem um conjunto pr definido de ACs padr o que s o quase que universalmente confi veis Para fazer o cliente Subversion confiar au tomaticamente nestas autoridades padr o atribua o valor da vari vel ssl trust default ca para true Ao conversar com o Apache o cliente Subversion pode tamb m receber um desafio para um certificado de cliente O Apache est solicitando que o cliente identifique a si pr prio o 158 Configura o do Servidor cliente quem ele realmente diz ser Se tudo prosseguir corretamente o cliente Subversi on manda de volta um certificado privativo assinado por uma AC na qual o Apache confia O certificado do cliente comumente armazenado em disco num forma
323. ich txt Transmitting file data Committed revision 4 30 Uso B sico Se voc n o especificar a op o message nem a file o Subversion vai abrir auto maticamente seu editor de texto preferido veja a se o editor cma em Configura o para compor a mensagem de log Se voc estiver escrevendo a mensagem de log em seu editor neste ponto e iy decidir cancelar seu commit voc pode apenas sair do seu editor sem salvar suas altera es Se voc j salvou sua mensagem de log simplesmente ex clua o texto salve novamente ent o feche o programa svn commit Waiting for Emacs Done Log message unchanged or not specified a bort c ontinue e dit a O reposit rio n o sabe nem mesmo se importa se suas modifica es sequer fazem senti do como um todo ele apenas garante que ningu m mais tenha modificado nada dos mes mos arquivos que voc enquanto voc n o estava olhando Se algu m tiver feito isso o commit todo ir falhar com uma mensagem informando a voc que um ou mais de seus arquivos est desatualizado svn commit m Add another rule Sending rules txt svn Commit failed details follow svn Your file or directory sandwich txt is probably out of date Os dizeres exatos desta mensagem de erro dependem de qual protocolo de rede e qual servidor voc est usando mas a id ia a mesma em todos os casos Neste ponto voc precisa executar svn update lidar com quaisquer me
324. icie sess o no servidor antes de qualquer opera o de leitura ou escrita as vezes voc tem de iniciar uma sess o at para opera es an nimas Com um reposit rio Subversion usando Apache httpd ou svnserve como servidor voc n o fornece quaisquer credenciais de autentica o a princ pio se uma opera o que voc realiza requer autentica o o servidor ir pedir suas credenciais sejam essas credenciais nome de usu rio e senha um certificado de cliente ou mesmo ambos Assim se o seu reposit rio pode ser lido por todo o mundo n o ser exigido que voc se autentique para opera es de leitura Assim como o CVS o Subversion ainda guarda suas credenciais em disco em seu diret rio subversion auth a menos que voc o instrua a n o faz lo usando a op o no auth cach A exce o a este comportamento entretanto no caso de se acessar um servidor svn serve atrav s de um t nel SSH usando o esquema de URL svn ssh Nesse caso o programa ssh incondicionalmente requer autentica o para iniciar o t nel Convertendo um Reposit rio de CVS para Subversion Talvez a forma mais importante de familiarizar usu rios de CVS com o Subversion dei x los continuar trabalhando em seus projetos usando o novo sistema E mesmo que isso possa de certa forma ser conseguido usando uma importa o simples em um reposit rio Subversion de um reposit rio CVS exportado a solu o mais completa envolve tra
325. idor web extremamente popular usando o m dulo mod dav svn o Apache pode acessar um reposit rio e torn lo dispon vel para os clientes atrav s do pro tocolo WebDAV DeltaV que uma extens o do HTTP Como o Apache um servidor web extremamente extens vel ele prov um conjunto de recursos de gra a tais como comunica o SSL criptografada sistema de log integra o com diversos sistemas de au tentica o de terceiros al m de navega o simplificada nos reposit rios Por outro lado est o svnserve um programa servidor pequeno e leve que conversa com os clientes por meio de um protocolo espec fico Pelo fato de ter sido explicitamente de senvolvido para o Subversion e de manter informa es de estado diferentemente do HTTP este seu protocolo permite opera es de rede significativamente mais r pi das ainda que ao custo de alguns recursos Este protocolo s entende autentica o do tipo CRAM MD5 n o possui recursos de log nem de navega o web nos reposit rios e n o tem op o de criptografar o tr fego de rede Mas no entanto extremamente f cil de configurar e quase sempre a melhor op o para pequenas equipes que ainda est o ini ciando com o Subversion Uma terceira op o o uso do svnserve atrav s de uma conex o SSH Por mais que es te cen rio ainda use o svnserve ele difere um pouco no que diz respeito aos recursos de uma implanta o svnserve tradicional SSH usado para cripto
326. iferentes a sua interface de usu rio prim ria baseada em linha de coman do Essa ferramenta de linha de comando svn e alguns programas auxiliares s o o foco deste livro Por motivo de consist ncia os exemplos neste livro presumem que o leitor esteja usando um sistema operacional baseado em Unix e se sinta relativamente confort vel com Unix e com interfaces de linha de comando Dito isto o programa svn tamb m roda em platafor mas n o Unix como o Microsoft Windows Com poucas exce es como o uso de barras invertidas em lugar de barras regulares para separadores de caminho a entrada e a sa da desta ferramenta quando executada no Windows s o id nticas s do seu compa nheiro Unix Muitos leitores s o provavelmente programadores ou administradores de sistemas que ne cessitam rastrear altera es em c digo fonte Essa a finalidade mais comum para o Subversion e por isso o cen rio por tr s de todos os exemplos deste livro Entretanto o Subversion pode ser usado para gerenciar qualquer tipo de informa o imagens m si cas bancos de dados documenta o etc Para o Subversion dados s o apenas dados Enquanto que este livro presume que o leitor nunca usou um sistema de controle de ver s o n s tamb m tentamos facilitar para os usu rios do CVS e outros sistemas a migra o para o Subversion Ocasionalmente notas especiais poder o mencionar outros con troles de vers o H tamb m um ap
327. ificadas para representar falsifica es completas da cronologia real ou mesmo podem ser removidas inteiramente A capacidade do Subversion de converter correta mente datas de revis o em n meros de revis o depende da manuten o da ordem sequencial desta informa o temporal quanto mais recente uma revi s o mais recente sua informa o de data e hor rio Se esta ordena o n o for mantida voc perceber que tentar usar datas para especificar intervalos de revis o em seu reposit rio nem sempre retornar os dados que voc espe ra Propriedades N s j abordamos em detalhes como o Subversion armazena e recupera v rias vers es de arquivos e diret rios em seu reposit rio Cap tulos inteiros t m sido focados nesta parte mais fundamental das funcionalidades providas pela ferramenta E se o suporte a versio 40 T picos Avan ados namento parar por a o Subversion ainda seria completo do ponto de vista do controle de vers o Mas n o para por ai Adicionalmente ao versionamento de seus arquivos e diret rios o Subversion permite in terfaces para adi o modifica o e remo o de metadados versionados em cada um de seus arquivos e diret rios sob controle de vers o Chamamos estes metadados de propri edades e eles podem ser entendidos como tabelas de duas colunas que mapeiam nomes de propriedades a valores arbitr rios anexados a cada item em sua c pia de trabalho Fa lando de uma form
328. igurar m ltiplos projetos veja Repository Layout e Planejando a Orga niza o do Reposit rio para ler mais sobre ra zes dos projetos Checkout Inicial Na maioria das vezes voc come a a usar um reposit rio Subversion fazendo um chec kout de seu projeto Fazer um checkout de um reposit rio cria uma c pia de trabalho em sua m quina local Esta c pia cont m o HEAD revis o mais recente do reposit rio Sub version que voc especificou na linha de comando svn checkout http svn collab net repos svn trunk A trunk Makefile in A trunk ac helpers A trunk ac helpers install sh A trunk ac helpers install sh A trunk build conf Gerado c pia de trabalho para revis o 8810 O que h em um Nome O Subversion tenta arduamente n o limitar o tipo de dado que voc pode colocar sob controle de vers o O conte do dos arquivos e valores de propriedades s o ar mazenados e transmitidos como dados bin rios e a se o Tipo de Conte do do Ar 17 Uso B sico quivo diz lhe como dar ao Subversion uma dica de que opera es textuais n o t m sentido para um arquivo em particular H umas poucas ocasi es por m onde o Subversion coloca restri es sobre as informa es nele armazenadas O Subversion manipula internamente determinados fragmentos de dados por exemplo nomes de propriedades nomes de caminhos e mensagens de log como Unicode codifi
329. inar suas altera es com o comando svn diff Voc pode verificar exatamente como voc modificou as coisas executando svn diff sem argumentos o que exibe as modifica es de arquivo no formato diff unificado S svn diff Index bar c bar c revision 3 bar c working copy 1 7 1 12 include lt sys types h gt include lt sys stat h gt include lt unistd h gt include lt stdio h gt int main void printf Sixty four slices of American Cheese n printf Sixty five slices of American Cheese n return 0 Index README README revision 3 README working copy 193 3 193 4 Note to self pick up laundry E EE E Index stuff fish c stuff fish c revision 1 stuff fish c working copy Welcome to the file known as fish Information on fish will be here soon Index stuff things bloo h stuff things bloo h revision 8 stuff things bloo h working copy Here is a new file to describ things about bloo O comando svn diff produz esta sa da comparando seus arquivos de trabalho com a c pia intacta em cache que fica dentro da rea svn Os arquivos marcados para adi o s o exibidos com todo o texto adicionado e os arquivos marcados para exclus o s o exi bidos com todo o texto exclu do A sa da exibida no formato diff unificado Isto linhas
330. ing a Subversion repository can be daunting mostly due to the complexities inhe rent in systems which have a database backend Doing the task well is all about knowing the tools what they are when to use them and how to use them This section will introdu ce you to the repository administration tools provided by Subversion and how to wield them to accomplish tasks such as repository data migration upgrades backups and clea nups An Administrator s Toolkit Subversion provides a handful of utilities useful for creating inspecting modifying and re pairing your repository Let s look more closely at each of those tools Afterward we ll bri efly examine some of the utilities included in the Berkeley DB distribution that provide func tionality specific to your repository s database backend not otherwise provided by Subversi on s own tools svnadmin The svnadmin program is the repository administrator s best friend Besides providing the 118 Administra o do Reposit rio ability to create Subversion repositories this program allows you to perform several main tenance operations on those repositories The syntax of svnadmin is similar to that of other Subversion command line programs svnadmin help general usage svnadmin SUBCOMMAND REPOS PATH ARGS amp OPTIONS Type svnadmin help lt subcommand gt for help on a specific subcommand Type svnadmin version to see the program version and FS modules
331. ing copies svn checkout file tmp repos test file tmp repos quiz working copies A working copies test a A working copies test b Checked out revision 2 A working copies quiz 1 A working copies quiz m Checked out revision 2 ls working copies Se voc interromper um checkout ou houver qualquer coisa que o interrompa como per da da conex o de rede etc voc pode reinici lo tanto executando um comando chec kout id ntico outra vez como atualizando sua c pia de trabalho incompleta svn checkout file tmp repos test test A test a A test b AG svn The operation was interrupted svn caught SIGINT svn checkout file tmp repos test test A test c A test d SG svn The operation was interrupted svn caught SIGINT cd test svn update A test e A test f Updated to revision 3 212 Refer ncia Completa do Subversion Nome svn cleanup Faz recursivamente uma limpeza na rea de trabalho Sinopse svn cleanup PATH Descri o Faz recursivamente uma limpeza na rea de trabalho removendo travas da c pia de tra balho e concluindo opera es n o finalizadas Sempre que voc obtiver um erro de c pia de trabalho travada execute este comando para remover travas perdidas e deixar sua c pia de trabalho no estado us vel novamente Se por algum motivo um svn update falhar devido a um problema ao executar um pro grama diff externo p ex devido a entra
332. ini o externa Y O item est sendo ignorado p ex com a propriedade svn ignore t O item n o est sob controle de vers o MN O item est faltando p ex voc o moveu ou removeu sem usar o svn Isto tamb m indica que um diret rio est incompleto uma opera o de checkout ou update foi in terrompida O item est versionado como um tipo de objeto arquivo diret rio link mas est sen do substitu do por um tipo diferente de objeto 256 Refer ncia Completa do Subversion A segunda coluna indica o estado das propriedades de um arquivo ou diret rio Sem modifica es M Propriedades deste item foram modificadas C As propriedades para este item entram em conflito com as atualiza es de proprieda des recebidas do reposit rio A terceira coluna preenchida apenas se a c pia de trabalho estiver travada Veja As Vezes Voc S Precisa Limpar O item n o est travado L O item est travado A quarta coluna preenchida se o item estiver agendado para adi o com hist rico O hist rico n o est agendado para submiss o O hist rico est agendado para submiss o A quinta coluna preenchida apenas se o item tiver sido trocado relativo a seus diret rios anteriores veja Atravessando Ramos O item filho de seu diret rio pai S O item foi trocado A sexta coluna cont m informa o sobre trava Quando show updates usado o arqu
333. io submiss o instant nea ent o uma mensagem de log requerida S svn mkdir m Making a new dir http svn red bean com repos newdir 241 Refer ncia Completa do Subversion Committed revision 26 242 Refer ncia Completa do Subversion Nome Sinopse svn move Move um arquivo ou diret rio svn move SRC DST Descri o Este comando move um arquivo ou diret rio em sua c pia de trabalho ou no reposit rio O Este comando equivalente a um svn copy seguido de um svn delete O Subversion n o movimenta o entre c pias de trabalho e URLs Al m dis so voc s pode mover arquivos dentro de um nico reposit rio o Subversi on n o suporta movimenta o entre reposit rios WC gt WC Move e agenda um arquivo ou diret rio para adi o com hist rico URL gt URL Renomea o inteiramente no lado do servidor Nomes Alternativos Altera mv rename ren C pia de trabalho reposit rio se executando sobre uma URL Acessa o Reposit rio Op es Apenas se executando sobre uma URL message m TEXT file F FILE revision r REV Obsoleto quiet q force username USER password PASS no auth cach non interactive editor cmd EDITOR encoding ENC force log config dir DIR Exemplos 243 Refer ncia Completa do Subversion Move um arquivo em sua c pia de trabalho S svn move foo
334. io Subversion em lt Location www repos gt Se vier uma requisi o para a URL www repos foo c o Apache n o vai saber se deve procu rar pelo arquivo repos foo c no DocumentRoot ou se delega ao mod dav svn para que este retorne foo c a partir do reposit rio Subversion O resultado quase sempre um erro de servidor no formato 301 Moved Permanently Nomes de Servidores e a Requisi o COPY Subversion faz uso da requisi o do tipo COPY para executar c pias de arquivos e diret rios do lado do servidor Como parte da verifica o de integridade feita pelos m dulos do Apache espera se que a origem da c pia esteja localizada na mesma m quina que o destino da c pia Para satisfazer este requisito voc vai precisar di zer ao mod dav o nome do hostname usado em seu servidor Geralmente voc po de usar a diretiva ServerName no httpd conf para fazer isto ServerName svn example com Se voc est usando o suporte a hosts virtuais do Apache atrav s da diretiva Name VirtualHost voc pode precisar usar a diretiva ServerAlias para especificar nomes adicionais pelos quais seu servidor tamb m conhecido Mais uma vez veri fique a documenta o do Apache para mais detalhes Neste est gio voc deve considerar maci amente a quest o das permiss es Se voc j estiver executando o Apache h algum tempo como seu servidor web regular voc prova velmente j tem uma por o de conte dos p ginas web s
335. io trunk voc pode facilmente efetuar o checkout em qualquer n vel de subdiret rios de um reposit rio especificando o subdiret rio na URL do checkout PP PPP svn checkout http svn collab net repos svn trunk subversion tests cmdline cmdline revert_tests py cmdline diff_tests py cmdline autoprop tests py cmdline xmltests cmdline xmltests svn test sh Gerado c pia de trabalho para revis o 8810 Uma vez que o Subversion usa um modelo copiar modificar fundir ao inv s de travar modificar destravar veja Modelos de Versionamento voc pode iniciar por fazer altera es nos arquivos e diret rios em sua c pia de trabalho Sua c pia de trabalho igual a qualquer outra cole o de arquivos e diret rios em seu sistema Voc pode edit los alter los e mov los voc pode at mesmos apagar toda sua c pia de trabalho e es quec la Apesar de sua c pia de trabalho ser igual a qualquer outra cole o de arqui vos e diret rios em seu sistema voc pode editar os arquivos a vontade mas tem que informar o Subversion sobre tudo o mais que voc fizer Por exemplo se voc quiser copiar ou mover um item em uma c pia de trabalho voc deve usar os comandos svn copy or svn move em vez dos comandos copiar e mover fornecidos por ser sistema operacional N s falaremos mais sobre eles posteriormente neste cap tulo A menos que voc esteja pronto para submeter a adi o de novos a
336. ion 3 rules txt working copy G 1 4 1 5 Be kind to others Freedom Responsibility Everything in moderation Chew with your mouth open Chew with your mouth closed Listen when others are speaking Comparando o Repositorio com o Repositorio Se dois n meros de revis o separados por dois pontos forem informados em revision r ent o as duas revis es ser o comparadas diretamente S svn diff r 2 3 rules txt Index rules txt rules txt revision 2 rules txt revision 3 1 4 1 4 Be kind to others Freedom Chocolate Ice Cream Freedom Responsibility Everything in moderation Chew with your mouth open Uma forma mais conveniente de se comparar uma revis o com sua anterior usando change c S svn diff c 3 rules txt Index rules txt rules txt revision 2 rules txt revision 3 aa 1 4 1 4 Be kind to others Freedom Chocolate Ice Cream 34 Uso B sico Freedom Responsibility Everything in moderation Chew with your mouth open Por ltimo voc pode comparar revis es no reposit rio at quando voc n o tem uma c pia de trabalho em sua m quina local apenas incluindo a URL apropriada na linha de co mando S svn diff c 5 http svn example com repos example trunk text rules txt E Navegando pelo reposit rio Usando svn cat e svn list voc pode ver v rias revis es de arqu
337. ireitos de acesso dos usu rios pergunte a si mesmo se h uma raz o real e leg tima para isto ou se n o algo que apenas parece uma boa id ia para um administrador Decida ainda se vale a pena sacrifi car um pouco da velocidade do servidor e lembre se que h muito pouco risco en volvido ruim se tornar dependente da tecnologia como uma muleta para proble mas sociais Como um exemplo a considerar veja que o pr prio projeto Subversion sempre teve a no o de quem tem permiss o para realizar altera es em que lugares mas isto j o que acaba ocorrendo na pr tica Este um bom modelo de confian a da comuni dade especialmente para projetos open source De fato algumas vezes h raz es verdadeiramente leg timas para se ter controle de acesso baseado em caminhos em empresas por exemplo certos tipos de dados realmente podem ser sens veis aos quais os acessos precisam ser verdadeiramente restritos a pequenos grupos de pes soas Uma vez que o servidor saiba onde encontrar seu arquivo de regras hora de defin las A sintaxe do arquivo aquela mesma sintaxe familiar usada no svnserve conf e nos ar 8Um tema recorrente neste livro 167 Configura o do Servidor quivos de configura o em tempo de execu o Linhas que comecem com cerquilha s o ignoradas Em sua forma mais simples cada se o nomeia um reposit rio e um cami nho dentro dele e os nomes de usu rios autenticad
338. is o HEAD mas n s sabemos que esse di ret rio existia na revis o 20 e n s queremos ver as diferen as de seu arquivo IDEA entre as revis es 4 e 10 N s podemos usar a revis o marcadora 20 em conjunto com a URL que deveria conter o diret rio IDEA do diret rio Frabnaggilywort na revis o 20 e ent o usar 4 e 10 como nosso intervalo de revis es operativas svn diff r 4 10 http svn red bean com projects frabnaggilywort IDEAG 20 Index frabnaggilywort IDEA revision 4 frabnaggilywort IDEA A revision 10 frabnaggilywort ID a a o 15 ee The idea behind this project is to come up with a piece of software that can frab a naggily wort Frabbing naggily worts is tricky business and doing it incorrectly can have serious ramifications so we need to employ over the top input validation and data verification mechanisms The idea behind this project is to come up with a piece of tclient server software that can remotely frab a naggily wort Frabbing naggily worts is tricky business and doing it incorrectly can have serious ramifications so we need to employ over the top input validation and data verification mechanisms F E E ah Felizmente a maioria das pessoas n o se deparam com situa es t o complexas desse tipo Mas se um dia voc se deparar lembre se que revis es marcadoras s o um recurso extra de que o Subversion precisa para reslver ambiguidades Model
339. is ou informa o 342 Copyright Ds EXC O ACURACIDADE OCULTOS EM J 6 I IMPLICITAS ESTAS EXCLUSOES PODEM NAO SE APLICAR A VOCE 6 ESC IS E RELATIVAS OBRA SEJAM ELAS EXPRESSAS OU IMPL CITAS DECORRENTES DA LE U QUAISQUER OUTRAS INCLUINDO SEM LIMITA O QUAISQU A TITULARIDADE NAO VIOLA O DE DIREITOS OU INEXISTENCIA DE QUAISQUER DEF pD U ETO QUANDO FOR DE OUTRA FORMA MUTUAMENTE ACORDADO P RITO O LICENCIANTE OFERECE A OBRA NO ESTADO EM QUE SE ENCONTRA AS sobre o regime de licenciamento da Obra e no caso de Obra Derivada cr dito identificando o uso da Obra na Obra Derivada exemplo Tradu o Francesa da Obra de Autor Original ou Roteiro baseado na Obra original de Autor Original Tal cr dito pode ser implementado de qualquer forma razo vel entretanto no caso de Obra Derivada ou Obra Coletiva este cr dito aparecer no m nimo onde qualquer outro cr dito compar vel de autoria aparece e de modo ao menos t o proeminente quanto este outro cr dito de autoria compar vel Declara es Garantias e Exonera o PELAS PARTES POR N O PRESTA QUAISQUER GARANTIAS OU DECLARA ES DE QUALQUER ESP CIE EH ER GARANTIAS SOBR DA OBRA ADEQUA O PARA QUAISQUER PROP SITOS ITOS LATENTES RESEN A OU AUS NCIA DE ERROS SEJAM ELES APARENTES OU RISDI ES QUE
340. istics It can be run at any point in time to bring an existing directory in the repository to exactly match an external directory performing all the necessary adds and deletes and optio nally performing moves too e It takes care of complicated series of operations between which Subversion requires an intermediate commit such as before renaming a file or directory twice It will optionally tag the newly imported directory It will optionally add arbitrary properties to files and directories that match a regular ex pression svn_load_dirs pl takes three mandatory arguments The first argument is the URL to the base Subversion directory to work in This argument is followed by the URL relative to the first argument into which the current vendor drop will be imported Finally the third argu ment is the local directory to import Using our previous example a typical run of svn load dirs pl might look like svn_load_dirs pl http svn example com repos vendor libcomplex current path to libcomplex 1 1 You can indicate that you d like svn load dirs pl to tag the new vendor drop by passing the t command line option and specifying a tag name This tag is another URL relative to the first program argument svn_load_dirs pl t libcomplex 1 1 105 Fundir e Ramificar http svn example com repos vendor libcomplex current path to libcomplex 1 1 When you run svn_load_dirs pl it examines the contents of
341. itas das discuss es a seguir incluem refer ncias a diretivas de configura o do Apa che Por mais que sejam dados exemplos de uso destas diretivas descrev las por com pleto est fora do escopo deste cap tulo A equipe do Apache mant m excelente docu menta o dispon vel publicamente no seu website em http nttpd apache org Por exem plo uma refer ncia geral das diretivas de configura o est localizada em http httpd apache org docs 2 0 mod directives html Al m disso quando voc faz altera o na configura o do seu Apache bem prov vel que erros sejam cometidos em algum ponto Se voc ainda n o est ambientado com o subsistema de logs do Apache voc deveria familiarizar se com ele Em seu arquivo httpd conf est o as diretivas que especificam os caminhos em disco dos logs de aces so e de erros gerados pelo Apache as diretivas CustomLog e ErrorLog respectivamen te O m dulo mod dav svn do Subversion tamb m usa a interface de logs de erro do Apache A qualquer momento voc pode verificar o conte do destes arquivos buscando informa o que pode revelar a causa de um problema que n o seria claramente percebido de outra forma Por que o Apache 2 Se voc um administrador de sistemas bem prov vel que voc j esteja rodando o servidor web Apache e tenha alguma experi ncia anterior com ele No momento em que este livro era escrito o Apache 1 3 de longe a vers o mais popular do Apa ch
342. ituindo obras independentes separadas em si mesmas s o agregadas em um trabalho coletivo Uma obra que constitua uma Obra Coletiva n o ser considerada Obra Derivada conforme definido abaixo para os prop sitos desta licen a Obra Derivada significa uma obra baseada sobre a Obra ou sobre a Obra e outras obras pr existentes tal como uma tradu o arranjo musical dramatiza o romantiza o vers o de filme grava o de som reprodu o de obra art stica resumo condensa o ou qualquer outra forma na qual a Obra possa ser refeita transformada ou adaptada com a exce o de que uma obra que constitua uma Obra Coletiva n o ser considerada Obra Derivada para fins desta licen a Para evitar d vidas quando a Obra for uma composi o musical ou grava o de som a sincroniza o da Obra em rela o cronometrada com uma imagem em movimento synching ser considerada uma Obra Derivada para os prop sitos desta licen a Licenciante significa a pessoa f sica ou a jur dica que oferece a Obra sob os termos desta licen a Autor Original significa a pessoa f sica ou jur dica que criou a Obra Obra significa a obra autoral pass vel de prote o pelo direito autoral oferecida sob os termos desta licen a Voc significa a pessoa f sica ou jur dica exercendo direitos sob esta Licen a que n o tenha previamente violado os termos desta Licen a com rela o Obra ou que tenha re
343. ive Isso faz com que o arquivo contenha as marcas EOL que s o nativas ao sistema ope racional no qual o Subversion foi executado Em outras palavras se um usu rio em um computador Windows adquire uma c pia de trabalho que cont m um arquivo com a propriedade svn eol style atribu da para native este arquivo conter CRLF como marcador EOL Um usu rio Unix adquirindo uma c pia de trabalho que cont m o mesmo arquivo ver LF como marcador EOL em sua c pia do arquivo Note que o Subversion na verdade armazenar o arquivo no reposit rio usando mar cadores normalizados como LF independentemente do sistema operacional Isto no entanto ser essencialmente transparente para o usu rio CRLF Isso faz com que o arquivo contenha sequ ncias CRLF como marcadores EOL inde pendentemente do sistema operacional em uso LF Isso faz com que o arquivo contenha caracteres LF como marcadores EOL indepen dentemente do sistema operacional em uso 50 T picos Avan ados CR Isso faz com que o arquivo contenha caracteres CR como marcadores EOL indepen dentemente do sistema operacional em uso Este estilo de t rmino de linha n o mui to comum Ele foi utilizado em antigas plataformas Macintosh nas quais o Subversion n o executa regularmente Ignorando Itens N o Versionados Em qualquer c pia de trabalho obtida h uma boa chance que juntamente com todos os arquivos e diret rios versionados est o outros arquivos e diret ri
344. iver n o faz nada Mas se a modifica es existentes j tiverem modificadas de alguma forma voc te r um conflito O ideal seria se o seu sistema de controle de vers o prevenisse o aplicar duas vezes mo difica es a um ramo Ele deveria lembrar automaticamente quais modifica es um ramo j recebeu e ser capaz de list los para voc Essa informa o deveria ser usada para ajudar a automatizar a Fus o o m ximo possivel Infelizmente o Subversion n o esse sistema ele ainda n o grava informa es sobre as fus es realizadas Quando voc faz o commit das modifica es locais o reposit rio n o faz a menor id ia se as altera es vieram de um comando svn merge ou de uma edi o manual no arquivo O que isso significa para voc o usu rio Significa que at que o Subversion tenha essa funcionalidade voc ter que rastrear as informa es de Fus o pessoalmente A melhor maneira de fazer isso com as mensagens de log do commit Como mostrado nos exem plos anteriores recomend vel que sua mensagem de log informe especificamente o n mero da revis o ou n meros das revis es que ser o fundidas ao ramo Depois voc po de rodar o comando svn log para verificar quais modifica es o seu ramo j recebeu Isso vai lhe ajudar a construir um pr ximo comando svn merge que n o ser redundante com as modifica es j aplicadas Na pr xima se o vamos mostrar alguns exemplos dessa t cnica na pr
345. ivial A interface entre o Subversion e ferramentas externas de diferencia o e fus o remontam a uma poca em que as nicas capacidades de diferencia o do Subversion eram cons tru das sobre invoca es de utilit rios do kit de ferramentas diffutils do GNU especifica mente os utilit rios diff e diff3 Para conseguir o tipo de comportamento de que o Subver sion precisa ele chamava esses utilit rios com mais algumas op es e par metros teis muitas das quais eram bastante espec ficas desses utilit rios Algum tempo depois o Sub version desenvolveu se com sua pr pria biblioteca de diferencia o e com mecanismos de recupera o de falhas 3 as op es diff cmd e diff3 cmd foram adicionadas ao cliente de linha de comando do Subversion e ent o os usu rios puderam indicar com mais facilidade se preferiam usar os utilit rios GNU diff e diff3 ao inv s da nova biblioteca biblioteca interna de diferencia o Se essas op es forem usadas o Subversion dever simplesmente ignorar sua biblioteca interna de diferencia o voltando a usar programas externos longas listas de argumentos e tudo o mais E assim que as coisas permane cem at hoje N o demora muito para as pessoas perceberem que dispor de tais mecanismos de confi gura o para especificar que o Subversion deve usar os utilit rios GNU diff e diff3 localiza dos em um local espec fico no sistema poderia ser aplicado tamb m para o uso de outras ferram
346. ivo n o est travado Se show updates n o usado isto apenas significa que o arquivo n o est travado nesta c pia de trabalho K O arquivo est travado nesta c pia de trabalho O O arquivo ou est travado por outro usu rio ou em outra c pia de trabalho Isto s aparece quando show updates usado T O arquivo estava travado nesta c pia de trabalho mas a trava foi roubada e est in 257 Refer ncia Completa do Subversion v lida O arquivo atualmente est travado no reposit rio Isto s aparece quando show updates usado O arquivo estava travado nesta c pia de trabalho mas a trava est sendo quebrada e est inv lida O arquivo n o est mais travado Isto s aparece quando show updates usado A informa o defasada aparece na s tima coluna apenas se voc passar a op o show updates O item em sua c pia de trabalho est atualizado Uma nova revis o do item existe no servidor Os campos restantes t m largura vari vel e s o delimitados por espa os A revis o de tra balho o pr ximo campo se as op es show updates OU verbose forem passa das Se a op o verbose for passada a ltima revis o submetida e o ltimo autor s o exi bidos na sequ ncia O caminho na c pia de trabalho sempre o ltimo campo ent o ele pode incluir espa os Nomes Alternativos Altera stat st Nada Acessa o Reposit rio Op es
347. ivos e diret rios sem precisar mexer nas altera es que estiver fazendo em sua c pia de trabalho De fato vo c nem mesmo precisa de uma c pia de trabalho para usar esses comandos svn cat Se voc quiser visualizar uma versao antiga de um arquivo e nao necessariamente as di feren as entre dois arquivos voc pode usar o svn cat S svn cat r 2 rules txt Be kind to others Freedom Chocolate Ice Cream Everything in moderation Chew with your mouth open Voc tamb m pode redirecionar a saida diretamente para um arquivo S svn cat r 2 rules txt gt rules txt v2 svn list O comando svn list lhe mostra que arquivos est o no reposit rio atualmente sem carrega los para sua m quina local svn list http svn collab net repos svn README branches clients tags trunk Se voc preferir uma listagem mais detalhada inclua a op o verbose v para ter uma sa da desta forma svn list v http svn collab net repos svn 20620 harry 1084 Jul 13 2006 README 23339 harry Feb 04 01 40 branches 21282 sally Aug 27 09 41 developer resources 35 Uso B sico 23198 harry Jan 23 17 17 tags 23351 sally Feb 05 13 26 trunk As colunas lhe dizem a revis o na qual o arquivo ou diret rio sofreu a ltima mais recen te modifica o o usu rio que o modificou seu tamanho se for um arquivo a data desta ltima modifica o e o nome do item Um svn list sem argum
348. iza o E por falar nisso Distin o Entre Status e Update No Subversion n s tentamos dirimir boa parte da confus o entre os comandos cvs status e Cvs update O comando evs status tem dois prop sitos primeiro mostrar ao usuario qualquer modifi ca o local na c pia de trabalho e segundo mostrar ao usu rio quais arquivos est o de satualizados Infelizmente devido dificuldade para ler a sa da produzida pelo status no CVS muitos usu rios de CVS n o tiram nenhuma vantagem deste comando Em vez dis so eles desenvolveram um h bito de executar cvs update ou cvs n update para ver ra pidamente suas mudan as Se os usu rios se esquecem de usar a op o n isto tem o efeito colateral de fundir altera es no reposit rio com as quais eles podem n o estar pre parados para lidar Com o Subversion n s tentamos eliminar esta confus o tornando a sa da do svn status f cil de ler tanto para humanos quanto para programas analisadores Al m disso svn up date s imprime informa o sobre arquivos que est o atualizados e n o modifica es lo cais Status svn status imprime todos os arquivos que t m modifica es locais Por padr o o reposi t rio n o contatado Embora este subcomando aceite um bom n mero de op es as se guintes s o as mais comumente usadas gin Contatar o reposit rio para determinar e ent o mostrar informa es sobre desatuali za o Sy Mostrar todas as entradas
349. keley DB Recovery sie eenranecennanaaaannana 125 Migrating Repository Data Elsewhere 126 Filtering Repository History erra 130 Repository Replication erra enreraa aa 133 Repository Backup cerisiers erii iain uiaei nE AEEA EVAAA aaa NVE 138 SUM TIO A E E EEE EAE EAE E E EE E EE 140 6 Configura o do Servidor ira rranaa ana aa rante 141 Vis o Geral aserieios tise sarseteben i Ce Dag E Eira al a HE a ida ala Da Ena ala aa 141 Escolhendo uma Configura o de Servidor 142 O Servidor svnserve e cece ee eeeeeeeeeeee A A Aa A TAa aA aaa 142 svnserve sobre SSH e eeeeeeeeeeaaaaaaeeeeeeeeeeaea 143 O Servidor Apache HTTP seen 143 RECOMENDAGOCS es erkeer eri ee RAEE EErEE EAr REA ESTERNE 144 svnserve um servidor especializado ea 145 Invocando o Servidor cece cece ae aaeeteeeeeeeeeaeaaeeneeeeeeeeeaeaaeaees 145 Autentica o e autoriza o internos i ee eeeeeaaeeeeeeaaee ees 147 Tunelamento Sobre SSH tees a a aea aiai der 149 Dicas de configura o do SSH ria 151 httpd o servidor HTTP Apache rear 152 PR LOQUISILOS ative ear Gee Does PE d dead da a evi eles 153 Configura o B sica do Apache aa 154 Op es de Autentica o errar arara 156 Op es de Autoriza o ii irrrraraa arara
350. l ou ter diferentes defini es sobre o que constitui uma submiss o correta E claro que eles n o s o problemas insupe raveis somente significa que todos os seus scripts de ganchos devem ser sens veis ao leiaute do seu reposit rio ao inv s de assumir que todo o reposit rio est associado com um nico grupo de pessoas Al m disso lembre se que o Subversion usa n meros de re vis o globais com rela o ao reposit rio Muito embora esses n meros n o tenham parti cularmente nenhum poder m gico algumas pessoas continuam n o gostando do fato de que mesmo que n o hajam modifica es no seu projeto recentemente o n mero de revi s o continua sendo incrementado porque outros projetos continuam adicionando novas re vis es Uma abordagem meio termo pode ser utilizada tamb m Por exemplo projetos podem ser agrupados pela forma como eles se relacionam entre si Voc pode ter alguns poucos re posit rios com um punhado de projetos em cada um deles Dessa forma projetos nos quais desej vel o compartilhamento de dados podem faz lo facilmente e quando novas revis es s o adicionadas ao reposit rio os desenvolvedores saber o que essas revis es s o no m nimo remotamente relacionadas com todos que usam esse reposit rio Depois de decidir como organizar seus projetos com rela o aos reposit rios voc ir pro vavelmente pensar sobre a hierarquia de diret rios l dentro Como o Subversion utiliza c pias comuns de dir
351. l svn repos trunk README original author fitz svn mime type text plain 296 Refer ncia Completa do Subversion Nome svnlook tree Print the tree Sinopse svnlook tree REPOS PATH PATH IN REPOS Descri o Print the tree starting at PATH IN REPOS if supplied at the root of the tree otherwise optionally showing node revision IDs Op es revision r REV transaction t show ids Exemplos This shows the tree output with node IDs for revision 40 in our sample repository svnlook tree r 40 usr local svn repos show ids lt 0 0 24 gt trunk lt p 0 23 gt vendors lt q 0 2j gt deli lt 1g 0 25 gt egg txt lt li e 23 gt soda txt lt 1k 0 25 gt sandwich txt lt 1j 0 2j gt 297 Refer ncia Completa do Subversion Nome svnlook uuid Print the repository s UUID Sinopse svnlook uuid REPOS PATH Descri o Print the UUID for the repository the UUID is the repository s universal unique identifier The Subversion client uses this identifier to differentiate between one repository and another Exemplos svnlook uuid usr local svn repos 7felb91 8cd5 0310 98dd 2f12e793c5e8 298 Refer ncia Completa do Subversion Nome svnlook youngest Print the youngest revision number Sinopse svnlook youngest REPOS PATH Descri o Print the youngest revision number of a repository Exemplos This shows the youngest revisi
352. la n o todos em geral As permiss es de arquivo do pr prio sistema operacional protege as senhas 73 T picos Avan ados Claro que para o paran ico de verdade nenhum destes mecanismos satisfaz o teste de perfei o Ent o para aqueles dispostos a sacrificar a conveni ncia pela seguran a extre ma o Subversion oferece v rios meios de desabilitar seu sistema de armazenamento de credenciais completamente Para desabilitar o armazenamento para um Unico comando passe a op o no auth cach svn commit F log msg txt no auth cach Authentication realm lt svn host example com 3690 gt example realm Username joe Password for joe Adding newfile Transmitting file data Committed revision 2324 password was not cached so a second commit still prompts us svn delete newfil svn commit F new_msg txt Authentication realm lt svn host example com 3690 gt example realm Username joe Ou se voc quiser desabilitar o armazenamento de credencial permanentemente voc pode editar o arquivo config em sua rea de configura o do ambiente de execu o e defina a op o store auth creds para no Isso evitar o armazenamento de credenci ais usadas em qualquer intera o que voc efetuar com o Subversion no computador afe tado Isso pode ser estendido a todos os usu rios no computador tamb m ao modificar a rea de configura o do sistema como um todo descrito em Estrutura da Area de
353. lmente preocupado primeiro porque voc sabe que voc n o pode realmente deletar nada do Subversion e em segundo lugar porque sua senha do Subversion n o a mesma que as outras tr s milh es de senhas que voc tem certo Certo 19 Uso B sico como um diret rio de configura o do sistema ou o documento raiz de um servidor web Neste caso apenas passe a op o username na linha de comando e o Subversion tentar autenticar como aquele usu rio pedindo uma senha se necess rio Ciclo B sico de Trabalho O Subversion tem diversos recursos op es avisos e sinaliza es mas no b sico do dia a dia mais prov vel que voc utilize apenas uns poucos destes recursos Nesta se o vamos abordar as coisas mais comuns que voc de fato pode fazer com o Subversion no decorrer de um dia de trabalho comum Um ciclo b sico de trabalho parecido com Atualizar sua c pia de trabalho svn update e Fazer altera es svn add svn delete svn copy svn move e Verificar suas altera es svn status svn diff e Possivelmente desfazer algumas altera es svn revert Resolver conflitos combinar altera es de outros svn update svn resolved Submeter suas altera es svn commit Atualizando Sua C pia de Trabalho Ao trabalhar num projeto em equipe voc vai querer atualizar sua c pia de trabalho para receber quaisquer altera es feitas por outros desenvolvedores do projeto desd
354. lmente seu projeto ir crescer mui to Voc ir querer aprender a fazer coisas avan adas com o Subversion como usar ramos e fazer fus es Cap tulo 4 Fundir e Ramificar como usar as propriedades de suporte do Subversion Cap tulo 3 T picos Avan ados como configurar as op es de tempo de execu o Cap tulo 7 Customizando sua Experi ncia com Subversion entre outras coisas Estes cap tulos n o s o cr ticos no in cio por m n o deixe de l los quando estiver familiarizado com o b sico Desenvolvedores Presumidamente voc j est familiarizado com o Subversion e quer ou extend lo ou construir um novo software baseado nas suas diversas APIs O Cap tulo 8 Incor porando o Subversion foi feito justamente pra pra voc O livro termina com um material de refer ncia o Cap tulo 9 Refer ncia Completa do Subversion um guia de refer ncia para todos os comandos do Subversion e os ap ndi xiv Pref cio ces cobrem um n mero consider vel de t picos teis Estes cap tulos ser o os que voc ir voltar com mais frequ ncia depois que terminar de ler o livro Conven es Usadas Neste Livro Esta se o cobre as v rias conven es usadas neste livro Conven es tipogr ficas Largura constante Comandos usados comando de sa da e op es Largura constante em it lico Usado para substituir itens no c digo e texto It lico Usado para nomes de arquivo e diret rio cones Este
355. lone Salami Mortadella Prosciutto Creole Mustard Bottom piece of bread Agora execute svn resolved e voc estar pronto para submeter suas altera es svn resolved sandwich txt S svn commit m Go ahead and use my sandwich discarding Sally s edits Veja que o svn resolved ao contrario muitos dos outros comandos que abordamos neste capitulo precisa de um argumento Em todo caso voc vai querer ter cuidado e s execu tar svn resolved quando tiver certeza de ter resolvido o conflito em seu arquivo quando os arquivos tempor rios forem removidos o Subversion vai deixar que voc submeta o ar quivo ainda que ele permane a com marca es de conflito SE se voc lhes disser isso eles podem muito bem expulsar voc para fora da cidade num minuto 29 Uso B sico Se voc se confundiu ao editar o arquivo conflituoso voc sempre pode consultar os tr s arquivos que o Subversion cria para voc em sua c pia de trabalho inclusive o seu arqui vo como era antes de voc atualizar Voc ainda pode usar uma ferramenta interativa de mesclagem de terceiros para examinar esses tr s arquivos Copiando um Arquivo em Cima de Seu Arquivo de Trabalho Se voc tiver um conflito e decidir que quer descartar suas modifica es voc pode mera mente copiar um dos arquivos tempor rios criados pelo Subversion em cima do arquivo de sua c pia de trabalho svn update C sandwich txt Updated to revision 2 ls
356. longo dos anos cada vez come ando com o antigo diret rio concept ent o algumas vezes vendo esse diret rio ser renomeado como voc bem o quiser algumas vezes vendo esse diret rio ser ex clu do quando voc descarta a id ia Ou para complicar de vez algumas vezes talvez vo c concept para qualquer outra coisa por algum tempo mas depois renomei o de volta para concept por alguma raz o Em cen rios como este tentar instruir o Subversion para trabalhar com estes caminhos reutilizados pode ser um pouco como instruir um motorista dos sub rbios da Chicago oci dental a dirigir sempre a leste na estrada Roosevelt Road e ent o virar esquerda na Main Street Em meros vinte minutos voc pode cruzar com a tal Main Street ao andar pela Wheaton Glen Ellyn ou Lombard E n o elas n o s o a mesma rua Nosso motoris ta e o nosso Subversion precisa de um pouco mais de detalhes para poder fazer a coi sa certa Na vers o 1 1 o Subversion introduziu uma maneira para voc dizer exatamente que Main Street voc se refere E chamada de revis o marcadora e uma revis o disponibili zada pelo Subversion apenas com prop sito de identificar uma linha nica de hist rico Como no m ximo um objeto versionado pode ocupar um caminho em um dado instan te ou mais precisamente em uma dada revis o a combina o de um caminho e uma revis o marcadora tudo o que necess rio para se referenciar a uma linha espec fica d
357. lt Started new txn based on original revision 1 adding path test done adding path test a done 275 Refer ncia Completa do Subversion Nome svnadmin Islocks Print descriptions of all locks Sinopse svnadmin lslocks REPOS PATH Descri o Print descriptions of all locks in a repository Op es Nenhum Example This lists the one locked file in the repository at svn repos svnadmin lslocks svn repos Path tree jpg UUID Token opaquelocktoken ab00ddf0 6afb 0310 9cd0 dda813329753 Owner harry Created 2005 07 08 17 27 36 0500 Fri 08 Jul 2005 Expires Comment 1 line Rework the uppermost branches on the bald cypress in the foreground 276 Refer ncia Completa do Subversion Nome svnadmin Istxns Print the names of all uncommitted transactions Sinopse svnadmin lstxns REPOS PATH Descri o Print the names of all uncommitted transactions See Removing dead transactions for in formation on how uncommitted transactions are created and what you should do with them Exemplos List all outstanding transactions in a repository svnadmin lstxns usr local svn repos lw 1x 277 Refer ncia Completa do Subversion Nome svnadmin recover Bring a repository database back into a consistent state applies only to repositories using the bdb backend In addition if repos conf passwd does not exist it will create a default p
358. lta suas credenciais ao servidor Quando a autentica o for conclu da o servidor responde com a informa o original a qual o cliente requisitou Per ceba que este sistema diferente de sistemas como o CVS em que o cliente oferece cre denciais preemptivamente efetua um login ao servidor antes de fazer uma requisi o No Subversion o servidor que pega as credenciais desafiando o cliente no momento 72 T picos Avan ados adequado ao inv s de o cliente ter de inser las Isto torna certas opera es mais ele gantes Por exemplo se um servidor estiver configurado para permitir globalmente que qualquer um leia o reposit rio ent o o servidor nunca vai emitir um desafio de autentica o quando o cliente executar um svn checkout Se uma dada requisi o de rede feita pelo cliente resultar em uma nova revis o sendo cri ada no reposit rio p ex svn commit ent o o Subversion usa o nome de usu rio autenti cado associado a essas requisi es como autor da revis o Isto o nome do usu rio au tenticado armazenado como o valor da propriedade svn author na nova revis o veja Propriedades do Subversion Se o cliente n o estava autenticado em outras palavras se o servidor nunca lan ara um desafio de autentica o ent o a propriedade svn author ser vazia Armazenando Credenciais no Cliente Muitos servidores est o configurados para exigir autentica o em todas solicita
359. ltera o em particular Frustrado em ver as mesmas quest es dia ap s dia Ben trabalhou intensamente durante um m s no ver o de 2002 para escrever The Subversion Handbook um manual de ses senta p ginas cobrindo todas as funcionalidades b sicas do Subversion O manual n o ti nha a pretens o de ser completo mas ele foi distribu do com o Subversion e auxiliou os usu rios a ultrapassarem as dificuldades iniciais na curva de aprendizado Quando a O Reilly and Associates decidiu publicar um livro completo sobre o Subversion o caminho menos cr tico estava bvio apenas estender o manual Para os tr s co autores do novo livro ent o lhes foi dada uma oportunidade mpar Oficial mente sua tarefa era escrever um livro numa abordagem top down come ando pelo su m rio e seu esbo o inicial Mas eles tamb m tinham acesso a um fluxo constante de fa to um g iser incontrol vel de conte do de origem bottom up O Subversion j esteve nas m os de centenas de usu rios anteriores que geraram toneladas de feedback n o apenas sobre o Subversion mas tamb m sobre sua documenta o existente Durante todo o tempo em que eles escreveram o livro Ben Mike e Brian habitaram as lis tas de discuss o e salas de bate papo do Subversion registrando cuidadosamente os pro blemas que os usu rio estavam tendo em situa es na vida real Monitorar este feedback fazia parte da descri o de sua fun o na CollabNet e isto lhes deu uma
360. ltimas vers es do ra mo e do tronco ser o absolutamente id nticas exceto pelas suas pr prias altera es As sim particularmente neste caso voc realizar a fus o comparando seu ramo com o tron co cd trunk working copy 96 Fundir e Ramificar svn update At revision 1910 svn merge http svn example com repos calc trunk 1910 http svn example com repos calc branches mybranch 1910 real c integer c newdirectory newdirectory newfile Prac Comparando a revis o HEAD do tronco com a revis o revision HEAD do ramo voc esta definindo um delta que descreve apenas as altera es que voc fez no ramo ambas as li nhas de desenvolvimento j possuem todas as altera es do tronco Outra forma de pensar sobre este padr o que sua sincroniza o semanal do tronco para o ramo an loga execu o de um svn update na c pia de trabalho ao passo que o passo da fus o final an logo a executar um svn commit a partir de sua c pia de traba lho E no fim das contas o que de fato uma c pia de trabalho sen o um rasteiro ramo particular E um ramo que s capaz de armazenar s uma modifica o por vez Atravessando Ramos O comando svn switch transforma uma c pia de trabalho existente para refletir um ramo diferente Enquanto este comando n o estritamente necess rio para trabalhar com ra mos ele oferece um bom atalho Em nosso exemplo anterior depois de criar seu ramo pessoal
361. m Unicode codificadas como UTF 8 Nesse sentido o reposit rio est internacionali zado isto o reposit rio esta pronto para aceitar entradas em qualquer linguagem hu mana Isso significa contudo que o cliente do Subversion respons vel por enviar so mente nomes de arquivos e mensagens de log em UTF 8 para o reposit rio Para isso ele deve converter os dados a partir da localidade nativa em UTF 8 Por exemplo suponha que voc criou uma arquivo chamado caft txt e ent o ao submeter o arquivo voc escreve a mensagem de log como Adesso il caffA A piA for te Tanto o nome do arquivo quanto a mensagem de log contem caracteres n o ASCII por m sua localidade est definida como it IT e o cliente Subversion sabe interpret los como Italiano Ele usa um conjunto de caracteres do Italiano para converter os dados para UTF 8 antes de envi los para o reposit rio Observe que enquanto o reposit rio demanda nomes de arquivo e mensagens de log em UTF 8 ele n o presta aten o ao conte do do arquivo O Subversion trata o conte do do arquivo como sequ ncias de bytes quaisquer e nem o cliente nem servidor fazem uma tentativa de entender o conjunto de caracteres ou codifica o do conte do Erros de convers o de conjuntos de caractere Quando estiver usando o Subversion voc pode receber um erro relacionado a con vers es de conjuntos de caractere svs Caine COnyert SCrrac rrom etiv Cinco chlag Ron
362. m arquivo de texto e Sally simplesmente quer editar o final do mesmo arquivo Essas mudan as n o v o se sobrepor afinal Eles podem facilmente editar o arquivo simulta neamente sem grandes danos assumindo que as altera es ser o apropriadamente fundidas depois N o h necessidade de se trabalhar em turnos nessa situa o Locking pode criar falsa sensa o de seguran a Suponha que Harry trave e edite o ar quivo A enquanto Sally simultaneamente trava e edita o arquivo B Mas e se A e B de pendem um do outro e se as mudan as feitas em cada s o semanticamente incompati veis Subitamente A e B n o funcionam juntos mais O sistema de locking n o foi sufici entemente poderoso para prevenir o problema ainda que de certa forma tenha propor cionado uma falsa sensa o de seguran a E f cil para Harry e Sally imaginar que tra vando os arquivos cada um est come ando uma tarefa isolada segura e assim n o se preocupar em discutir as incompatibilidades que vir o com suas mudan as Locking fre quentemente se torna um substituto para a comunica o real A Solu o Copy Modify Merge O Subversion CVS e muitos outros sistemas de controle de vers o usam um modelo de copy modify merge copiar modificar fundir como uma alternativa ao locking Nesse mo delo cada usu rio se conecta ao reposit rio do projeto e cria uma c pia de trabalho pes soal personal working copy ou c pia local um espelho local dos arquivos e di
363. m caminho em uma c pia de trabalho a URL correspon dente no reposit rio ser usada O TARGET padr o quando n o informado significando a URL correspondente ao di ret rio atual na c pia de trabalho Com verbose svn list exibe os seguintes campos para cada item N mero da revis o do ltimo commit Autor do ltimo commit Se travado a letra O Veja svn info para detalhes Tamanho em bytes e Data e hor rio do ltimo commit Com xm1 a sa da fica em um formato XML com um cabe alho e um elemento de do cumento encapsulador a menos que incremental tamb m seja especificado Toda a informa o est presente a op o verbose n o aceita Nomes Alternativos Altera Is Nada Acessa o Reposit rio Op es Sim revision r REV verbose v recursive R incremental xml username USER password PASS no auth cach non interactive config dir DIR 231 Refer ncia Completa do Subversion Exemplos svn list mais til se voc quiser ver que arquivos um reposit rio tem sem precisar obter uma c pia de trabalho svn list http svn red bean com repos test support README txt INSTALL examples Voc pode passar a op o verbose para informa es adicionais similar ao comando UNIX Is I S svn list verbose file tmp repos 16 sally 28361 Jan 16 23 18 README txt 27
364. m que voc tenha feito a exclus o Veja tamb m Ressucitando Itens Exclu dos 22 Uso B sico notebook na praia O Subversion faz isso mantendo caches privados das vers es intactas de cada ar quivo sob controle de vers o dentro dos diret rios das reas administrativas svn Isto permite ao Subversion reportar e reverter modificagdes locais nestes arqui vos sem precisar acessar a rede Este cache chamado de texto base tamb m possibilita ao Subversion enviar as modifica es locais do usu rio durante um com mit ao servidor como um arquivo compactado delta ou diferen a sobre a vers o original do arquivo Ter este cache representa um grande beneficio mesmo se voc tiver uma conex o r pida de rede muito mais r pido enviar apenas as modifica es do arquivo que enviar todo o arquivo para o servidor O Subversion est sendo otimizado para ajudar voc com esta tarefa e capaz de fazer muitas coisas sem se comunicar com o reposit rio Em particular sua c pia de trabalho cont m um cache escondido com uma c pia intacta de cada arquivo sob controle de ver s o dentro da rea svn Por isso o Subversion pode rapidamente lhe mostrar como seus arquivos de trabalho mudaram ou mesmo permitir a voc desfazer suas altera es sem contactar o reposit rio Obtendo uma vis o geral de suas altera es Para ter uma vis o geral de suas modifica es voc vai usar o c
365. m reposit rios que estejam dispon veis a partir de m ltiplos esquemas de URL Por exemplo se seu servidor Subversion estiver configurado para permitir que qualquer um obtenha o conte do do reposit rio por meio de http ou https mas que apenas possam submeter altera es atrav s de https voc tem um interessante problema em m os Se suas defini es externas usam o formato http para URLs do reposit rio voc n o ser capaz de submeter nada a partir das c pias de trabalho criadas por de fini es externas Por outro lado se elas usam o formato https para URLs qualquer pessoa que tenha obtido a c pia atrav s de http por nao ter um cliente com suporte a https estar impossibilitado de buscar itens externos Atente tamb m que se voc precisar realocar sua c pia de trabalho usando svn switch relocate suas defini es externas n o ser o realocadas Finalmente pode ser que algumas vezes voc prefira que os subcomandos n o reconhe am svn ou mesmo n o operem sobre c pias de trabalhos externas Nesses casos voc pode passar a op o ignor xternals para o subcomando Revis es Marcadoras e Revis es Operativas N s copiamos movemos renomeamos e substitu mos completamente arquivos e diret ri os em nossos computadores a todo tempo E seu sistema de controle de vers o n o de veria basear em seu modo e fazer estas coisas com seus arquivos e diret rios com ver s es controladas O su
366. m repository revision 26 245 Refer ncia Completa do Subversion Nome svn propedit Edita a propriedade de um ou mais itens sob controle de vers o Sinopse svn propedit PROPNAME PATH T zJ GI svn propedit PROPNAME revprop r REV TARGET Descri o Edita uma ou mais propriedades usando seu editor preferido A primeira forma edita pro priedades versionadas em sua c pia de trabalho enquanto que a segunda edita proprie dades n o versionadas remotas em uma revis o de reposit rio TARGET apenas determi na qual reposit rio acessar Nomes Alternativos pedit pe Altera C pia de trabalho reposit rio apenas se executando sobre uma URL Acessa o Reposit rio Apenas se executando sobre uma URL Op es E lt revision r R revprop username USER password PASS no auth cach non interactive encoding ENC editor cmd EDITOR config dir DIR Exemplos svn propedit facilita a modifica o de propriedades que tenham m ltiplos valores svn propedit svn keywords foo c lt svn will launch your favorite editor here with a buffer open containing the current contents of the svn keywords property You can add multiple values to a property easily here by entering one value per line gt Set new value for property svn keywords on foo c 246 Nome svn propget Exibe o valor de uma propriedade Sinopse Refer ncia Complet
367. ma o em forma de uma rvore de arquivos uma hierarquia t pica de arqui vos e diret rios Qualquer n mero de clientes se conecta ao reposit rio e ent o l ou es creve nestes arquivos Ao gravar dados um cliente torna a informa o dispon vel para ou tros ao ler os dados o cliente recebe informa o de outros Figura 1 1 Um t pico sistema cliente servidor ilustra isso Figura 1 1 Um t pico sistema cliente servidor Repository brite T Client Client Ent o por que raz o isto interessante At ao momento isto soa como a defini o de um t pico servidor de arquivos E na verdade o reposit rio uma esp cie de servidor de arquivos mas n o de um tipo comum O que torna o reposit rio do Subversion especial que ele se lembra de cada altera o j ocorrida nele de cada mudan a em cada arquivo e at mesmo altera es na rvore de diret rios em si como a adi o elimina o e reor ganiza o de arquivos e diret rios Quando um cliente l dados de um reposit rio ele normalmente v apenas a ltima ver s o da rvore de arquivos Mas o cliente tamb m tem a habilidade de ver os estados ante riores do sistema de arquivos Por exemplo um cliente pode perguntar quest es de hist rico como O que este diret rio continha na ltima quarta feira ou Quem foi a ltima pessoa que alterou este arquivo e que altera es ela fez Estes s o os tipos de ques t es que est
368. mente como deix lo dispon vel na rede O pr ximo cap tulo todo sobre rede 140 Cap tulo 6 Configura o do Servidor Um reposit rio Subversion pode ser acessado simultaneamente por clientes executando na mesma m quina na qual o reposit rio se encontra usando o m todo file Mas a configura o t pica do Subversion envolve ter se uma nica m quina servidora sendo acessada por clientes em computadores por todo um escrit rio ou talvez por todo o mundo Este cap tulo descreve como ter seu reposit rio Subversion acess vel a partir da m quina onde estiver instalado para uso por clientes remotos Vamos cobrir os mecanismos de ser vidor do Subversion dispon veis atualmente discutindo a configura o e o uso de cada um Depois de ler esta se o voc deve ser capaz de decidir qual configura o a ade quada s suas necessidades e entender como habilitar tal configura o em seu servidor Vis o Geral O Subversion foi desenvolvido com uma camada de rede abstrata Isso significa que um reposit rio pode ser acessado via programa o por qualquer tipo de processo servidor e a API de acesso ao reposit rio do cliente permite aos programadores escrever plugins que falem com protocolos de rede relevantes Em teoria o Subversion pode usar um n mero infinito de implementa es de rede Na pr tica h apenas dois servidores at o mo mento em que este livro estava sendo escrito O Apache um serv
369. mente instalado se Web Folders j n o esti verem vis veis dentro do Meu Computador No Windows 2000 simplesmente adicione um novo local de rede informe a URL e o compartilhamento surgir para navega o Com o lan amento do Windows XP a Microsoft come ou a distribuir uma nova implemen ta o do Web Folders conhecida como WebDAV mini redirector A nova implementa o um cliente em n vel de sistema de arquivos que permite que compartilhamentos Web DAV sejam montados como letras de drives Infelizmente esta implementa o incrivel mente problem tica O cliente frequentemente tenta converter URLs http http host repos para a nota o UNC de compartilhamentos host repos ele tamb m tenta usar a autentica o de dom nio do Windows para responder aos desafi os de autentica o basic do HTTP enviando nomes de usu rios como HOST username Estes problemas de interoperabilidade s o cr ticos e est o documentados em diversos lo cais pela web para frustra o de muitos usu rios Mesmo Greg Stein o autor original do m dulo WebDAV do Apache desaconselha o uso do Web Folders do XP para comunica o com um servidor Apache V se por m que a implementa o original do Web Folders somente para Windows Ex plorer n o morreu no XP mas s est enterrada Ainda poss vel encontr la usando es ta t cnica 1 V em Locais de Rede 2 Adicione um novo local de rede 3 Quando
370. meter e receber mu dan as usando as fun es svn commit e svn update Voc provavelmente desenvolveu um reflexo que lhe impele a executar o comando svn status quase inconscientemente Para todos os intentos e prop sitos voc est pronto para usar o Subversion em um am biente t pico Mas o conjunto de recursos do Subversion n o para nas opera es de controle de vers o comuns Ele tem outras pequenas funcionalidades al m de comunicar mudan as de ar quivos e diret rios para e a partir de um reposit rio central Este cap tulo destaca alguns dos recursos do Subversion que apesar de importantes n o fazem pare da rotina di ria de um usu rio t pico Ele assume que voc est familiarizado com capacidades b sicas de controle de vers o sobre arquivos e diret rios Se n o est voc vai querer ler primeiro o Cap tulo 1 Conceitos Fundamentais e Cap tulo 2 Uso B si co Uma vez que voc tenha dominado estes fundamentos e terminado este cap tulo voc ser um usu rio avan ado do Subversion Especificadores de Revis o Como voc viu em Revis es n meros de revis o no Subversion s o bastante sim ples n meros inteiros que aumentam conforme voc submete mais altera es em seus dados versionados Assim n o demora muito para que voc n o se lembre mais do que aconteceu exatamente em toda uma dada revis o Felizmente o t pico ciclo de trabalho no Subversion frequentemente n o precisa que voc i
371. minho trunk object por exemplo Ent o o que significa solicitar ao Subversion o hist rico de trunk object Voc est pedindo sobre o objeto atualmente neste local ou o antigo objeto que voc excluiu deste local Voc est pedindo sobre as opera es que acontece ram em todos os objetos que alguma vez existiu neste caminho Obviamente o Subversi on precisa de uma dica do que voc realmente quer Devido a mudan as regulares o hist rico de um objeto versionado pode ser mais mistura 68 T picos Avan ados do do que isto Por exemplo voc pode ter um diret rio nomeado concept contendo al gum projeto de software pessoal em que voc esteja brincando Eventualmente por m este projeto amadurece a tal ponto que a id ia parece realmente poder decolar assim vo c faz o impens vel e decide dar um nome ao projeto 10 Vamos dizer que voc chamou seu software de Frabnaggilywort Neste ponto faz sentido renomear o diret rio para refle tir o novo nome do projeto assim concept renomeado para frabnaggilywort A vida continua Frabnaggilywort lan a uma vers o 1 0 e est sendo baixado e usado diariamen te por uma multid o de pessoas que pretendem melhorar suas vidas uma bela hist ria realmente mas n o termina aqui Como empreendedor que voc voc ja est com novas id ias em mente Ent o voc cria um novo diret rio concept e O ciclo come a outra vez De fato o ciclo recome a muitas vezes ao
372. mirror is probably a good candidate for re placing that main repository if it falls over The primary disadvantage of this method is that only the versioned repository data gets synchronized repository configuration files user specified repository path locks and other items which might live in the physical repository directory but not inside the repository s virtual versioned filesystem are not handled by svnsync In any backup scenario repository administrators need to be aware of how modifications to unversioned revision properties affect their backups Since these changes do not themsel ves generate new revisions they will not trigger post commit hooks and may not even trig ger the pre revprop change and post revprop change hooks 14 And since you can change revision properties without respect to chronological order you can change any revision s properties at any time an incremental backup of the latest few revisions might not catch a property modification to a revision that was included as part of a previous backup Generally speaking only the truly paranoid would need to backup their entire repository say every time a commit occurred However assuming that a given repository has some other redundancy mechanism in place with relatively fine granularity like per commit emails or incremental dumps a hot backup of the database might be something that a re pository administrator would want to include as part of a system wide nightly
373. mmit home sally svn work sandwich txt remains in conflict Se voc tiver um conflito voc precisa fazer uma dessas tr s coisas e Mesclar o texto conflituoso na m o examinando e editando as marca es de conflito dentro do arquivo Fazer uma c pia de um dos arquivos tempor rios em cima de seu arquivo de trabalho Executar svn revert lt filename gt para se desfazer de todas as suas modifica es locais Uma vez que voc tenha resolvido o conflito voc precisa informar isto ao Subversion executando svn resolved Isso remove os tr s arquivos tempor rios e o Subversion n o mais considera o arquivo como estando em conflito svn resolved sandwich txt Resolved conflicted state of sandwich txt Mesclando Conflitos na M o Mesclar conflitos na m o pode ser algo bem intimidante na na primeira vez que voc ten tar mas com um pouco de pr tica pode ser tornar t o f cil quanto andar de bicicleta Veja um exemplo Por um problema de comunica o voc e Sally sua colaboradora am bos editam o arquivo sandwich txt ao mesmo tempo Sally submete suas altera es e quando voc atualizar sua c pia de trabalho voc ter um conflito e precisar editar o ar quivo sandwich txt para resolv los Primeiro vamos dar uma olhada no arquivo S cat sandwich txt Top piece of bread ayonnaise Lettuce Tomato Provolone lt lt lt lt lt lt lt mine Salami ortadella Prosciutto Voc sempre
374. mmit de modifica es es sas n o ficar o vis veis para Sally quando ela fizer Update porque a c pia de trabalho de la aponta para calc trunk Leia Atravessando Ramos logo frente neste cap tulo o comando svn switch uma forma alternativa de se criar uma c pia de trabalho de um ra mo Vamos imaginar que tenha se passado uma semana e o seguinte commit realizado e Voc faz uma modifica o em calc branches my calc branch button c O que cria a revis o 342 Voc faz uma modifica o em calc branches my calc branch integer c O que cria a revis o 348 Sally faz uma modifica o em calc trunk integer c 0 que cria a revis o 344 Exitem agora duas linhas independentes de desenvolvimento mostrando em Figura 4 4 Ramifica o do hist rico de um arquivo afetando integer c 80 Fundir e Ramificar Figura 4 4 Ramifica o do hist rico de um arquivo rei ai my cale branch integer 1343 l created j changed l changed roa 1303 ay r344 time As coisas ficam interessantes quando voc olha o hist rico das altera es feitas na sua c pia de integer c pwd home user my calc branch svn log v integer c r343 user 2002 11 07 15 27 56 0600 Thu 07 Nov 2002 2 lines Changed paths M calc branches my calc branch integer c integer c frozzled the wazjub r341 user 2002 11 03 15 27 56 0600 Thu 07 Nov 2002 2 lines Changed paths A
375. mmit em suas altera es foo ser inteiramente remo vido de sua c pia de trabalho e do reposit rio svn copy foo bar Cria um novo item bar como uma duplicata de foo e agenda bar automaticamente para adi o Quando bar for adicionado ao reposit rio no pr ximo commit o hist rico da c pia gravado como vindo originalmente de foo svn copy n o cria diret rios intermedi rios svn move foo bar Este comando exatamente o mesmo que svn copy foo bar svn delete foo Isto bar agendado para ser adicionado como uma c pia de foo e foo agendado pa ra remo o svn move n o cria diret rios intermedi rios svn mkdir blort Este comando exatamente o mesmo que se executar mkdir blort svn add blort Isto um novo diret rio chamado blort criado e agendado para adi o Modificando o Reposit rio Sem uma C pia de Trabalho H algumas formas de registrar altera es imediatamente na rvore do reposit rio Isto apenas acontece quando um subcomando est operando diretamente numa URL ao inv s de na c pia de trabalho Em particular usos espec ficos de svn mkdir svn copy svn move e svn delete trabalham com URLs e n o esque a que o svn import sempre faz altera es em uma URL Opera es em URL funcionam desta maneira porque os comandos que operam em uma c pia de trabalho podem usar a c pia de trabalho como uma esp cie de rea de teste onde executar suas altera es antes de registr las
376. mo descrito anteriormente Se TARGET um caminho na c pia de trabalho ent o a op o revision significa revision N M O servidor compara TARGET N e TARGET revision N O cliente compara TARGET N com a c pia de trabalho sem revision O cliente compara a base com a c pia de trabalho de TARGET Se a sintaxe alternativa for usada o servidor compara URL1 e URL2 nas revis es Ne M respectivamente Se tanto Nou Mforem omitidos assumido o valor de HEAD Por padr o svn diff ignora os diret rios superiores dos caminhos dos arquivos e mera mente compara o conte do dos dois arquivos sendo comparados Se voc usar notice ancestry estes ancestrais dos caminhos ser o levados em considera o ao 220 Refer ncia Completa do Subversion comparar as revis es isto se voc executar svn diff em dois arquivos com conte dos id nticos mas com diret rios superiores em caminhos diferentes voc ir ver o conte do inteiro do arquivo como se ele tivesse sido removido e adicionado novamente Nomes Alternativos di Altera Nada Acessa o Reposit rio Para obter as diferen as de qualquer coisa com rela o revis o BASE em sua c pia de trabalho Op es revision r ARG change c ARG old ARG new ARG non recursive N diff cmd CMD extensions x ARGS no diff deleted notice ancestry summarize force username USER
377. mp stream This option will force that UUID to be ignored useful for overriding your configuration file if it has force uuid set incremental Dump a revision only as a diff against the previous revision instead of the usual full text parent dir DIR When loading a dump file root paths at DIR instead of revision r ARG Specify a particular revision to operate on quiet Do not show normal progress show only errors use post commit hook When loading a dump file run the repository s post commit hook after finalizing each newly loaded revision use pre commit hook When loading a dump file run the repository s pre commit hook before finalizing each newly loaded revision If the hook fails abort the commit and terminate the load pro cess svnadmin Subcommands 266 Nome Sinopse Refer ncia Completa do Subversion svnadmin create Create a new empty repository svnadmin create REPOS PATH Descri o Create a new empty repository at the path provided If the provided directory does not exist it will be created for you As of Subversion 1 2 svnadmin creates new repositories with the fsfs filesystem backend by default Opcoes bdb txn nosync bdb log keep config dir DIR fs type TYPE Exemplos Creating a new repository is just this easy svnadmin create usr local svn repos In Subversion 1 0 a Berkeley DB repository is always created In Subve
378. mples Eles n o queriam rom per com a metodologia existente para controle de vers o eles apenas queriam corrigir o CVS Eles decidiram que o Subversion deveria ser compat vel com as caracter sticas do CVS e manter o mesmo modelo de desenvolvimento mas n o reproduzir as falhas mais bvias do CVS E mesmo que o novo sistema n o fosse um substituto definitivo para o CVS ele deveria ser suficientemente semelhante a este para que qualquer usu rio do CVS pudesse migrar de sistema com pouco esfor o Depois de quatorze meses de desenvolvimento o Subversion tornou se auto gerenci vel em 31 de Agosto de 2001 Ou seja os desenvolvedores do Subversion pararam de usar o CVS para gerir seu pr prio c digo fonte e come aram a usar o pr prio Subversion no lu gar xix Pref cio Embora a CollabNet tenha iniciado o projeto e ainda patrocine uma grande parte dos tra balhos ela paga os sal rios de alguns poucos desenvolvedores do Subversion em tempo integral o Subversion mantido como a maioria dos projetos open source gerenciado por um conjunto de regras transparentes e de senso comum fundamentadas na merito cracia A licen a adotada pela CollabNet perfeitamente compat vel com Defini o Debi an de Software Livre DFSG Em outras palavras qualquer pessoa livre para baixar o c digo do Subversion modific lo e redistribu lo conforme lhe convier n o necess rio pedir permiss o CollabNet ou a quem que
379. n 15 Voc pode especificar LR CR OU CRLF como tipos de marcadores de fim de linha com es ta op o native eol 224 Refer ncia Completa do Subversion Nome svn help Ajuda Sinopse svn help SUBCOMMAND Descri o Este seu melhor amigo quando estiver usando o Subversion e este livro sequer chegar a seus p s Nomes Alternativos h As op es h e help t m todas o mesmo efeito que usando o subcomando help Altera Nada Acessa o Reposit rio N o Op es config dir DIR 225 Refer ncia Completa do Subversion Nome svn import Submete commit um arquivo ou rvore n o versionada ao reposit rio Sinopse svn import PATH URL Descri o Submete recursivamente uma c pia de PATH para URL Se PATH for omitido ent o assumido Diret rios anteriores s o criados no reposit rio se necess rio Nomes Alternativos Nenhum Altera Reposit rio Acessa o Reposit rio Sim Op es message m TEXT file F FILE quiet q non recursive N username USER password PASS no auth cach non interactive force log editor cmd EDITOR encoding ENC config dir DIR auto props no auto props ignor xternals Exemplos Isto importa o diret rio local myproj para dentro de trunk misc em seu reposit rio O diret rio trunk misc n o precisa existir antes da opera
380. n repository Filtering Repository History Since Subversion stores your versioned history using at the very least binary differencing algorithms and data compression optionally in a completely opaque database system at tempting manual tweaks is unwise if not quite difficult and at any rate strongly discoura ged And once data has been stored in your repository Subversion generally doesn t provi de an easy way to remove that data But inevitably there will be times when you would li ke to manipulate the history of your repository You might need to strip out all instances of a file that was accidentally added to the repository and shouldn t be there for whatever re ason 10 Or perhaps you have multiple projects sharing a single repository and you deci de to split them up into their own repositories To accomplish tasks like this administrators need a more manageable and malleable representation of the data in their repositori es the Subversion repository dump format As we described in Migrating Repository Data Elsewhere the Subversion repository dump format is a human readable representation of the changes that you ve made to your versioned data over time You use the svnadmin dump command to generate the dump data and svnadmin load to populate a new repository with it see Migrating Repository Data Elsewhere The great thing about the human readability aspect of the dump format is that if you aren t careless a
381. n vai informar que o objeto est em um estado conflitu oso svn update calc M calc Makefile in C calo owtton T Updated to revision 143 O Subversion tamb m vai criar no mesmo diret rio que o objeto em conflito um ar quivo com a extens o prej contendo os detalhes do conflito Voc deve examinar o conte do deste arquivo para decidir como resolver o conflito At que o conflito se ja resolvido voc vera um C na segunda coluna da sa da do svn status para o obje to em quest o e as tentativas de submeter suas modifica es locais ir o falhar S svn status calc e Cake fo udontie calle purt onner pLe S C ie Calle opicicom c sjoeS3 proa VlLslinscoume s user Sec tO 11256 out dare ser co USMY Para resolver conflitos de propriedades apenas garanta que as propriedades confli tuosas contenham os valores que deveriam conter e ent o use o comando svn re solved para informar ao Subversion que voc resolveu o problema manualmente 46 T picos Avan ados Voc tamb m deve ter notado a forma n o padr o como o Subversion atualmente exibe diferen as de propriedades Voc ainda pode executar svn diff e redirecionar a sa da pa ra criar um arquivo de patch us vel O programa patch vai ignorar patches de proprieda des como regra ele ignora qualquer coisa que n o consiga entender Isso significa infe lizmente que para aplicar completamente um patch gerado pelo svn diff quaisquer alte ra
382. na qual um diret rio adicionado Voc pode ver o uso de um recipiente APR o qual passado para prop sitos de aloca o de mem ria Al m disso o c digo revela um fato um tanto obscuro sobre tratamento de erros do Subversion todos os erros do Sub version devem ser explicitamente tratados para evitar vazamento de mem ria e em al guns casos falha da aplica o Exemplo 8 1 Usando a Camada de Reposit rio Converte um erro do Subversion em um simples c digo de erro booleano NOTA Erros do Subversion devem ser limpos usando svn error clear i porque eles s o alocados a partir do recipiente global sen o vazamento de mem ria ocorre define INT ERR expr N do N svn error t temperr expr N if __temperr N svn_error_clear __temperr return 1 return 0 while 0 Cria um novo diret rio no caminho NEW DIRECTORY no reposit rio Subversion localizado em REPOS PATH Realiza toda a aloca o de mem ria em POOL Esta fun o criar uma nova revis o para a adi o de NEW DIRECTORY Retorna zero se a opera o foi conclu da com sucesso n o zero caso contr rio static int make new directory const char repos path const char new directory apr pool t pool svn_error_t err 196 Incorporando o Subversion svn repos t repos svn_fs_t fs svn_revnum_t youngest_rev svn_fs_txn_t txn svn
383. na significam o mesmo que antes mas a segunda coluna mostra a revis o de trabalho do item A tercei ra e quarta coluna mostram a revis o na qual o item sofreu a ltima altera o e quem o modificou Nenhuma das execu es anteriores de svn status contactam o reposit rio ao inv s dis so elas comparam os metadados no diret rio svn com a c pia de trabalho Finalmente existe a op o show updates u que se conecta ao reposit rio e adiciona infor ma o sobre as coisas que est o desatualizadas svn status u v M i 44 293 sally README M 44 20 harry bar c 44 35 harry stuff trout c D 44 19 ira stuff fish c A 0 stuff things bloo h Status against revision 46 Perceba os dois asteriscos se voc executar svn update neste ponto voc devera rece ber altera es nos arquivos README e trout c Isto lhe d alguma informa o bastante til voc vai precisar atualizar e obter as modifica es do servidor no arquivo README antes de executar um commit ou o reposit rio vai rejeitar sua submiss o por ter estar de satualizada Mais sobre este assunto mais tarde O svn status pode exibir muito mais informa o sobre os arquivos e diret rios em sua c 24 Uso B sico pia de trabalho do que o que mostramos aqui para uma descri o exaustiva do svn sta tus e de sua sa da veja svn status Examinando os detalhes de suas altera es locais Outra forma de exam
384. nacreditavelmente simples O utilit rio svnadmin que vem com Subversion oferece um subcomando create para fazer is so svnadmin create path to repos Esse comando cria um novo reposit rio no diret rio path to repos com o sistema de armazenamento padr o Antes do Subversion 1 2 o padr o foi o Berkeley DB agora o pa 5A Oracle comprou Sleepycat e seu software Berkeley DB no dia dos namorados em 2006 115 Administra o do Reposit rio dr o o FSFS Voc pode escolher o sistema de armazenamento usando a op o fs type que aceita como par metro fsfs ou bdb Cria um reposit rio FSFS svnadmin creat fs type fsfs path to repos NNV Cria um reposit rio Berkeley DB svnadmin creat fs type bdb path to repos Depois de executar esse simples comando voc obt m um reposit rio Subversion O par metro de caminho para svnadmin um caminho comum no sistema de iy arquivos e nao uma URL como programa cliente svn usa quando faz refer n cia para um reposit rio Ambos os comandos svnadmin e svnlook s o consi derados utilit rios de servidor eles s o usados na m quina onde o reposit rio est armazenado para examinar ou modificar aspectos do reposit rio e n o t m a capacidade de executar tarefas sobre uma rede Um erro comum cometido pelos novatos no Subversion tentar utilizar URLs mesmo fi le para locais nesses dois programas Dentro do subdiret rio ab do seu r
385. naquela revis o experimente chamar o svn log diretamente na URL de mais alto n vel de seu reposit rio como em svn log r 2 http svn collab net repos svn Examinando os detalhes das altera es hist ricas N s j vimos o svn diff antes ele exibe as diferen as de arquivo no formato diff unifica do ele foi usado para mostrar as modifica es locais feitas em nossa c pia de trabalho antes de serem registradas no reposit rio Na realidade tem se que existem tr s usos distintos para o svn diff Examinar altera es locais Comparar sua c pia de trabalho com o reposit rio Comparar o reposit rio com o reposit rio Examinando Altera es Locais Como j vimos executar svn diff sem op es vai resultar numa compara o de seus ar quivos de trabalho com as c pias intactas na area svn S svn diff 33 Uso B sico Index rules txt rules txt revision 3 rules txt working copy 1 4 1 5 Be kind to others Freedom Responsibility Everything in moderation Chew with your mouth open Chew with your mouth closed tListen when others are speaking Comparando a Copia de Trabalho com o Repositorio Se um nico n mero de revis o for passado para a op o revision r ent o sua c pia de trabalho ser comparada com a revis o especificada no reposit rio S svn diff r 3 rules txt Index rules txt rules txt revis
386. nda mais paran ica voc pode usar um dos scripts de controle de acesso providos com o Subversion para previnir que algu m fa a algo al m de apenas criar novas copias na rea de r tulos Veja Cap tulo 6 Configura o do Servidor A maneira paranoica entrentanto n o necess ria Se algum usu rio acidentalmente fizer commit de alguam mudan a para o diret rio de r tulo voc pode simplesmente desfazer a mudan a como discutido na re vis o anterior E um controle de vers o apesar de tudo Criando um r tulo complexo Algumas vezes voc que sua foto seja mais complicada que um simples diret rio de uma nica revis o Por exemplo pense que seu projeto muito maior que nosso exemplo calc suponha que cont m um numero de sub diret rios e muitos outros arquivos No curso do seu traba lho voc pode decidir que voc precisa criar um c pia de trabalho que destinado para novos recursos e corre es de erros Voc pode conseguir isso selecionando arquivos e diret rios com datas anteriores em uma revis o particular usando svn update r livre mente ou mudando arquivos e diret rios para um ramo em particular fazendo uso do 99 Fundir e Ramificar svn switch Quando estiver pronto sua c pia de trabalho ser uma mistura de diferentes revis es Mas depois de testes voc saber que exatamente a combina o que voc precisa Hora de fazer a foto Copiar uma URL para outra n o vai funci
387. ndice que resume muitas das diferen as entre CVS e xili Pref cio Subversion Note tamb m que os exemplos de c digo fonte usados ao longo do livro s o apenas exemplos Ainda que eles compilem com os truques apropriados do compilador seu pro p sito ilustrar um cen rio em particular n o necessariamente servir como exemplos de boas pr ticas de programa o Como Ler Este Livro Livros t cnicos sempre enfrentam um certo dilema se os leitores devem fazer uma leitura top down do in cio ao fim ou bottom up do fim ao come o Um leitor top down prefere ler ou folhear toda a documenta o antes ter uma vis o geral de como o sistema funciona e apenas ent o que que ele inicia o uso do software J um leitor bottom up aprende fazendo ele algu m que mergulha no software e o esmiu a voltando s se es do livro quando necess rio Muitos livros s o escritos para um ou outro tipo de pessoa e esse li vro sem d vida indicado para o leitor top down Se voc est lendo esta se o prova velmente voc j um leitor top down nato No entanto se voc um leitor bottom up n o se desespere Mesmo que este livro pode ser definido como um apanhado geral so bre o Subversion o conte do de cada se o tende a aprofundar com exemplos especifi cos nos quais voc pode aprender fazendo As pessoas impacientes que j querem ir fa zendo podem pular direto para o Ap ndice A Guia R pido de In
388. ndo svn commit no arquivo n o far na da e um comando svn update tamb m n o Localmente alterado e corrente O arquivo foi alterado no diret rio local mas nenhuma altera o foi publicada no repo sit rio desde o ltimo update existem altera es locais que ainda n o foram publica das no reposit rio assim o comando svn commit no arquivo resultar na publica o dessas altera es e um comando svn update n o far nada N o Modificado e desatualizado O arquivo n o foi alterado no diret rio local mas foi alterado no reposit rio O arquivo pode ser eventualmente atualizado para sincroniz lo com a ltima revis o p blica O comando svn commit no arquivo n o ir fazer nada mas o comando svn update ir trazer as ltimas altera es para a sua c pia local Localmente Modificado e desatualizado O arquivo foi alterado tanto no diret rio loca quanto no reposit rio O comando svn commit no arquivo ir falhar com o erro out of date desatualizado O arquivo deve ser atualizado primeiro o comando svn update vai tentar fundir as altera es do re posit rio com as locais Se o Subversion n o conseguir completar a fus o de uma for ma plaus vel automaticamente ele deixar para o usu rio resolver o conflito Isto pode soar como muito para acompanhar mas o comando svn status mostrar para voc o estado de qualquer item em seu diret rio local Para maiores informa es sobre este comando veja Obte
389. ndo uma vis o geral de suas altera es 13 Conceitos Fundamentais Revis es Locais Mistas Como um princ pio geral o Subversion tenta ser t o flex vel quanto poss vel Um tipo es pecial de flexibilidade a capacidade de ter uma c pia local contendo arquivos e diret rios com uma mistura de diferentes revis es Infelizmente esta flexibilidade tende a confundir in meros novos usu rios Se o exemplo anterior mostrando revis es mistas deixou voc perplexo aqui est um exemplo mostrando tanto a raz o pela qual o funcionalidade exis te quanto como fazer para us la Atualiza es e Submiss es s o Separados Uma das regras fundamentais do Subversion que uma a o de push n o causa um pull e vice versa S porque voc est pronto para publicar novas altera es no reposi t rio n o significa que voc est pronto para receber as altera es de outras pessoas E se voc tiver novas altera es em curso ent o o comando svn update deveria graciosa mente fundir as altera es no reposit rio com as suas pr prias ao inv s de for ar voc a public las O principal efeito colateral dessa regra significa que uma c pia local tem que fazer uma escritura o extra para acompanhar revis es mistas bem como ser tolerante a misturas Isso fica mais complicado pelo fato de os diret rios tamb m serem versionados Por exemplo suponha que voc tenha uma c pia local inteiramente na revis
390. nforme n meros de revis o arbitr ri os para as opera es que voc executa no Subversion Para aquelas opera es que pre cisam de um especificador de revis o voc geralmente informa um n mero de revis o que voc viu em um e mail da submiss o e mail de commit na sa da de alguma outra opera o do Subversion ou em algum outro contexto que poderia fazer sentido para aquele n mero em particular Mas ocasionalmente voc precisa de um marco de um momento no tempo para o qual voc n o tem ainda um n mero de revis o memorizado ou em m os Neste caso al m de n meros inteiros de revis o o svn permite como entrada algumas formas de especifica dores de revis o termos de revis o e datas de revis o As v rias formas de especificadores de revis o do Subversion podem ser mis turadas e correspondidas quando usadas para especificar intervalos de revi s o Por exemplo voc pode usar r REV1 REV2 onde REV1 seja um termo de revis o e REV2 seja um n mero de revis o onde REV1 seja uma data e REV2 um termo de revis o e por a vai Especificadores de revis o individu ais s o avaliados independentemente ent o voc pode p r o que bem quiser junto dos dois pontos Termos de Revis o O cliente Subversion entende um conjunto de termos de revis o Estes termos podem ser usados no lugar dos argumentos inteiros para a op o revision r e s o resolvi dos para n meros de revis o espec ficos pelo Subversi
391. nifica entretanto que como o Apache os clientes Subversion e servidores executam em quaisquer sistemas operacio nais em que o servidor Apache httpd execute Windows Linux todos os tipos de BSD Mac OS X Netware e outros A maneira mais f cil de obter o Subversion fazendo o download do pacote bin rio cons tru do para seu sistema operacional O site do Subversion http subversion tigris org quase sempre ter estes pacotes dispon veis para download submetidos por volunt rios O site comumente cont m pacotes de instaladores gr ficos para os usu rios de sistemas operacionais Microsoft Se voc tem um sistema operacional Unix like voc pode usar o sistema de pacotes nativo de sua distribui o RPMs DEBs a rvore de ports etc para obter o Subversion Como alternativa voc tamb m pode compilar o Subversion diretamente a partir do c di go fonte ainda que esta n o seja sempre uma tarefa f cil Se voc n o tem experi ncia em compilar pacotes de software de c digo aberto ao inv s disso provavelmente seria melhor que voc fizesse o download da distribui o bin ria Do site do Subversion baixe a ltima vers o do c digo fonte Depois de descompact lo siga as instru es no arquivo INSTALL para compil lo Note que um pacote com os fontes pode n o conter tudo o que voc precisa para compilar um cliente de linha de comando capaz de se comunicar com um reposit rio remoto Desde o Subversion 1 4 e posteri
392. nomea o no ramo removeu as modifica es re centes de Sally para a ltima revis o Mas isto n o uma perda de dados real as modifica es de Sally ainda est o no hist rico do reposit rio mas o que de fato aconteceu pode n o ser bvio de imediato A moral des sa hist ria que at que o Subversion evolua tenha cuidado ao mesclar c pias e renome a es a partir de um ramo para outro 89 Fundir e Ramificar Casos Comuns de Utiliza o H muitos usos diferentes para ramifica es e para o svn merge e esta se o descreve os usos mais comuns com os quais voc provavelmente ir se deparar Mesclando um Ramo Inteiro para Outro Para completar nosso exemplo de execu o vamos avan ar no tempo Suponha que v ri os dias tenham se passado e que muitas altera es tenham acontecido tanto no tronco quanto em seu ramo particular Suponha que voc tenha terminado de trabalhar seu ramo particular e que o recurso ou corre o de bug tenha finalmente terminado e que agora voc quer mesclar todas as modifica es de seu ramo de volta para o tronco principal pa ra que os outros usufruam Ent o como usamos o svn merge neste cen rio Lembre se de que este comando com para duas rvores e aplica as diferen as em uma c pia de trabalho Ent o para receber as modifica es voc precisa ter uma c pia de trabalho do tronco Vamos assumir que voc ainda possua uma c pia original completamente atualiza
393. ns vel a problemas de umask melhor se acessado por somen te um usu rio contorna problemas de umask Escalabilidade Uso de disco do re posit rio grande especialmente se ar quivos de log n o s o limpados pequeno N mero de rvores de revis o banco de dados sem problemas alguns sistemas de arquivos nativos anti gos n o crescem bem com milhares de entradas em um ni co diret rio Diret rios com mui tos arquivos lento r pido Desempenho Obter c pia da ltima revis o sem diferen as signi ficativas sem diferen as signi ficativas Grandes submiss es geralmente lentas mas o custo pago ao longo da vida da submiss o geralmente r pidas mas atraso na finali za o pode ocasio nar timeouts no clien te Existem vantagens e desvantagens em cada um desses dois mecanismos de armazena mento Nenhum deles mais oficial que o outro embora os novos FSFS sejam o padr o do Subversion 1 2 Ambos s o seguros o bastante para voc confiar seus dados versiona dos Mas como voc pode ver em Tabela 5 1 Comparativo dos Mecanismos de Armaze namento o FSFS oferece um pouco mais de flexibilidade em termos de seus cen rios de implanta o Maior flexibilidade significa que voc tem que trabalhar um pouco mais para encontrar formas de implant lo incorretamente Essas raz es adicionadas ao fato de que n o usando Berkeley D
394. nsferir n o apenas o estado mais recente dos seus dados mas toda a hist ria atr s dele tam b m de um sistema para o outro Isto um problema extremamente dif cil de resolver que envolve deduzir conjuntos de mudan as na falta de atomicidade e traduzir entre as pol ticas de ramifica o completamente ortogonais dos dois sistemas entre outras compli ca es Todavia h um punhado de ferramentas prometendo suportar ao menos parcial mente a habilidade de converter reposit rios CVS em reposit rios Subversion A mais popular e provavelmente a mais madura ferramenta de convers o cvs2svn http cvs2svn tigris org um script Python originalmente criado por membros da pr pria comunidade de desenvolvimento do Subversion Esta ferramenta destinada a ser execu tada exatamente uma vez ela examina seu reposit rio CVS diversas vezes e tenta dedu zir submiss es ramos e r tulos da melhor forma que consegue Quando termina o resul tado ou um reposit rio Subversion ou um arquivo de despejo port vel representando a hist ria do seu c digo Veja o website para instru es detalhadas e advert ncias 329 Ap ndice C WebDAV e Autoversionamento WebDAV uma extens o do HTTP e est se tornando cada vez mais popular como um padr o para compartilhamento de arquivos Hoje em dia os sistemas operacionais est o se tornado extremamente relacionados Web e muitos agora t m suporte para montar compartilhamentos
395. ntagem deste sistema sua simplicidade ningu m precisa aprender sobre fus es ou ramifica es A desvantagem que o c digo no tronco est frequentemente inst vel ou inutiliz vel Outros projetos usam ramos ao extremo as altera es nunca s o submetidas diretamente para o tronco Mesmo as modifica es mais triviais s o criadas em um pe queno ramo de curta dura o s o cuidadosamente revistas e mescladas para o tronco Ent o o ramo exclu do O sistema garante que o c digo presente no tronco esteja ex cepcionalmente sempre est vel e utiliz vel a cada momento mas a um curso de uma tre menda sobrecarga no processo Muitos projetos utilizam uma abordagem meio termo S o projetos que insistem que o c digo presente em trunk compile e passe em testes de regress o a cada momento Um ramo de novos recursos s necess rio quando uma modifica o demanda um grande n mero de submiss es que possam desestabilizar o c digo Uma regra de ouro se per guntar se o desenvolvedor trabalhou v rios dias isoladamente e ent o submeteu uma grande altera o toda de uma s vez de forma que trunk nunca esteve desestabiliza da tal modifica o seria muito grande para uma revis o Se a resposta a esta pergunta for sim ent o a modifica o deveria ser desenvolvida em um ramo de novos recursos Se o desenvolvedor submeter modifica es incrementais ao ramo elas podem ser facil mente revistas por seus colegas Fin
396. ntains a single revision the first revision in the requested revision range in which every file and directory in the repository in that revi sion is presented as if that whole tree was added at once followed by other revisions the remainder of the revisions in the requested range which contain only the files and directo ries which were modified in those revisions For a modified file the complete fulltext repre sentation of its contents as well as all of its properties are presented in the dumpfile for a directory all of its properties are presented There are two useful options which modify the dumpfile generator s behavior The first is the incremental option which simply causes that first revision in the dumpfile stream to contain only the files and directories modified in that revision instead of being presented as the addition of a new tree and in exactly the same way that every other revision in the dumpfile is presented This is useful for generating a relatively small dumpfile to be loaded into another repository which already has the files and directories that exist in the original repository The second useful option is deltas This option causes svnadmin dump to instead of emitting fulltext representations of file contents and property lists emit only deltas of those items against their previous versions This reduces in some cases drastically the size of the dumpfile that svnadmin dump creates There are however disa
397. nte gos tarfamos de fazer substituir nossa atual vers o base da libcomplex 1 0 por uma c pia da libcomplex 1 1 e em seguida voltar a aplicar as modifica es que fizemos anteriormente na biblioteca desta vez para a nova vers o Mas na pr tica n s abordamos o problema na outra dire o aplicando as altera es feitas em libcomplex entre as vers es 1 0 e 1 1 di retamente na nossa c pia personalizada dela Para executar esta atualiza o n s obtemos uma c pia do nosso ramo de fornecedor e substituimos o c digo no diret rio current pelo novo c digo fonte da libcomplex 1 1 N s literalmente copiamos novos arquivos sobre os arquivos existentes talvez descompactan do a vers o compactada da libcomplex 1 1 sobre nossos arquivos e diret rios existentes A meta aqui fazer nosso diret rio current conter apenas o c digo da libcomplex 1 1 e garantir que todo esse c digo esteja sob controle de vers o Ah e n s queremos fazer is to com o m nimo poss vel de perturba o no hist rico do controle de vers o Ap s substituir o c digo 1 0 pelo c digo 1 1 svn status vai mostrar arquivos com modifi ca es locais assim como talvez alguns arquivos fora do controle de vers o ou faltantes Se n s fizemos o que dever amos ter feito os arquivos fora do controle de vers o s o apenas os novos arquivos introduzidos na vers o 1 1 da libctomplex n s executamos svn add sobre eles para coloc los sob controle vers o Os arq
398. ntenha uma lista de filtros de arquivo delimitadas por quebras de linha que o Subversion deve usar para determinar objetos ignor veis neste mesmo diret rio Estes filtros n o anu lam os encontrados na op o global ignores da configura o runtime por m s o apenas anexados a esta lista E importante notar mais uma vez que ao contr rio da op o global ignores Os filtros encontrados na propriedade svn ignore aplicam se somente ao diret rio no qual esta propriedade est definida e em nenhum de seus subdi ret rios A propriedade svn ignore uma boa maneira para dizer ao Subversion ignorar arquivos que est o suscept veis a estarem presentes em todas as c pias de trabalho de usu rio deste diret rio assim como as sa das de compilador ou para usar um exemplo mais apropriado para este livro os arquivos HTML PDF ou PostScript produzidos como 51 T picos Avan ados o resultado de uma convers o de alguns arquivos XML do fonte DocBook para um formato de sa da mais leg vel O suporte do Subversion para filtros de arquivos ignor veis estende somente at o processo de adicionar arquivos e diret rios n o versionados ao controle de vers o Desde que um objeto est sob o controle do Subversion os meca nismos de filtro de ignora o j n o s o mais aplic veis a ele Em outras pala vras n o espere que o Subversion deixe de realizar a submiss o de mudan as que voc efetuou em arquivos versionados sim
399. nteriormente Note que o arquivo continha uma ncora de pala vra chave para a palavra chave Rev no entanto n o inclu mos esta palavra chave no va lor da propriedade que definimos Felizmente o Subversion ignorar pedidos para substi tuir palavras chave que n o est o presentes no arquivo e n o substituir palavras chave que n o est o presentes no valor da propriedade svn keywords Imediatamente depois de voc submeter esta mudan a de propriedade o Subversion atu alizar seu arquivo de trabalho com o novo texto substituto Em vez de ver a sua ncora da palavra chave LastChangedDate voc ver como resultado seu valor substitu do Este resultado tamb m cont m o nome da palavra chave que continua sendo limitada pe los caracteres de sinal de moeda E como prev amos a palavra chave Rev n o foi substitu da porque n o solicitamos que isto fosse realizado Note tamb m que definimos a propriedade svn keywords para Date Author e no en tanto a ncora da palavra chave usou o apelido SLastChangedDatesS e ainda sim ex pandiu corretamente Aqui est o mais recente relat rio das linhas iniciais SLastChangedDate 2006 07 22 21 42 37 0700 Sat 22 Jul 2006 SRevs Ac mulos de nuvens est o aparecendo com mais freqti ncia quando o ver o se aprox Se agora algu m submeter uma mudan a para weather txt sua c pia deste arquivo continuar a mostrar o mesmo valor para a palavra chave substitu da como
400. nto mais contundente para vincular diretamente s APIs em vez de en capsular outros programas que o projeto Subversion fez promessas de compatibili dade entre suas APIs Atrav s de vers es menores dessas APIs como entre 1 3 e 1 4 nenhum prot tipo de fun o mudar Em outras palavras voc n o ser for a do a atualizar o c digo fonte de seu programa simplesmente porque voc atualizou para uma nova vers o do Subversion Algumas fun es podem ficar defasadas mas elas ainda funcionar o e isso te d um intervalo de tempo para come ar a usar as novas APIs Esse tipo de compatibilidade n o prometido para as mensagens de sa da do cliente de linha de comando do Subversion as quais est o sujeitas a mu dan as de uma vers o para outra Por dentro da rea de Administra o da C pia de Trabalho Como mencionamos anteriormente cada diret rio de uma c pia de trabalho do Subversi on cont m um sub diret rio especial chamado svn que hospeda dados administrativos sobre este diret rio da c pia de trabalho O Subversion usa a informa o em svn para rastrear coisas como Quais locais do reposit rio s o representados pelos arquivos e subdiret rios no diret rio da c pia de trabalho Que revis o de cada um destes arquivos e diret rios est atualmente presente na sua c pia de trabalho Todas propriedades definidas pelo usu rio que possam estar anexadas a esses arqui vos e diret rios C
401. o A se o tunnels permite que voc defina um novo esquema de t nel para uso com o svnserve e clientes de conex es svn Para mais detalhes veja Tunelamento sobre SSH A se o miscellany onde se encontram todas aquelas op es que n o perten am a nenhuma das outras se es 2 Nesta se o voc pode encontrar global ignores Ao executar o comando svn status o Subversion lista arquivos e diret rios n o versionados juntamente com os versionados marcando os com um caractere veja Algu m para um jantar improvisado 177 Customizando sua Experi ncia com Subversion Obtendo uma vis o geral de suas altera es Algumas vezes pode ser chato ficar sempre vendo itens n o versionados desinteressantes por exemplo arquivos objeto que resultantes da compila o de um programa na tela A op o global ignores uma lista de campos delimitados por espa os e que descrevem os nomes de arqui vos e diret rios que o Subversion n o deveria exibir a n o ser apenas quando versio nados Seu valor padr o o lo la rej rej LHX DS Store Bem como o svn status os comandos svn add e svn import tamb m ignoram arqui vos que correspondam com esta lista quando est o escaneando um diret rio Voc pode sobrescrever este comportamento para uma nica inst ncia de qualquer desses comandos especificando explicitamente o nome do arquivo ou usando a op o n
402. o gic additionally chooses default values for some of the Berkeley DB configuration options However sometimes your particular repository with its unique collection of data and ac cess patterns might require a different set of configuration option values The producers of Berkeley DB understand that different applications and database environ ments have different requirements and so they have provided a mechanism for overriding at runtime many of the configuration values for the Berkeley DB environment BDB checks for the presence of a file named DB_CONF IG in the environment directory namely the re pository s db subdirectory and parses the options found in that file Subversion itself cre ates this file when it creates the rest of the repository The file initially contains some de fault options as well as pointers to the Berkeley DB online documentation so you can read about what those options do Of course you are free to add any of the supported Berkeley DB options to your DB CONFIG file Just be aware that while Subversion never attempts to read or interpret the contents of the file and makes no direct use of the option settings in it you ll want to avoid any configuration changes that may cause Berkeley DB to behave in a fashion that is at odds with what Subversion might expect Also changes made to DB CONFIG won t take effect until you recover the database environment using svnadmin recover Repository Maintenance Maintain
403. o svn import ir criar diret ri os recursivamente para voc svn import m New import myproj http svn red bean com repos trunk misc Adding myproj sample txt Transmitting file data Committed revision 16 Atente que isto n o cria um diret rio chamado myproj no reposit rio Se isso o que vo c quer simplesmente adicione myproj ao final da URL 226 Refer ncia Completa do Subversion svn import m New import myproj http svn red bean com repos trunk misc my Adding myproj sample txt Transmitting file data Committed revision 16 Depois de importar dados perceba que a rvore original not esta sob controle de vers o Para come ar a trabalhar voc ainda precisa realizar um svn checkout para obter uma nova c pia de trabalho da rvore 227 Refer ncia Completa do Subversion Nome svn info Exibe informa o sobre um item local ou remoto Sinopse svn info TARGET REV Descri o Exibe informa o sobre caminhos na c pia de trabalho ou URLs especificadas A informa o exibida para ambos pode incluir e Path Name URL e Repository Root e Repository UUID e Revision Node Kind Last Changed Author Last Changed Revision Last Changed Date e Lock Token Lock Owner Lock Created date e Lock Expires date Tipos adicionais de informa o dispon veis apenas para caminhos em c pias de trabalho s o Schedule
404. o permite o seu uso at que um adminitrador recupere ele Se os mesmo cen rios acontece rem com um processo que utiliza FSFS o reposit rio n o afetado No pior caso algu mas informa es de transa o s o deixadas para tr s O nico argumento coerente contra o FSFS que ele relativamente imaturo quando comparado ao Berkeley DB Ao contr rio do Berkeley DB que tem anos de hist ria sua pr pria equipe de desenvolvimento e agora o grande nome da Oracle ligado ele FSFS muito mais novo em termos de engenharia Antes da vers o 1 4 ele ainda era afe tado por algumas falhas bem s rias com rela o a integridade dos dados muito embora essas falhas ocorressem raramente elas nunca deveriam ocorrer Dito isso o FSFS tem se tornado rapidamente a escolha de armazenamento de alguns dos maiores reposit rios Subversion p blicos e privados e oferece poucos obst culos a ponto de ser um bom pon to de entrada para o Subversion Criando e Configurando Seu Reposit rio Em Estrat gias para Implementa o de Reposit rios foram vistas algumas decis es im portantes que devem ser feitas antes de criar e configurar o seu reposit rio Subversion Agora finalmente vamos sujar nossas m os Nessa se o n s veremos como criar um re posit rio Subversion e configur lo para executar a es customizadas quando eventos es peciais ocorrerem Criando o Reposit rio A cria o de um reposit rio Subversion uma tarefa i
405. o voc iy pode querer usar svn cat no lugar ele n o altera sua c pia de trabalho svnadmin O svnadmin a ferramenta administrativa para monitoramento e manuten o de seu re posit rio Subversion Para informa es detalhadas veja svnadmin Como o svnadmin trabalha com acesso direto ao reposit rio e assim s pode ser usado na pr pria m quina onde se encontra o reposit rio ele se refere ao reposit rio com um caminho e n o com uma URL Op es do svnadmin bdb log keep Berkeley DB specific Disable automatic log removal of database log files Having the se log files around can be convenient if you need to restore from a catastrophic reposi tory failure bdb txn nosync Berkeley DB specific Disables fsync when committing database transactions Used with the svnadmin create command to create a Berkeley DB backed repository with DB_TXN_NOSYNC enabled which improves speed but has some risks associated with it bypass hooks 265 Refer ncia Completa do Subversion Bypass the repository hook system clean logs Removes unused Berkeley DB logs force uuid By default when loading data into repository that already contains revisions svnad min will ignore the UUID from the dump stream This option will cause the repository s UUID to be set to the UUID from the stream ignore uuid By default when loading an empty repository svnadmin will ignore the UUID from the du
406. o 10 Voc edita o arquivo foo htm1 e ent o realiza um comando svn commit o qual cria a revis o 15 no reposit rio Ap s o commit acontecer muitos novos usu rios poderiam esperar que a c pia local estivesse na revis o 15 mas este n o o caso Qualquer n mero de altera es poderia ter acontecido no reposit rio entre as revis es 10 e 15 O cliente nada sabe sobre essas altera es no reposit rio pois voc ainda n o executou o comando svn up date e o comando svn commit n o baixou as novas altera es no reposit rio Se por outro lado o comando svn commit tivesse feito o download das novas altera es auto maticamente ent o seria poss vel que a c pia local inteira estivesse na revis o 15 mas ent o n s ter amos quebrado a regra fundamental onde push e pull permanecem como a es separadas Portanto a nica coisa segura que o cliente Subversion pode fazer marcar o arquivo foo html com a revis o 15 O restante da c pia local permanece na revis o 10 Somente executando o comando svn update as altera es mais recentes no reposit rio ser o baixadas o a c pia local inteira ser marcada com a revis o 15 Revis es misturadas s o normais O fato cada vez que voc executar um comando svn commit sua c pia local acabar tendo uma mistura de revis es As coisas que voc acabou de publicar s o marcadas com um n mero de revis o maior que todo o resto Ap s v rias submiss es sem atuali
407. o ao arquivo abrevia o para ocKed indicando que o sinal de trava est presente Em rela o aos sinais de trava Um sinal de trava n o um sinal de autentica o tanto como um sinal de autoriza o O sinal n o um segredo protegido De fato um sinal de trava exclusivo des coberto por qualquer pessoa que execute svn info URL Um sinal de trava especi al somente quando reside dentro de uma c pia de trabalho Ele prova de que a tra va foi criada em uma c pia de trabalho espec fica e n o noutra qualquer por algum outro cliente Apenas se autenticando como o propriet rio da trava n o suficiente para prevenir acidentes Por exemplo suponha que voc travou um arquivo usando um computador em seu escrit rio mas deixou o trabalho antes de concluir suas modifica es para esse ar quivo N o deveria ser poss vel acidentalmente submeter mudan as para esse mes mo arquivo do seu computador de casa mais tarde da noite simplesmente porque voc est autenticado como o propriet rio da trava Em outras palavras o sinal de trava previne uma parte do software relacionado ao Subversion de invadir o trabalho do outro Em nosso exemplo se voc realmente precisa modificar o arquivo de uma 60 T picos Avan ados c pia de trabalho alternativa voc precisaria parar a trava e retravar o arquivo Agora que Harry tem o arquivo banana jpg travado Sally n o poder modificar ou e
408. o argumento principal para svn info uma URL en t o as informa es refletem a mais recente vers o de um objeto no reposit rio e qualquer men o a uma trava descreve a atual trava sobre o objeto Portanto neste exemplo particular Sally pode ver que Harry travou o arquivo em 16 de Fevereiro para fazer um ajuste r pido J estando em Junho ela suspeita que ele prova velmente se esqueceu totalmente da trava Ela poderia ligar para Harry para reclamar e lhe pedir que libere a trava Se ele estiver indispon vel ela poder tentar quebrar a trava a for a ou solicitar um administrador para o fazer Quebrando e roubando travas Uma trava no reposit rio n o algo sagrado na configura o padr o do Subversion as travas podem ser liberadas n o somente pela pessoa que a criou mas por qualquer outra tamb m Quando algu m que s o seja o criador original da trava a destr i referimos a isto como quebrar a trava Para o administrador simples quebrar travas Os programas svnlook e svnadmin pos suem a habilidade de mostrar e remover travas diretamente do reposit rio Para mais in forma es sobre estas ferramentas veja An Administrator s Toolkit 62 T picos Avan ados svnadmin lslocks usr local svn repos Path project2 images banana jpg UUID Token opaquelocktoken c32b4d88 e8 fb 2310 abb3 153ff1236923 Owner frank Created 2006 06 15 13 29 18 0500 Thu 15 Jun 2006 Expires Comment
409. o change something in the database it first checks for the existence of a lock on the target data If the data is not loc ked the process locks the data makes the change it wants to make and then unlocks the data Other processes are forced to wait until that lock is removed before they are permit ted to continue accessing that section of the database This has nothing to do with the locks that you as a user can apply to versioned files within the repository we try to clear up the confusion caused by this terminology collision in Os tr s significados de trava In the course of using your Subversion repository fatal errors or interruptions can prevent a process from having the chance to remove the locks it has placed in the database The result is that the back end database system gets wedged When this happens any at tempts to access the repository hang indefinitely since each new accessor is waiting for a lock to go away which isn t going to happen If this happens to your repository don t panic The Berkeley DB filesystem takes advantage of database transactions and checkpoints and pre write journaling to ensure that only the most catastrophic of events 8 can permanently destroy a database environment A suffici 125 Administra o do Reposit rio ently paranoid repository administrator will have made off site backups of the repository data in some fashion but don t head off to the tape backup storage closet just
410. o de Rede Em algum momento ser necess rio compreender como seu cliente Subversion comuni ca com seu servidor A camada de rede do Subversion abstrata significando que os cli entes Subversion apresentam o mesmo comportamento geral n o importando com que ti po de servidor eles est o operando Seja comunicando no protocolo HTTP http com o Servidor HTTP Apache ou comunicando no protocolo personalizado do Subversion svn com svnserve o modelo de rede b sico o mesmo Nesta se o vamos expli car os princ pios b sicos deste modelo de rede incluindo como o Subversion gerencia as quest es de autentica o e autoriza o Solicita es e Respostas O cliente Subversion passa a maior parte de seu tempo gerenciando c pias de trabalho Quando ele precisa de informa es de um reposit rio remoto entretanto ele efetua uma solicita o de rede e o servidor responde com uma resposta apropriada Os detalhes do protocolo de rede est o escondidos do usu rio o cliente tenta acessar uma URL e de pendendo do esquema na URL um protocolo espec fico usado para comunicar com o servidor veja URLs do Reposit rio Execute svn version para ver quais esquemas de URL e protocolos que o iy cliente sabe como usar Quando o processo servidor recebe uma requisi o do cliente ele quase sempre solicita que o cliente se identifique Ele lan a um desafio de autentica o para o cliente e o clien te responde enviando de vo
411. o de prosseguir em sua utiliza o normal mas voc pode passar a op o force para dizer ao Subversion Eu sei o que estou fazendo bem como as poss veis consequ ncias disto ent o deixe me faz lo Esta op o seria o equivalente a fazer voc mesmo um reparo el trico com a energia ligada se voc n o souber o que est fazendo prov vel que tome um choque desagrad vel force log For a que um par metro suspeito passado para s op es message m ou file F seja aceito como v lido Por padr o o Subversion ir produzir um erro se os par metros destas op es parecerem com argumentos de destino do subcomando Por exemplo se voc passar um caminho de um arquivo versionado para a op o file F o Subversion ir assumir que voc cometeu um engano que caminho in formado pretendia ser o objeto alvo da opera o e que voc simplesmente esqueceu de informar algum outro arquivo n o versionado contendo sua mensagem de log Para confirmar sua inten o e sobrescrever esse tipo de erro passe a op o force log para os subcomandos que aceitam mensagens de log help h or Se usado com um ou mais subcomandos mostra o texto de ajuda preexistente para cada subcomando Se usado sozinho exibe o texto de ajuda geral para o cliente Sub version ignore ancestry Diz para o Subversion ignorar ancestrais diret rios acima ao determinar diferen as baseia se apenas em conte dos dos c
412. o ignore em linha de comando Para mais informa o sobre controle granularizado de itens ignorados veja ignorando Itens N o Versionados enable auto props Isto faz com que o Subversion defina propriedades automaticamente em novos arqui vos adicionados ou importados Seu valor padr o no altere o para yes para habili tar propriedades autom ticas A se o auto props deste arquivo especifica quais propriedades ser o definidas em quais arquivos log encoding Esta vari vel define a codifica o de caracteres padr o para mensagens de log de submiss es E uma vers o permanente da op o encoding veja Op es do svn O reposit rio Subversion armazena mensagens de log em UTF 8 e assume que suas mensagens de log sejam escritas usando a localiza o nativa do sistema operacional Voc deve especificar uma codifica o diferente se suas mensagens de commit forem escritas em um outro conjunto de caracteres use commit times Normalmente os arquivos de sua c pia de trabalho t m registros de tempo que refle tem o momento da ltima vez em que eles foram referenciados ou alterados por algum processo que pode ser seu pr prio editor ou mesmo algum subcomando do svn Isto geralmente conveniente para pessoas que desenvolvem software porque sistemas de compila o quase sempre verificam registros de tempo como uma forma de decidir quais arquivos precisam ser recompilados Em outras situa es por m algum
413. o na revis o 341 e o novo diret rio uma c pia de calc trunk Isso mostrado em Figura 4 3 Reposit rio com uma nova c pia Note que o segundo m todo entretanto faz um commit imediato em tempo constante 1 Este um procedimento mais f cil uma vez que voc n o precisa fazer o checkout de uma gran de parte do reposit rio Na verdade para usar esta t cnica voc n o precisa se quer ter uma c pia de trabalho Esta a maneira que a maioria dos usu rios criam ramos Figura 4 3 Reposit rio com uma nova c pia 1O Subversion n o suporta a c pia entre reposit rios distintos Quando usando URLs com os comandos svn copy ou svn move voc pode apenas copiar itens dentro de um mesmo reposit rio 79 Fundir e Ramificar C pias Leves O reposit rio do Subversion tem um design especial Quando voc copia um diret rio voc n o precisa se preocupar com o reposit rio ficando gigante O Subversion na realidade n o duplica dados Ao inv s disso ele cria uma nova entrada de diret rio que aponta para uma outra rvore de diret rio j existente Caso voc seja um usu rio Unix esse o mesmo conceito do hard link Enquanto as modifica es s o feitas em pastas e arquivos no diret rio copiado o Subversion continua aplicando esse conceito de hard link enquanto for poss vel Os dados somente ser o duplica dos quando for necess rio desambiguizar diferentes vers es de um objeto por is
414. o ou conflito Mas as coisas nem sempre s o assim t o simples e na verdade bastante comum que arquivos fonte sejam movidos de lugar entre libera es de software Isto dificulta o proces so de garantir que as nossas altera es ainda s o v lidas para a nova vers o do c digo e pode degradar rapidamente em uma situa o onde teremos de recriar manualmente as nossas customiza es na nova vers o Uma vez que o Subversion conhece a hist ria de um determinado arquivo fonte incluindo todas as suas localiza es anteriores o proces so de fus o da nova vers o da biblioteca bem simples Mas n s somos respons veis por dizer ao Subversion como a posi o do arquivo fonte mudou entre um pingo de forne cedor e outro svn load dirs pl Vendor drops that contain more than a few deletes additions and moves complicate the process of upgrading to each successive version of the third party data So Subversion supplies the svn load dirs pl script to assist with this process This script automates the importing steps we mentioned in the general vendor branch management procedure to ma ke sure that mistakes are minimized You will still be responsible for using the merge com mands to merge the new versions of the third party data into your main development branch but svn load dirs pl can help you more quickly and easily arrive at that stage In short svn_load_dirs pl is an enhancement to svn import that has several important character
415. o reposit rio Dando Suporte a M ltiplos M todos de Aces so ao Reposit rio Voc viu como um reposit rio pode ser acessado de diferentes maneiras Mas tamb m poss vel ou seguro que seu reposit rio seja acessado por meio de diferentes m todos ao mesmo tempo A resposta sim desde que voc seja um pouco previdente A qualquer momento estes processos podem demandar acesso de leitura e escrita ao seu reposit rio usu rios regulares do sistema usando um cliente Subversion como si pr prios para acessar o reposit rio diretamente por meio de URLs file usu rios regulares do sistema se conectando a processos svnserve particulares executando como si pr prios que acessam o reposit rio um processo svnserve seja um daemon ou disparado pelo inetd executando como um determinado usu rio em particular um processo Apache httpd executando como um usu rio em particular O problema mais comum que os administradores enfrentam diz respeito a propriedade e a permiss es do reposit rio Cada um dos processos ou usu rios da lista anterior tem di reito de ler e escrever nos arquivos Berkeley DB da base de dados Assumindo que voc esteja num sistema operacional Unix like uma abordagem simples poderia ser colocar ca da usu rio do reposit rio em potencial em um novo grupo svn e fazer com que o reposi t rio inteiro perten a a este grupo Mas isso ainda n o o suficiente porque um processo
416. o respectivo reposit rio do projeto Se voc possui m ltiplos projetos voc pode querer organiz los em grupos dentro do reposit rio talvez colocando projetos com objetivos semelhantes ou c digo compartilhado no mesmo subdiret rio ou talvez simplesmente agrup los alfabeticamente Tal organiza o poderia se parecer com o que segue utils calc trunk tags branches calendar trunk tags branches office spreadsheet trunk tags branches Organize seu reposit rio da forma que voc preferir O Subversion n o espera ou for a uma organiza o particular na sua vis o um diret rio um diret rio No final das contas voc deve escolher a organiza o de reposit rio que atende as necessidades das pesso as que trabalham nos projetos que ir o viver l Em nome da revela o completa no entanto n s iremos mencionar outra forma muito co mum de organiza o Nesse leiaute os diret rios trunk tags e branches residem no diret rio raiz do reposit rio e os projetos est o em subdiret rios abaixo deles como trunk calc calendar spreadsheet tags calc calendar spreadsheet branches calc calendar spreadsheet 110 Administra o do Reposit rio N o existe nada de incorreto nessa forma de organiza o mas ela pode ou n o parecer intuitiva para seus usu rios Especialmente em situa es de v rios e grandes projetos com muitos usu rios esses usu rios podem tende
417. o s o svnserve ir rodar res Consulte a RFC 2195 148 Configura o do Servidor trinja o acesso de leitura ao arquivo de usu rios conforme necess rio Definindo controles de acesso H ainda mais duas vari veis para definir no arquivo svnserve conf elas determinam o que os usu rios n o autenticados an nimos e os usu rios autenticados t m permiss o de fazer As vari veis anon access auth access podem ser definidas para os valo res none read OU write Atribuindo o valor none voc pro be tanto a leitura quanto a escrita com read voc permite acesso somente leitura ao reposit rio enquanto que wri te permite acesso completo de leitura escrita ao reposit rio Por exemplo general password db userfil realm example domain usu rios an nimos pode apenas ler o reposit rio anon access read usu rios autenticados podem tanto ler quanto escrever auth access writ De fato as configura es deste exemplo s o os valores padr o para as vari veis voc poderia esquecer de defin las Se voc quer ser ainda mais conservador voc pode blo quear o acesso an nimo completamente general password db userfil realm example realm usu rios an nimos n o s o permitidos anon access non usu rios autenticados podem tanto ler quanto escrever auth access writ O processo servidor n o entende apenas esta restri o no controle de acesso ao rep
418. o significa que existem uma grande margem para erro humano Usu rio v o acabar por compara duas rvores erradas crian do um delta que n o se aplica sem conflitos O comando svn merge vai fazer o melhor poss vel para aplicar o delta o m ximo poss vel mas em algumas partes isso pode ser im poss vel Assim como no comando Unix patch que as vezes reclama sobre failed hunks o svn merge vai reclamar sobre alvos perdidos svn merge r 1288 1351 http svn example com repos branch U foo e 87 Fundir e Ramificar U bar c Skipped missing target baz c U glub c C glorb h 5 O exemplo anterior pode ser um caso no qual o arquivo baz c existe nas duas imagens dos ramos que est o sendo comparados e o delta resultante quer modificar o conte do do arquivo mas o arquivo n o existe na c pia de trabalho Independente do caso a men sagem de skipped significa que o usu rio est muito provavelmente comparando rvo res incorretas esse o sinal cl ssico de erro do usu rio Quando isso acontece f cil re verter recursivamente as modifica es criadas pela fus o svn revert recursive delete qualquer arquivo n o versionado deixado pelo revert e rode novamente o comando svn merge usando outros argumentos Note tamb m que o exemplo anterior mostra um conflito no arquivo glorb h N s j mos tramos que a c pia local n o possui modifica es como um conflito p de acontecer No vamente uma v
419. o tem mudados FIXME Note the leading space UU Conteudo e propriedades mudados Arquivos e diret rios podem ser distinguidos como os caminhos dos diret rios sao mos trados com caracter E lt revision r R transaction t Exemplos Isto mostra a lista de todos os diret rios e arquivos mudados na revis o 39 em um diret rio de teste Note que a primeira mudan a um diret rio como evidenciado pela n lt q nlook changed r 39 usr local svn repos trunk vendors deli trunk vendors deli chips txt trunk vendors deli sandwich txt trunk vendors deli pickle txt trunk vendors baker bagel txt trunk vendors baker croissant txt trunk vendors baker pretzel txt trunk vendors baker baguette txt 0G Grrrrn Ga DO DO D OD O 286 Refer ncia Completa do Subversion Nome svnlook date Mostrar data hora Sinopse svnlook date REPOS PATH Descri o Mostrar data hora de uma revis o ou transa o em um reposit rio Op es revision r REV transaction t Exemplos Mostra a data da revis o 40 de um reposit rio de teste svnlook date r 40 tmp repos 2003 02 22 17 44 49 0600 Sat 22 Feb 2003 287 Refer ncia Completa do Subversion Nome svnlook diff Mostra diferen as de arquivos e propriedades que foram mudados Sinopse svnlook diff REPOS PATH Descri o Mostra no estilo GNU diferen asde arquivos
420. oad process That means if you have dump files for three repositories say calc dumpfile cal dumpfile and ss dumpfile you can first create a new repository to hold them all svnadmin create path to projects Then make new directories in the repository which will encapsulate the contents of each of the three previous repositories svn mkdir m Initial project roots file path to projects calc file path to projects calendar file path to projects spreadsheet Committed revision 1 Lastly load the individual dump files into their respective locations in the new repository svnadmin load path to projects parent dir calc lt calc dumpfile 129 Administra o do Reposit rio svnadmin load path to projects parent dir calendar lt cal dumpfile svnadmin load path to projects parent dir spreadsheet lt ss dumpfile We ll mention one final way to use the Subversion repository dump format conversion from a different storage mechanism or version control system altogether Because the dump file format is for the most part human readable it should be relatively easy to des cribe generic sets of changes each of which should be treated as a new revision using this file format In fact the cvs2svn utility see Convertendo um Reposit rio de CVS para Subversion uses the dump format to represent the contents of a CVS repository so that those contents can be copied into a Subversio
421. oc submeta a exclus o do arquivo foo c na revis o 101 e ent o adicione um novo arquivo com o mesmo nome na revis o 102 Neste caso foo c 99 e foo c 102 podem parecer estar relacionados afinal eles t m o mesmo caminho mas de fato eles s o objetos completamente diferentes no reposit rio Eles n o compartilham hist rico ou ancestralidade A raz o para abordar isto destacar uma importante diferen a entre svn diff e svn mer ge O primeiro comando ignora a ancestralidade enquanto que este ltimo bastante sens vel a ela Por exemplo se voc solicitar que o svn diff compare as revis es 99 e 102 do arquivo foo c voc deveria ver diferen as em termos de linhas do arquivo em cada revis o o comando diff cego ao comparar dois caminhos Mas se voc solicitar ao svn merge para comparar os mesmos dois objetos o subcomando deve perceber que es tes dois objetos n o est o relacionados e primeiro tentar excluir o arquivo antigo e ent o adicionar o arquivo novo a sa da deveria indicar uma exclus o seguida por uma adi o D foo c A foo c 88 Fundir e Ramificar A maioria das fus es envolve compara o de rvores ancestralmente relacionadas umas as outras e assim o svn merge por padr o possui este comportamento Ocasionalmente no entanto voc pode querer que o comando merge compare duas rvores n o relacio nadas Por exemplo voc pode ter importado duas rvores de c digo fonte representando
422. odas as modifica es locais se r o preservadas mas arquivos que n o estiverem sob controle de vers o n o ser o copi ados Nomes Alternativos Nenhum Altera Disco local Acessa o Reposit rio Apenas se exportando a partir de uma URL Op es revision r quiet q force username USER password PASS no auth cach RE non interactive non recursive config dir DIR native eol EOL N ignor xternals Exemplos Exporta a partir de sua c pia de trabalho n o exibe nenhum arquivo ou diret rio svn export a wc my export Export complete Exporta diretamente a partir do reposit rio exibe cada arquivo e diret rio 223 Refer ncia Completa do Subversion svn export file tmp repos my export A my export test A my export quiz Exported revision 15 Ao distribuir pacotes de seus reposit rio espec ficos para um determinado sistema opera cional pode ser til exportar uma rvore que use o marcador de fim de linha EOL espe c fico A op o native eol far isso mas ela afeta apenas os arquivos que tenham a propriedade svn eol style native anexada a si Por exemplo para exportar uma rvore com todas as termina es de linhas dadas do tipo CRLF possivelmente para distri bui o de arquivos zip para Windows svn export file tmp repos my export native eol CRLF A my export test A my export quiz Exported revisio
423. oes not rely on TRAIL URI When Wc PATH is not defined the current directory will be used as the working copy path TRAIL URL cannot be defined if wc_PATH is not explicitly given Op es Like svnserve svnversion has no subcommands it only has options no newline n Omit the usual trailing newline from the output committed c Use the last changed revisions rather than the current i e highest locally available revisions help h Print a help summary version Print the version of svnversion and exit with no error Exemplos If the working copy is all at the same revision for example immediately after an update then that revision is printed out S svnversion 4168 You can add TRAIL URL to make sure that the working copy is not switched from what you expect Note that the wc_PATH is required in this command svnversion repos svn trunk 4168 For a mixed revision working copy the range of revisions present is printed 306 Refer ncia Completa do Subversion S svnversion 4123 4168 If the working copy contains modifications a trailing M is added S svnversion 4168M If the working copy is switched a trailing S is added S svnversion 4168S Thus here is a mixed revision switched working copy containing some local modifications S svnversion 4212 4168MS If invoked on a directory that is not a working copy svnversion assumes it is an exported working copy and
424. ogante mas n s estamos apenas falando de algu m que tenha interesse no misterioso local por tr s das c pias de trabalho onde os dados de todos ficam 107 Administra o do Reposit rio dav Um diret rio onde ficam os arquivos usados pelo mod dav svn db Local onde s o armazenados todos os seus dados versionados format Um arquivo que cont m um simples inteiro que indica o n mero da vers o do reposit rio hooks Um diret rio cheio de modelos de scripts e scripts uma vez que voc tenha instalado algum locks Um diret rio para arquivos travados do Subversion usado para rastrear acessos ao reposit rio README txt Arquivo que meramente informa a seus leitores que eles est o olhando para um repo sit rio Subversion claro que quando acessado por meio das bibliotecas do Subversion esse estranho con junto de arquivos e diret rios de repente torna se uma implementa o de um sistema de arquivos virtual version vel e completo com gatilhos hook de eventos personaliz veis Este sistema de arquivos tem o seu pr prio entendimento sobre diret rios e arquivos mui to semelhante aos conceitos usados em sistemas de arquivos reais como NTFS FAT32 ext3 e assim por diante Mas este um sistema de arquivos especial ele controla os di ret rios e arquivos a partir das revis es mantendo todas as mudan as que voc fez neles armazenadas com seguran a e sempre acess veis E aqui onde todos os seus da
425. ograma de tunelamento Definir a vari vel de ambiente SVN SSH uma maneira conveniente de sobrescrever o t nel agente SSH padr o Mas se voc precisar fazer sobrescrita diversas vezes para diferentes servidores cada um tal vez contactando uma porta diferente ou passando diferentes conjuntos de op es para o SSH voc pode usar o mecanismo demonstrado neste exemplo Agora se formos definir a vari vel de ambiente JOESSH seu valor ir sobrescrever o valor inteiro da vari vel t nel JOESSH dever ser executado ao inv s de opt alternate ssh p 29934 Dicas de configura o do SSH N o poss vel apenas controlar a forma como o cliente invoca o ssh mas tamb m con trolar o comportamento do ssh em sua m quina servidora Nesta se o vamos mostrar como controlar exatamente o comando svnserve executado pelo sshd al m de como ter m ltiplos usu rios compartilhando uma nica conta no sistema Configura o inicial Para come ar localize o diret rio home da conta que voc vai usar para executar o svn serve Certifique se de que a conta tenha um par de chaves p blica privada instalado e que o usu rio consiga ter acesso ao sistema por meio de autentica o com chave p blica A autentica o por senha n o ir funcionar j que todas as seguintes dicas sobre SSH est o relacionadas com o uso do arquivo authorized keys do SSH Se ainda n o existir crie o arquivo authorized keys no Unix tipicamente em ssh au
426. oing it incorrectly can have serious ramifications so we need to employ over the top input validation and data verification mechanisms Perceba que n s n o informamos uma revis o operativa neste momento Isso se deve porque quando uma revis o operativa n o especificada o Subversion assume como pa dr o uma revis o operativa que a mesma da revis o marcadora Como voc pode ver a sa da da execu o de nosso comando parece estar correta O tex to ainda menciona frabbing naggily worts ent o isto certamente o arquivo que descreve o software agora chamado de Frabnaggilywort De fato podemos verificar isto usando a combina o de uma revis o marcadora e uma revis o operativa N s sabemos que em HEAD O projeto Frabnaggilywort est localizado no diret rio frabnaggilywort Ent o n s especificamos que queremos ver como a linha de hist rico identificada em HEAD como o caminho frabnaggilywort IDEA se parecia na revis o 1 svn cat r 1 frabnaggilywort IDEA HEAD The idea behind this project is to come up with a piece of software that can frab a naggily wort Frabbing naggily worts is tricky business and doing it incorrectly can have serious ramifications so we need to employ over the top input validation and data verification mechanisms 71 T picos Avan ados E as revis es marcadora e operativa nem precisam ser t o triviais Por exemplo digamos que frabnaggilywort esteja removido na rev
427. oint ante rior um local nos arquivos de log que se sabe n o estarem corrompidos e re executa as transa es at que os dados sejam restaurados para um estado utiliz vel Veja Managing Disk Space para saber mais sobre os arquivos de log do Berkeley DB Mas cada rosa tem seus espinhos e assim devemos destacar algumas conhecidas limita es do Berkeley DB Em primeiro lugar o ambiente do Berkeley DB n o port vel Voc n o pode simplesmente copiar um reposit rio do Subversion que foi criado em um sistema Unix para dentro de um sistema Windows e esperar que funcione Ainda que muito do for mato da base de dados do Berkeley DB seja independente de plataforma h alguns as pectos do ambiente que n o o s o Em segundo lugar o Subversion utiliza o Berkeley DB de forma que n o ir funcionar em sistemas Windows 95 98 se voc precisa hospedar um reposit rio em formato Berkeley DB em uma m quina Windows utilize o com sistemas Windows 2000 ou posteriores Ainda que o Berkeley DB prometa se comportar corretamente em compartilhamentos de rede que estejam de acordo com um conjunto de especifica es e a maioria dos tipos de sistemas de arquivos e aplica es atuais n o implementam essas tais especifica es 50 Berkeley DB precisa que o sistema de arquivos em quest o onde esteja o compartilhamento deve implemen tar estritamente a sem ntica POSIX de travamento e ainda mais importante a capacidade de mapear arquivos
428. ole de vers o copiar modificar fundir do Subversion ganha e perde sua utilidade em seus algoritmos de fus o de dados especificamente sobre qu o bem esses algoritmos executam ao tentar resolver conflitos causados por m ltiplos usu rios modifi cando o mesmo arquivo simultaneamente O pr prio Subversion oferece somente um al goritmo um algoritmo de diferencia o de tr s meios que inteligente o suficiente para manipular dados at uma granularidade de uma nica linha de texto O Subversion tam b m permite que voc complemente o processamento de fus o de conte do com utilitari os de diferencia o externos como descrito em Ferramentas diff3 Externas alguns dos quais podem fazer um trabalho ainda melhor talvez oferecendo granularidade em n vel de palavra ou em n vel de caractere de texto Mas o comum entre esses algoritmos que eles geralmente trabalham apenas sobre arquivos de texto O cen rio come a a parecer consideravelmente r gido quando voc come a a discursar sobre fus es de conte do em formatos de arquivo n o textual E quando voc n o pode encontrar uma ferramenta que possa manipular este tipo de fus o voc come a a verificar os problemas com o modelo copiar modificar fundir Vejamos um exemplo da vida real onde este modelo n o trabalha adequadamente Harry e Sally s o ambos desenhistas gr ficos trabalhando no mesmo projeto que faz parte do marketing paralelo para um autom vel mec nico O n cleo
429. olta para o cliente Quando o svnserve invocado por um t nel agente como este assegure se de que o usu rio autenticado tenha completo acesso de leitura e escrita aos arquivos da base de dados do reposit rio E essencialmente o mesmo que um usu rio local acessando o reposit rio por meio de URLs file Esta op o est descrita com mais detalhes em Tunelamento sobre SSH svnserve como um Servi o do Windows Se seu sistema Windows descendente dos Windows NT 2000 2003 XP Vista ent o voc pode executar o svnserve como um servi o padr o do Windows Esta tipicamente uma experi ncia mais proveitosa do que execut lo como um daemon independente com a op o daemon d Usar o modo daemon implica em executar um console digitar um comando e ent o deixar a janela do console executando indefinidamente Um servi o do Windows no entanto executa em segundo plano pode ser executado automaticamen te na inicializa o e pode se iniciado e parado atrav s da mesma interface de administra o como os outros servi os do Windows Voc vai precisar definir o novo servi o usando a ferramenta de linha de comando SC EXE Semelhantemente linha de configura o do inetd voc deve especificar a for 146 Configura o do Servidor ma exata de invoca o do svnserve para que o Windows o execute na inicializa o C gt sc create svn binpath C svn bin svnserve ex servic r C repos displayname
430. omando para especificar essas op es e us las para toda opera o que ele realizar o Subversion usa arquivos de configura o segregadas em uma rea de configu ra o do Subversion A rea de configura o do Subversion uma hierarquia de op es com nomes e seus va lores em dois n veis Normalmente isto resume se a um diret rio especial que cont m ar quivos de configura o 0 primeiro n vel os quais s o apenas arquivos de texto no forma to padr o INI com se es provendo o segundo n vel Estes arquivos podem ser facil mente editados usando seu editor de texto favorito como Emacs ou vi e cont m diretivas que s o lidas pelo cliente para determinar quais dos v rios comportamentos opcionais o usu rio prefere Estrutura da rea de Configura o A primeira vez que o cliente de linha de comando svn executado ele cria uma rea de configura o por usu rio Em sistemas Unix esta rea aparece como um diret rio chama do subversion no diret rio pessoal do usu rio Em sistemas Win32 o Subversion cria uma pasta chamada Subversion geralmente dentro da rea Application Data do diret rio do perfil do usu rio que por padr o normalmente um diret rio oculto No en tanto nesta plataforma o local exato difere de sistema para sistema e definido pelo Re gistro do Windows N s referiremos rea de configura o por usu rio usando seu no me em Unix subversion Al m da area de
431. omando svn status Vo c provavelmente vai usar mais o comando svn status do que qualquer outro comando do Subversion Usu rios CVS Segurem o Update Voc provavelmente costuma usar cvs update para ver que altera es voc fez em sua c pia de trabalho O svn status lhe dar toda a informa o de que voc precisa sobre o que mudou em sua c pia de trabalho sem acessar o reposit rio ou potenci almente incorporar novas altera es publicadas por outros usu rios No Subversion update faz apenas isso ele atualiza sua c pia de trabalho com quaisquer altera es registradas no reposit rio desde a ltima vez que voc atuali zou sua c pia de trabalho Voc deve quebrar o h bito de usar o comando update para ver que altera es locais voc fez Se voc executar svn status no topo de c pia de trabalho sem argumentos ele ir detec tar todas as altera es de arquivos e rvores que voc fez Abaixo est o uns poucos exemplos dos c digos mais comuns de estado que o svn status pode retornar Note que o texto ap s n o exibido pelo svn status RGO Neste formato de sa da svn status exibe seis colunas de caracteres seguidas de diver sos espa os em branco seguidos por um nome de arquivo ou diret rio A primeira coluna stuff loot bloo h arquivo agendado para adi o stuff loot lump c arquivo em conflito a partir de um update stuff fish c arquivo agendado para exclus o bar c
432. on HEAD A ltima ou mais recente revis o no reposit rio 38 T picos Avan ados BASE O n mero de revis o de um item em uma c pia de trabalho Se o item tiver sido modi ficado localmente a vers o BASE refere se forma como o item estaria sem estas modifica es locais COMMITTED A revis o mais recente anterior ou igual a BASE na qual o item foi modificado PREV A revis o imediatamente anterior ltima revis o na qual o item foi modificado Tecni camente isto se resume a COMMITTED 1 Como pode ser deduzido de suas descri es os termos de revis o PREV BASE COM MITTED s o usados apenas quando se referirem a um caminho numa c pia de traba lho eles n o se aplicam a URLs do reposit rio HEAD por outro lado pode ser usado em conjunto para qualquer um desses tipos de caminho Aqui est o alguns exemplos da utiliza o de termos de revis o S svn diff r PREV COMMITTED foo c exibe a ltima altera o submetida em foo c svn log r HEAD mostra a mensagem de log do ltimo registro no reposit rio S svn diff r HEAD compara sua c pia de trabalho com todas suas altera es locais com a ltima vers o na rvore do diret rio svn diff r BASE HEAD foo c compara a vers o inalterada de foo c com a ltima vers o de foo c no reposit rio svn log r BASE HEAD mostra todos os logs das submiss es para
433. on of our sample repository svnlook youngest tmp repos 42 svnsync svnsync is the Subversion remote repository mirroring tool Put simply it allows you to re play the revisions of one repository into another one In any mirroring scenario there are two repositories the source repository and the mirror or sink repository The source repository is the repository from which svnsync pulls re visions The mirror repository is the destination for the revisions pulled from the source re pository Each of the repositories may be local or remote they are only ever addressed by their URLs The svnsync process requires only read access to the source repository it never attempts to modify it But obviously svnsync requires both read and write access to the mirror repo sitory svnsync is very sensitive to changes made in the mirror repository that we ren t made as part of a mirroring operation To prevent this from happening it s best if the svnsync process is the only process permitted to modify the mirror repository svnsync Options config dir DIR Instructs Subversion to read configuration information from the specified directory ins tead of the default location subversion in the user s home directory no auth cach Prevents caching of authentication information e g username and password in the Subversion administrative directories non interactive In the case of an authentication failure or insuf
434. on para mais detalhes ou pe a ajuda ao comando svn help Por exemplo o comando svn merge precisa de uma c pia de trabalho com destino isto um local onde aplicar as modifica es Se um destino n o for especificado ele assume que voc est tentando uma dessas opera es 1 Voc quer fundir modifica es de diret rio no seu diret rio de trabalho atual 2 Voc quer fundir as modifica es de um arquivo em espec fico em outro arquivo de mesmo nome que existe no seu diret rio atual de trabalho Se voc esta fundindo um diret rio e n o especificou um destino svn merge assume o primeiro caso acima e tenta aplicar as modifica es no seu diret rio atual Se voc est fundindo um arquivo e este arquivo ou arquivo de mesmo nome existe no diret rio atual O svn merge assume o segundo caso e tenta aplicar as modifica es no arquivo local de mesmo nome Se voc quer que as modifica es seja aplicadas em outro local voc vai precisar avisar Por exemplo se voc est no diret rio pai de sua c pia de trabalho voc vai precisar es pecificar o diret rio de destino a receber as modifica es svn merge c 344 http svn example com repos calc trunk my calc branch U my calc branch integer c O conceito chave sobre fus o Agora voc viu um exemplo do comando svn merge e voc est prestes a ver v rios ou tros Se voc est se sentindo confuso sobre como a fus o funciona saiba que voc n o est s
435. onar aqui Nesse caso voc quer fazer uma foto exata da c pia de trabalho que voc organizou e armazenar no repo sit rio Felizmente svn copy na verdade tem quatro diferentes maneiras de ser usado voc pode ler sobre em Cap tulo 9 Refer ncia Completa do Subversion incluindo a ha bilidade de copiar uma rvore de c pia de trablho para o resposit rio ls my working copy svn copy my working copy http svn example com repos calc tags mytag Committed revision 352 Agora existe um novo diret rio no resposit rio calc tags mytag que uma foto exata da sua c pia de trabalho combinado revis es URLs e tudo mais Outros usu rios tem encontrado usos interessantes para esse recurso Algumas vezes existe situa es onde voc tem um monte de mudan as locais na sua c pia de trabalho e voc gostaria que um colega de trabalho as visse Ao inv s de usar svn diff e enviar o ar quivo patch que n o ir ter as informa es de mudan a na rvore de diret rios em sym link e mudan as nas propriedades voc pode usar svn copy para subir sua c pia local para uma rea privada no reposit rio Seu colega pode verificar o nome de c pia da sua c pia de trabalho ou usar svn merge para receber as exatas mudan as Sendo isso um m todo legal para subir uma r pida foto do seu trabalho local note que is so n o uma boa maneira de iniciar um ramo A cria o de um ramo deve ser um evento solit rio e esse m
436. onha que neste ponto Sally publique uma altera o no arquivo integer c criando a revis o 6 Se voc usar o comando svn update para atualizar a sua c pia de trabalho en t o ela ir parecer com isto calc Makefile 6 integer c 6 putton ce o A altera o de Sally no arquivo integer c ir aparecer em sua c pia de trabalho e a sua altera o no arquivo button c ainda estar presente Neste exemplo o texto do ar quivo Makefile id ntico nas revis es 4 5 e 6 mas o Subversion ir marcar a sua c pia do arquivo Makefile com a revis o 6 para indicar que a mesma a corrente Ent o depois de voc fazer uma atualiza o completa na sua c pia de trabalho ela geralmente corresponder exatamente a uma revis o do reposit rio Como as C pias de Trabalho Acompanham o Reposi t rio Para cada arquivo em um diret rio de trabalho o Subversion registra duas pe as de infor ma es essenciais na rea administrativa svn em qual revis o o seu arquivo local baseado isto chamado de revis o local do ar quivo e adatae a hora da ltima vez que a c pia local foi atualizada a partir do reposit rio Dadas estas informa es conversando com o reposit rio o Subversion pode dizer em qual dos seguintes quatro estados um arquivo local est N o Modificado e corrente O arquivo n o foi modificado no diret rio local e nenhuma altera o foi publicada no reposit rio desde a revis o corrente O coma
437. onnectivity De fato a Google fez algo similar a isto antes de lan ar o servi o Google Code para hospedagem de projetos eles anunciaram em meados de 2006 que os membros de sua equipe Open Source teriam escrito uma nova extens o propriet ria para o sistema de arquivos do Sub version que usaria seu banco de dados ultra escal vel Bigtable em seu armazenamento A API de sistema de arquivos exportada por libsvn fs cont m os tipos de funcionalidade que voc esperaria de qualquer outra API de sistema de arquivos voc pode criar e re mover arquivos e diret rios copiar e mov los modificar o conte do de arquivos e assim por diante Ela tamb m tem funcionalidades que n o s o t o comuns como a habilidade de adicionar modificar e remover metadados propriedades em cada arquivo ou diret rio Al m de tudo o Sistema de Arquivos Subversion um sistema de versionamento o que significa que assim que voc faz mudan as em sua rvore de diret rios o Subversion lembra como sua rvore estava quando essas mudan as ocorreram E as mudan as ante riores E as anteriores a essas E assim por diante todo o caminho de volta durante o tem po de versionamento at e no m ximo o primeiro momento em que voc iniciou a adi o de coisas ao sistema de arquivos Todas as modifica es que voc fez em sua rvore s o feitas dentro do contexto de uma transa o de submiss o do Subversion A seguir veremos uma rotina simplificada e
438. ook funciona via acesso direto ao reposit rio e por isso s pode ser usado em m quinas que tenham reposit rios ele se refere ao reposit rio por um caminho n o uma URL Se nenhuma revis o ou transa o for especificada o padr o do svnlook da revis o mais jovem mais recente do reposit rio Op es do svnlook Op es no svnlook s o globais assim como no svn e svnadmin entretanto a maioria das op es apenas se aplicam a um commando j que as funcionalidades do svnlook intencionalmente limitado ao escopo no diff deleted Previne o svnlook de mostrar as diferen as entre arquivos deletados O comporta mento padr o quando um arquivo deletado numa transa o revis o mostrar as mesmas diferen as que voc veria se tivesse deixado o arquivo mas apagado seu conteudo revision r Especifica uma revis o em particular que voc deseja examinar revprop Opera uma propriedade da revis o ao inv s da propriedade especificada para o arqui vo ou diret rio Essa op o exige que voc passe a revis o com a op o 282 Refer ncia Completa do Subversion revision r transaction t Especifica um ID de transa o particular que voc deseja examinar show ids Mostrar o ID da revisao do nodo do sistema de arquivos para cada caminho da arvore do sistema de arquivos Sub comandos do svnlook 283 Refer ncia Completa do Subversion Nome autor svnlook
439. ores as bibliotecas de que o Sub version depende apr apr util e neon s o distribu das em um pacote de fontes em sepa rado com o sufixo deps Estas bibliotecas no entanto s o bastante comuns hoje em dia e poss vel que j estejam instaladas em seu sistema Se n o voc precisar descom pactar o pacote de depend ncias no mesmo diret rio em que descompactou os fontes principais do Subversion Al m disso por m poss vel que voc queira obter outras de pend ncias opcionais tais como Berkeley DB e possivelmente o servidor Apache httpd Se voc quiser uma compila o completa certifique se de ter todos os pacotes relacionados no arquivo INSTALL Se voc uma daquelas pessoas que gosta de usar software ainda em desenvolvimento voc tamb m pode obter o c digo fonte do Subversion a partir do reposit rio Subversion onde ele se encontra Obviamente voc precisa j ter um cliente Subversion em m os pa ra fazer isso Mas uma vez que voc o fa a voc pode obter uma c pia de trabalho do re posit rio dos fontes do Subversion em http svn collab net repos svn trunk 320 Guia R pido de Introdu o ao Subversi on svn checkout http svn collab net repos svn trunk subversion A subversion HACKING A subversion INSTALL A subversion README A A subversion autogen sh subversion build conf O comando acima vai criar uma c pia de trabalho da ltima vers o ainda n o distribu da do c
440. os como aqueles oferecidos pela biblioteca APR para representar o hash de entradas e a lista de caminhos mas Python possui hashes chamados dicion rios e lis tas como tipos de dados embutidos e oferece uma rica cole o de fun es para operar nesses tipos Ent o a SWIG com a ajuda de algumas personaliza es na camada de v n culos de linguagem do Subversion toma o cuidado de mapear esses tipos de dados per sonalizados para os tipos de dados nativos da linguagem alvo Isto oferece uma interface mais intuitiva para os usu rios desta linguagem Os v nculos Python do Subversion podem ser usados para trabalhar com opera es de c pia tamb m Na se o anterior deste cap tulo mencionamos a interface libsvn client e como ela existe para o nico prop sito de simplificar o processo de escrever um cliente Subversion O Exemplo 8 3 Um Rastreador de Status em Python um breve exemplo de como esta biblioteca pode ser acessada por meio dos v nculos Python da SWIG para recriar uma vers o menos escalada do comando svn status Exemplo 8 3 Um Rastreador de Status em Python usr bin env python Rastrear um diret rio da c pia de trabalho imprimindo as informa es de sta import sys import os path import getopt import svn core svn client svn wc def generate status code status Traduz um valor de status para um c digo de status de um caractere usando a mesma l gica do cliente de linha de comando do
441. os como projetos Assim quando voc vir refer ncias a projetos ao longo deste livro tenha em mente que estamos apenas falando sobre algum dado diret rio ou conjunto de diret rios dentro do reposit rio Neste exemplo assumimos que que voc j tem algum tipo de projeto um conjunto de ar quivos de diret rios que voc quer importar para dentro de seu reposit rio Subversion re c m criado Comece organizando seus dados dentro de um nico diret rio chamado meu projeto ou qualquer outro nome de sua prefer ncia Por motivos que ficar o mais cla ros posteriormente veja Cap tulo 4 Fundir e Ramificar a estrutura da rvore de seu pro jeto deve conter tr s diret rios internos cnamados de branches tags e trunk O dire t rio trunk deve conter todos os seus dados enquanto que os diret rios branches e tags s o vazios tmp meuprojeto branches tmp meuprojeto tags tmp meuprojeto trunk foo c bar c Makefile Os subdiret rios branches tags trunk n o s o atualmente requeridos pelo subversi on S o meramente uma conven o que voc provavelmente tamb m vai querer seguir daqui para a frente Uma vez voc sua rvore de dados esteja pronta importe os dados para dentro do reposi t rio com o comando svn import veja Colocando dados em seu Reposit rio svn import tmp meuprojeto file caminho do repositorio meuprojeto m impo Adding tmp meuprojeto branches Adding tmp meuprojeto tags
442. os para oferecer um n mero crescente de funcionalida des e op es de configura o Camada de Acesso ao Reposit rio Se a Camada de Reposit rio do Subversion est no outro extremo da linha a Camada de Acesso ao Reposit rio RA a pr pria linha Encarregado de guiar dados entre as bi bliotecas clientes e o reposit rio esta camada inclui a biblioteca libsvn ra m dulo carre gador os pr prios m dulos RA que normalmente incluem libsvn ra dav libsvn ra local lbsvn ra serf e libsvn ra svn e qualquer biblioteca adicional necess ria para um ou mais desses m dulos RA assim como o m dulo Apache mod dav svn ou o servidor de lbsvn ra svn svnserv J que Subversion usa URLs para identificar suas fontes de reposit rio a parte protocolo do esquema URL normalmente file http https svn OU OU svn ssh usada para determinar qual m dulo RA manipular as comunica es Ca da m dulo registra uma lista dos protocolos que sabem como conversar para que o car regador de RA possa em tempo de execu o determinar qual m dulo usar para realizar a tarefa Voc pode descobrir quais m dulos RA est o dispon veis ao cliente de linha de comando do Subversion e que protocolos eles suportam executando svn version svn version svn version 1 4 3 r23084 compiled Jan 18 2007 07 47 40 Copyright C 2000 2006 CollabNet Subversion is open source software see http subversion tigris org This
443. os que n o s o versiona dos e nem pretendem ser Editores de texto deixam diret rios com arquivos de backup Compiladores de software produzem arquivos intermedi rios ou mesmo definitivos que voc normalmente n o faria controle de vers o E os pr prios usu rios deixam v rios ou tros arquivos e diret rios sempre que acharem adequado muitas vezes em c pias de tra balho com controle de vers o rid culo esperar que c pias de trabalho do Subversion sejam de algum modo impenetr veis a este tipo de res duo e impureza De fato o Subversion os considera como um recur so que suas c pias de trabalho est o apenas com diret rios normais como rvores n o versionadas Mas estes arquivos e diret rios que n o deveriam ser versionados podem causar algum inc modo aos usu rios do Subversion Por exemplo pelo fato dos coman dos svn add e svn import agirem recursivamente por padr o e n o saberem quais arqui vos em uma dada rvore voc deseja ou n o versionar acidentalmente f cil adicionar coisas ao controle de vers o que voc n o pretendia E pelo fato do comando svn status reportar por padr o cada item de interesse em uma c pia de trabalho incluindo arqui vos e diret rios n o versionados sua sa da pode ficar muito polu da onde grande n me ro destas coisas aparecem Portanto o Subversion oferece dois meios para dizer quais arquivos voc preferiria que ele simplesmente desconsiderasse Um dos meios
444. os s o os nomes das op es dentro de cada se o O valor de cada op o descreve o n vel de acesso dos usu rios naquele caminho do reposit rio seja r somente leitura ou rw leitura escrita Se o usu rio n o for mencionado de forma nenhuma nenhum acesso ser permitido Para ser mais espec fico o valor dos nomes das se es ou s o da forma repos name path ou da forma path Se voc est usando a diretiva SVNParent Path ent o importante especificar os nomes dos reposit rios em suas se es Se voc omit los ent o uma se o como algum dir ir corresponder ao caminho algum dir em cada reposit rio Se voc est usando a diretiva SVNPath por m ent o n o h problema em definir apenas os caminhos em suas se es afinal de contas ha apenas um reposit rio calc branches calc bug 142 harry rw sally r Neste primeiro o usu rio harry tem completo acesso de leitura e escrita ao diret rio branches calc bug 142 no reposit rio calc mas o usu rio sally tem acesso so mente leitura Quaisquer outros usu rios t m seu acesso a este reposit rio bloqueado claro que as permiss es s o herdadas de um diret rio para um filho Isto quer dizer que podemos especificar um subdiret rio com uma pol tica de acesso diferente para Sally calc branches calc bug 142 harry rw sally r d a sally acesso de escrita apenas no subdiret rio testing calc branches calc bug 142 testing s
445. os sabores de Unix Win32 BeOS OS 2 e Mac OS X Al m de oferecer implementa es consistentes de chamadas de sistemas que diferem en tre os sistemas operacionais a APR d ao Subversion acesso imediato a v rios tipos de dado personalizados como matrizes din micas e tabelas hash O Subversion usa estes ti pos extensivamente Mas talvez o mais difundido tipo de dado da APR encontrado em quase todo prot tipo da API do Subversion seja o apr pool t o recipiente de mem ria da APR O Subversion usa recipientes internamente para todas as suas necessidades de aloca o de mem ria a menos que uma biblioteca externa requeira um mecanismo de gerenciamento de mem ria diferente para que dados passem atrav s de sua API 4 e en quanto uma pessoa codifica com as APIs do Subversion n o necess rio fazer o mesmo eles s o requeridos para fornecer recipientes para as fun es da API que precisam deles Isto significa que usu rios da API do Subversion devem tamb m vincular APR devem chamar apr initialize para inicializar o subsistema da APR e ent o devem criar e gerenciar os recipientes para usar com as chamadas da API do Subversion normalmente pelo uso de svn pool create svn pool clear esvn pool destroy Programando com Recipientes de Mem ria Quase todo desenvolvedor que usou a linguagem de programa o C teve em algum ponto suspirou fundo ao enfrentar a assustadora tarefa de gerenciar o uso de mem ria Alocar m
446. osi t rio mas tamb m restri es de acesso mais granularizadas definidas para arquivos ou diret rios espec ficos dentro do reposit rio Para usar este recurso voc precisa criar um arquivo contendo regras mais detalhadas e ent o definir o valor da vari vel authz db para o caminho que o aponte general password db userfil realm example realm Regras de acesso para locais especificos authz db authzfile A sintaxe do arquivo authzfile discutida em mais detalhes em Autoriza o Baseada em Caminhos Atente que a vari vel authz dab n o mutuamente exclusiva com as vari veis anon access auth access se todas elas estiverem definidas ao mesmo tem po ent o todas as regras devem ser satisfeitas antes que o acesso seja permitido Tunelamento sobre SSH A autentica o interna do svnserve pode ser bastante til pois evita a necessidade de se criar contas reais no sistema Por outro lado alguns administradores j possuem frame works de autentica o com SSH bem estabelecidos em funcionamento Nestas situa es todos os usu rios do projeto devem j ter contas no sistema e a possibilidade dar um 149 Configura o do Servidor SSH para acessar a m quina servidora f cil usar o SSH juntamente com o svnserve O cliente simplesmente usa o esquema svn ssh na URL para conectar S whoami harry svn list svn ssh host example com repos project harry host example com s
447. ou especificado acesso leitura escrita pass vel de ser dado apenas ao reposit rio como um todo por caminho por caminho Criptografia atrav s de SSL opci nenhuma t nel SSH onal Registro de log logs completos do sem log sem log Apache para cada re quisi o HTTP com opcional log alto n vel para opera es do cliente em geral Interoperabilidade parcialmente us vel por outros clientes WebDAV se comunica apenas com clientes svn se comunica apenas com clientes svn Visualiza o pelajsuporte existente li apenas por meio dejapenas por meio de web mitado ou tamb m ferramentas de ter ferramentas de ter por meio de ferra ceiros como o Vi ceiros como o Vi mentas de terceiros jewVC ewVC como o ViewVC Velocidade um pouco mais lento um pouco mais r pi um pouco mais r pi do do Configura o inicial um tanto complexa extremamente sim ples moderadamente sim ples Ent o que servidor voc deve usar Qual melhor Escolhendo uma Configura o de Servidor Obviamente n o h uma resposta definitiva para esta pergunta Cada equipe tem diferen tes necessidades e os diferentes servidores todos representam diferentes conjuntos de caracter sticas O projeto Subversion em si n o endossa um ou outro servidor nem mes mo considera um servidor mais oficial que outro Aqui est o algumas raz es pelas quais voc deveria escolher uma configura
448. ould do two things First move your broken repository directory aside perhaps by renaming it to something like repos BROKEN and then restore your latest backup of it Then send an email to the Subversion user list at lt users subversion tigris org gt describing your problem in detail Data integrity is an extremely high priority to the Subver sion developers Migrating Repository Data Elsewhere A Subversion filesystem has its data spread throughout files in the repository in a fashion generally understood by and of interest to only the Subversion developers themselves However circumstances may arise that call for all or some subset of that data to be copi ed or moved into another repository Subversion provides such functionality by way of repository dump streams A repository dump stream often referred to as a dumpfile when stored as a file on disk is a portable flat file format that describes the various revisions in your repository what was changed by whom when and so on This dump stream is the primary mechanism used to marshal versioned history in whole or in part with or without modification between repositories And Subversion provides the tools necessary for creating and loading these dump stre ams the svnadmin dump and svnadmin load subcommands respectively E g hard drive huge electromagnet disaster 126 Administra o do Reposit rio ons and a familiar structure it resembl
449. ously such a mirror is not use ful as a backup solution As far as user interaction with repositories and mirrors goes it is possible to have a single working copy that interacts with both but you ll have to jump through some hoops to make it happen First you need to ensure that both the primary and mirror repositories have the same repository UUID which is not the case by default You can set the mirror reposi tory s UUID by loading a dump file stub into it which contains the UUID of the primary repo sitory like so cat lt lt EOF svnadmin load force uuid dest SVN fs dump format version 2 UUID 65390229 12b7 0310 b90b f21la5aa7ec8e EOF Now that the two repositories have the same UUID you can use svn switch relocate to point your working copy to whichever of the repositories you wish to operate against a pro cess which is described in svn switch There is a possible danger here though in that if the primary and mirror repositories aren t in close synchronization a working copy up to date with and pointing to the primary repository will if relocated to point to an out of date mirror become confused about the apparent sudden loss of revisions it fully ex pects to be present and throws errors to that effect If this occurs you can relocate your working copy back to the primary repository and then either wait until the mirror repository is up to date or backdate your working copy to a revision you kno
450. out revision 340 Agora para fazer uma c pia basta passar dois caminhos de c pia de trabalho ao comando svn copy cd bigwc svn copy trunk branches my calc branch svn status A branches my calc branch Neste caso o comando svn copy faz uma c pia recursiva do diret rio t runk para um no vo diret rio de trabalho branches my calc branch Como voc pode ver pelo coman do svn status o novo diret rio est agendado para ser adicionado ao reposit rio Note tamb m o sinal pr ximo letra A Isso indica o item adicionado uma c pia de algo e n o um item novo Quando voc realizar o Commit das modifica es o Subversion vai cri ar o diret rio calc branches my calc branch no reposit rio copiando 78 Fundir e Ramificar calc trunk ao inv s de reenviar todos os dados da c pia de trabalho pela rede svn commit m Criando um ramo do diret rio calc trunk Adding branches my calc branch Committed revision 341 E aqui est o m todo mais f cil de criar um ramo o qual n s dever amos ter lhe mostrado desde o in cio o comando svn copy capaz de copiar diretamente duas URLs svn copy http svn example com repos calc trunk http svn example com repos calc branches my calc branch m Criando um ramo do diret rio calc trunk Committed revision 341 Do ponto de vista do diret rio n o h diferen a entre estes dois m todos Ambos os pro cessos criam um novo diret ri
451. owed by a newline 4 The log message itself followed by a newline This output is human readable meaning items like the datestamp are displayed using a textual representation instead of something more obscure such as the number of nanose conds since the Tasty Freeze guy drove by But the output is also machine parsa ble because the log message can contain multiple lines and be unbounded in length svnlook provides the length of that message before the message itself This allows scripts and other wrappers around this command to make intelligent decisions about the log mes sage such as how much memory to allocate for the message or at least how many bytes to skip in the event that this output is not the last bit of data in the stream svnlook can perform a variety of other queries displaying subsets of bits of information we ve mentioned previously recursively listing versioned directory trees reporting which paths were modified in a given revision or transaction showing textual and property diffe rences made to files and directories and so on See svnlook for a full reference of svnlo ok s features svndumpfilter While it won t be the most commonly used tool at the administrator s disposal syndumpfil ter provides a very particular brand of useful functionality the ability to quickly and easily modify streams of Subversion repository history data by acting as a path based filter The syntax of svndumpfilter is as foll
452. ows svndumpfilter help general usage svndumpfilter SUBCOMMAND ARGS amp OPTIONS Type svndumpfilter help lt subcommand gt for help on a specific subcommand Type svndumpfilter version to see the program version Available subcommands exclude include help h 120 Administra o do Reposit rio There are only two interesting subcommands They allow you to make the choice between explicit or implicit inclusion of paths in the stream exclude Filter out a set of paths from the dump data stream include Allow only the requested set of paths to pass through the dump data stream You can learn more about these subcommands and svndumpfilter s unique purpose in Filtering Repository History svnsync The svnsync program which is new to the 1 4 release of Subversion provides all the functionality required for maintaining a read only mirror of a Subversion repository The program really has one job to transfer one repository s versioned history into another re pository And while there are few ways to do that its primary strength is that it can operate remotely the source and sink i repositories may be on different computers from each other and from svnsync itself As you might expect svnsync has a syntax that looks very much like every other program we ve mentioned in this chapter svnsync help general usage svnsync SUBCOMMAND DEST URL ARGS amp OPTIONS Type svnsync
453. ozinho V rios usu rios especial os novos em controle de vers o ficam perplexos com a sintaxe do comando e sobre como e quando deve ser usado Mas n o temas esse comando muito mais simples do que voc imagina Existe uma t cnica muito simples pa ra entender exatamente o comportamento do comando svn merge O principal motivo de confus o o nome do comando O termo fundir de alguma forma denota que se junta ramos ou que existe uma mistura misteriosa de c digo ocorrendo Este n o o caso O nome mais apropriado para o comando deveria ter sido svn diff and apply porque isso o que acontece duas rvores de reposit rio s o comparadas e a diferen a aplicada a uma c pia de trabalho O comando recebe tr s argumentos 1 Uma rvore de reposit rio inicial geralmente chamada de lado esquerdo da compara o 2 Uma rvore de reposit rio final geralmente chamada de lado direito da compara o 3 Uma c pia de trabalho para receber as diferen as como modifica o local geralmente chamada de destino da fus o 85 Fundir e Ramificar Uma vez especificados estes tr s argumentos as duas rvores s o comparadas e o re sultado das diferen as s o aplicadas sobre a c pia de trabalho de destino como modifica es locais Uma vez executado o comando o resultado n o diferente do que se voc ti vesse editado manualmente os arquivos ou rodados v rios comandos svn add ou svn delete
454. p o revision ao svn export svn export http svn example com svn reposl Exports latest revision svn export http svn example com svn reposl r 1729 Exports revision r1729 As Vezes Voc S Precisa Limpar Quando o Subversion modifica sua c pia de trabalho ou qualquer informa o dentro de svn ele tenta fazer isso da forma mais segura poss vel Antes de modificar a c pia de trabalho o Subversion escreve suas pretens es em um arquivo de log Depois ele execu ta os comandos no arquivo de log para aplicar a altera o requisitada mantendo uma tra va na parte relevante da c pia de trabalho enquanto trabalha para evitar que outros cli entes Subversion acessem a c pia de trabalho nesse meio tempo Por fim o Subversion remove o arquivo de log Arquiteturalmente isto similar a um sistema de arquivos com viu N s dissemos que o Subversion era uma m quina do tempo 36 Uso B sico journaling Se uma opera o do Subversion interrompida se o processo for morto ou se a m quina travar por exemplo o arquivo de log permanece no disco Executando nova mente os arquivos de log o Subversion pode completar a opera o previamente iniciadas e sua c pia de trabalho pode manter se de novo em um estado consistente E isto exatamente o que o svn cleanup faz varre sua c pia de trabalho e executa quaisquer arquivos de log que tenham ficado removendo as travas da c pia de trabalho durante o
455. padas com descri es textuais sobre como os valores para as chaves afetam o comportamento do Subversion Para mu dar um certo comportamento voc apenas precisa carregar o arquivo de configura o apropriado em um editor de texto e modificar o valor da op o desejada Se a qualquer momento voc desejar ter as defini es da configura o padr o restauradas voc pode simplesmente remover ou renomear seu diret rio de configura o e ent o executar al gum comando svn inofensivo como o svn version Um novo diret rio de configura o com o conte do padr o ser criado A rea de configura o por usu rio tamb m cont m uma cache dos dados de autentica o O diret rio auth possui um conjunto de subdiret rios que cont m peda os das infor ma es armazenadas e usadas pelos v rios m todos de autentica o suportados pelo Subversion Este diret rio criado de tal forma que somente o pr prio usu rio possui per miss o para ler seu conte do Configura o e o Registro do Windows Al m da usual rea de configura o baseada em arquivos INI clientes Subversion que executam sob plataformas Windows podem tamb m podem usar o registro do Windows para armazenar dados de configura o Os nomes das op es e seus valores s o os mesmos que os dos arquivos INI A hierarquia arquivo se o tamb m preservada ain da que abordada de maneira ligeiramente diferente neste esquema arquivos s o ap
456. pass veis de paralelamento n o ruim E neste cen rio que a implemen ta o do Subversion do modelo travar modificar destravar ganha maior destaque Este o momento que falamos sobre a caracter stica de travamento do Subversion a qual simi lar aos mecanismos de obter c pias reservadas de outros sistemas de controle de ver s o A funcionalidade de travamento do Subversion serve dois prop sitos principais Serializar o acesso a um objeto versionado Ao permitir que um usu rio requeira progra maticamente o direito exclusivo de modificar um arquivo no reposit rio este usu rio po de estar razoavelmente seguro de que os esfor os investidos nas mudan as n o mescl veis n o ser o desperdi ados a submiss o de suas altera es ser bem suce dida Ajudar a comunica o Ao alertar outros usu rios que a serializa o est em vigor para um determinado objeto versionado estes outros usu rios podem razoavelmente esperar que o objeto est prestes de ser modificado por outra pessoa e eles tamb m podem evitar o desperd cio de seu tempo e energia em mudan as n o mescl veis que n o se r o submetidas adequadamente e ocasionando poss vel perda de dados Quando nos referimos funcionalidade de travamento do Subversion estaremos tamb m falando sobre uma cole o de gomportamentos bastante diversificada que incluem a ca pacidade de travar um arquivo versionado requerendo o direito exclusivo de modifi
457. password PASS no auth cach non interactive config dir DIR Exemplos Compara BASE e sua Copia de trabalho um dos usos mais comuns do svn diff S svn diff COMMITTERS Index COMMITTERS E COMMITTERS revision 4404 COMMITTERS working copy Ver o que mudou no arquivo COMMITTERS na revis o 9115 svn diff c 9115 COMMITTERS Index COMMITTERS COMMITTERS revision 3900 COMMITTERS working copy Verificar como as modifica es em sua c pia de trabalho se comparam com rela o a re vis es mais antigas svn diff r 3900 COMMITTERS T 221 Refer ncia Completa do Subversion Index COMMITTERS COMMITTERS revision 3900 COMMITTERS working copy Comparar a revis o 3000 com a revis o 3500 usando a sintaxe de O svn diff http svn collab net repos svn trunk COMMITTERS 3000 http svn col Index COMMITTERS COMMITTERS revision 3000 COMMITTERS revision 3500 Compara a revis o 3000 com a revis o 3500 usando a nota o de intervalo voc passa apenas uma URL neste caso svn diff r 3000 3500 http svn collab net repos svn trunk COMMITT Index COMMITTERS GI RS COMMITTERS revision 3000 COMMITTERS revision 3500 E Compara a revis o 3000 com a revis o 3500 de todos os arquivos em trunk usando a nota o
458. pe Isto quer dizer por exemplo que mesmo que se voc tiver a ferramenta ou plugin de diferencia o ou fus o do Microsoft Word mais esperta do universo ela nunca deveria ser invocada pelo Subversion se seus documentos do Word sob controle de vers o possu rem um tipo MIME configurado que denote que eles n o s o leg veis por humanos tal como application msword Para mais informa es sobre configura es de tipos MIME veja Tipo de Conte do do Arquivo Ferramentas diff Externas 3Os desenvolvedores do Subversion s o muito bons mas at os melhores s vezes comentem erros 181 Customizando sua Experi ncia com Subversion O Subversion chama programas de diferencia o externos com os par metros que s o adequados para o utilit rio GNU diff e espera apenas que o programa externo retorne pa ra O sistema com um c digo indicando sucesso Para a maioria dos programas diff alterna tivos apenas o sexto e s timo argumentos os caminhos dos arquivos que representam os lados esquerdo e direito do diff respectivamente s o relevantes Note que o Subver sion executa o programa diff uma vez para os arquivos modificados abordados por uma opera o do Subversion ent o se seu programa executa de maneira ass ncrona ou em segundo plano voc pode ter diversas inst ncias todas executando simultaneamente E finalmente o Subversion espera que seu programa retorne um c digo de erro igual a 1 se seu programa
459. pecifique a revis o cujas propriedades voc quer modificar Como as revis es s o globais voc n o precisa especificar um cami nho para para estes comandos relacionados a propriedades enquanto estiver em uma c pia de trabalho do reposit rio cuja propriedade de revis o voc queira alterar Por outro la do voc pode apenas especificar a URL de qualquer caminho de seu interesse no reposi t rio incluindo a URL raiz do reposit rio Por exemplo voc pode querer trocar a mensa gem de log de um registro de altera o de uma revis o existente Se seu diret rio atual for parte da c pia de trabalho de seu reposit rio voc pode simplesmente executar o co mando svn propset sem nenhum caminho svn propset svn log button c Fix a compiler warning r11 revprop property svn log set on repository revision 11 Mas mesmo que voc n o tenha criado uma c pia de trabalho a partir do reposit rio voc ainda assim pode proceder com modifica o de propriedades informando a URL raiz do reposit rio svn propset svn log button c Fix a compiler warning r11 revprop http svn example com repos project property svn log set on repository revision 11 Perceba que a permissao para se alterar estas propriedades nao versionadas deve ser explicitamente concedida pelo administrador do reposit rio veja Commit Log Message Correction Isto porque as propriedades n o s o versionadas ent o voc corre o ris
460. pelo software que entende o formato PNG e pode tornar a informa o neste formato como uma imagem desenhada por linhas Infelizmente algumas destas extens es t m seus significados modificados ao longo do tempo Quando os computadores pessoais apareceram pela primeira vez um ar quivo chamado README DOC certamente era um arquivo de texto simples como s o hoje os arquivos txt Por m no meio dos anos de 1990 voc poderia apostar que um arquivo com este nome n o seria mais um arquivo de texto simples mas sim um documento do Microsoft Word em um formato propriet rio e humanamente ileg vel Mas esta mudan a n o ocorreu da noite para o dia houve certamente um per odo de confus o para os usu rio de computador sobre o que exatamente eles tinham em m os quando viam um arquivo DOC A popularidade das redes de computadores lan ou ainda mais d vidas sobre o ma peamento entre um nome de arquivo e seu conte do Com informa es sendo servi das atrav s das redes e geradas dinamicamente por scripts no servidor frequente mente observava se arquivos n o reais e portanto sem nome Os servidores Web por exemplo precisavam de algum outro modo para dizer aos navegadores que eles estavam baixando um arquivo assim o navegador poderia fazer algo inteligente com esta informa o quer seja para exibir os dados usando um programa registrado para lidar com este tipo de dados quer seja para solicitar ao usu rio onde armazen
461. perar pelo lan amento de uma pr xima vers o aqui que o controle de vers o pode ajudar O procedimento t pico se parece com isto Desenvolvedores submetem todo o novo c digo produzido para o tronco As modifica es do dia a dia s o submetidas para trunk novos recursos corre es de bugs e por a adiante O tronco copiado para um ramo de release Quando a equipe achar que o software est pronto para o lan amento de um novo release digamos uma vers o 1 0 ent o o trunk pode ser copiado para branches 1 0 As equipes continuam a trabalhar em paralelo Uma equipe come a uma rigorosa etapa de testes no ramo do release enquanto outra equipe continua prosseguindo com o tra balho digamos para uma futura vers o 2 0 em trunk Se bugs forem descobertos em algum local corre es s o portadas adequadamente conforme o necess rio Em al gum ponto por m mesmo esse processo p ra O ramo ent o congelado para testes finais imediatamente antes do lan amento do release O ramo rotulado e distribu do Quando os testes tiverem terminado o conte do de branches 1 0 copiado para tags 1 0 0 como um registro instant neo de refe r ncia O r tulo empacotado e distribu do para os clientes O ramo mantido ao longo do tempo Como o trabalho continua em trunk para uma vers o 2 0 as corre es de bugs continuam a ser portadas de trunk para branches 1 0 Quando uma suficiente
462. pias intactas n o alteradas de arquivos da c pia de trabalho A estrutura e o conte do da rea de administra o da c pia de trabalho do Subversion s o considerados detalhes de implementa o realmente n o planejados para consumo humano Os desenvolvedores s o encorajados a usar as APIs p blicas do Subversion ou as ferramentas oferecidas pelo Subversion para acessar e manipular os dados da c pia de trabalho em vez de ler ou modificar esses arquivos diretamente Os formatos de arqui vo empregados pela biblioteca de c pia local para seus dados administrativos mudam de tempos em tempos um fato em que as APIs p blicas fazem um bom trabalho ao escon der do usu rio comum Nesta se o vamos expor alguns destes detalhes de implementa o para satisfazer sua imensa curiosidade Os Arquivos de Entrada Talvez o mais importante arquivo no diret rio svn seja o arquivo entries Ele cont m a maior parte das informa es administrativas sobre os tens versionados em um diret rio da c pia de trabalho E este nico arquivo que registra as URLs do reposit rio revis o inalterada checksum dos arquivos textos inalterados e timestamp das propriedades in forma es de agendamento e conflitos ltimas informa es conhecida de submiss o autor revis o timestamp hist rico da c pia local praticamente tudo que um cliente Subversion tem interesse em saber sobre um recurso versionado ou a ser versionado Pessoas famili
463. plesmente porque estes nomes de arquivo coincidem com um filtro de ignora o o Subversion sem pre avisa quais objetos foram versionados Filtros de Rejei o para Usu rios CVS A propriedade svn ignore do Subversion muito similar em sintaxe e fun o ao arquivo cvsignore do CVS De fato se voc est migrando de uma c pia de tra balho CVS para Subversion voc pode migrar os filtros de rejei o diretamente pe lo uso do arquivo cvsignore como arquivo de entrada para o comando svn prop set svn propset svn ignore F cvsignore property svn ignore set on Existem entretanto algumas diferen as nos meios que CVS e Subversion manipu lam filtros de rejei o Os dois sistemas usam os filtros de rejei o em tempos um pouco diferentes e existem ligeiras discrep ncias na aplica o dos filtros de rejei o Al m disso o Subversion n o reconhece o uso do filtro como uma redefini o que torna os filtros seguintes como n o ignorados A lista global de filtros de rejei o tende ser mais uma quest o de gosto pessoal e vincu lada mais estreitamente a uma s rie de ferramentas espec ficas do usu rio do que aos de talhes de qualquer c pia de trabalho particular necessita Assim o resto desta se o foca r na propriedade svn ignore e seus usos Digamos que voc tenha a seguinte sa da do svn status S svn status calc M calc button c calc calculator calc data c calc debug log
464. plo 7 5 diff8wrap bat s o modelos para scripts en capsuladores para ferramentas de fus o de texto externas em formato de arquivos shell Bourne e batch do Windows respectivamente Exemplo 7 4 diff3wrap sh bin sh Configura seu programa diff3 preferido aqui DIFF3 usr local bin my merge tool O Subversion disp e dos caminhos que precisamos como o nono d cimo e d cimo primeiro par metros MINE S 9 OLDE YOURS S 11 Chama o comando de fus o de texto modifique a linha a seguir de acordo com seu programa SDIFF3 older SOLDER mine SMINE yours SYOURS Depois de executar a fus o de texto este script precisa imprimir o conte do do arquivo resultante para stdout Voc pode fazer isso da forma que achar melhor Retorna um c digo de erro de 0 no caso de uma fus o de sucesso 1 se conflitos n o resolvidos ainda permanecerem no arquivo resultante Qualquer outro c digo de erro ser tratado como fatal Exemplo 7 5 diff3wrap bat ECHO OFF REM Configura seu programa diff3 preferido aqui SET DIFF3 C Program Files Funky Stuff My Merge Tool exe EM O Subversion disp e dos caminhos que precisamos como o nono d cimo e EM d cimo primeiro par metros Mas s temos acesso a nove par metros de EM cada vez ent o deslocamos nosso nove par metros duas vezes para que AD 183 Customizando sua Experi ncia com Subversion We DDH DADAS DA ANNAN J
465. pode remover os arquivos tempor rios voc mesmo mas voc vai realmente querer fazer isso quando o Subversion pode fazer por voc N s achamos que n o 28 Uso B sico Sauerkraut Grilled Chicken gt gt gt gt gt gt gt r2 Creole Mustard Bottom piece of bread As strings de sinais de menor sinais de igual e sinais de maior s o marca es de conflito e n o fazem parte atualmente dos dados em conflito Voc geralmente quer garantir que estes sinais sejam removidos do arquivo antes de seu pr ximo commit O texto entre os dois primeiros conjuntos de marca es composto pelas altera es que voc fez na rea do conflito lt lt lt lt lt lt lt mine Salami Mortadella Prosciutto O texto entre o segundo e terceiro conjuntos de marca es de conflito o texto das altera es submetidas por Sally Sauerkraut Grilled Chicken gt gt gt gt gt gt gt r2 Normalmente voc n o vai querer apenas remover as marca es e as altera es de Sally ela ficaria terrivelmente surpresa quando o sandu che chegar e n o for o que ela queria Ent o este o momento em que voc pega o telefone ou atravessa o escrit rio e explica para Sally o que voc n o gosta de sauerkraut como iguaria italiana Uma vez que voc s tenham chegado a um acordo sobre as altera es que ser o mantidas edite seu arquivo e remova as marca es de conflito Top piece of bread Mayonnaise Lettuce Tomato Provo
466. porte a gerenciamento de arquivos do Subversion bastante aber to proporcionando quase tanta flexibilidade para arquivos versionados quanto voc dese jaria ao manipular os seus n o versionados Mas essa flexibilidade significa que durante o tempo de vida de seu reposit rio um dado objeto versionado pode ter muitos caminhos e um dado caminho pode representar v rios objetos versionados inteiramente diferentes E isto introduz um certo n vel de complexidade em suas intera es com esses caminhos e objetos O Subversion muito esperto ao perceber quando uma vers o do hist rico do objeto inclui tais mudan as de endere o Por exemplo se voc pedir pelo registro do hist rico de re vis o de um arquivo espec fico que foi renomeado na ltima semana o Subversion feliz mente oferece todos estes registros a revis o na qual a renomea o aconteceu mais os registros de revis es relevantes tanto antes como depois que foi renomeado Assim a maioria das vezes voc n o ter que pensar sobre estas coisas Mas ocasionalmente o Subversion precisar de sua ajuda para esclarecer ambig idades O exemplo mais simples disto ocorre quando um diret rio ou arquivo exclu do do contro le de vers o e ent o um novo diret rio ou arquivo criado com o mesmo nome e adicio nado ao controle de vers o Obviamente o que voc exclui e o que voc depois adicionou n o s o a mesma coisa Estas coisas meramente possu ram o mesmo ca
467. pos disk space reclaimed BDB backed repositories whose log files are used as part of a backup or di saster recovery plan should not make use of the log file autoremoval feature Reconstruction of a repository s data from log files can only be accomplished when all the log files are available If some of the log files are removed from disk before the backup system has a chance to copy them elsewhere the in complete set of backed up log files is essentially useless Berkeley DB Recovery As mentioned in Berkeley DB a Berkeley DB repository can sometimes be left in frozen state if not closed properly When this happens an administrator needs to rewind the data base back into a consistent state This is unique to BDB backed repositories though if you are using FSFS backed ones instead this won t apply to you And for those of you using Subversion 1 4 with Berkeley DB 4 4 or better you should find that Subversion has become much more resilient in these types of situations Still wedged Berkeley DB reposi tories do occur and an administrator needs to know how to safely deal with this circums tance In order to protect the data in your repository Berkeley DB uses a locking mechanism This mechanism ensures that portions of the database are not simultaneously modified by multi ple database accessors and that each process sees the data in the correct state when that data is being read from the database When a process needs t
468. prints exported S svnversion exported mod dav svn 307 Refer ncia Completa do Subversion Nome Diretivas de Configura o do mod dav svn As diretivas de configura o do Apache para servir reposit rios do Subversion atrav s de um Servidor HTTP Apache Descri o Esta se o descreve brevemente cada um das diretivas de configura o do Subversion no Apache Para uma descri o mais detalhada da configura o do Apache com Subversion veja httpd o servidor HTTP Apache Diretivas DAV svn Esta diretiva deve ser inclu da em qualquer bloco Directory OU Location para um reposit rio do Subversion Ela diz ao httpd usar o m dulo base do Subversion para que o mod dav manipule todas as requisi es SVNAutoversioning On Esta diretiva permite que requisi es de clientes WebDAV resultem em submiss es autom ticas Uma mensagem de log gen rica gerada automaticamente e anexada a cada revis o Se voc habilitar o Auto versionamento prov vel que voc queira defi nir ModMimeUsePathInfo On de forma que mod mime pode definir a propriedade svn mime type para o mime type correto automaticamente e mod_mime capaz de fazer isto muito bem naturalmente Para mais informa es veja Ap ndice C WebDAV e Autoversionamento SVNPath Esta diretiva especifica o local no sistema de arquivo para os arquivos do reposit rio do Subversion Em um bloco de configura o para um reposit rio Subversion ou
469. propriedade est definida deve ser habilitado e o Subversion honra esta solicita o ao popular c pias de trabalho com tais arquivos Esta propriedade n o tem efeito em sistemas de arquivo que n o possuem o conceito de bit de permiss o para execut vel como por exemplo FAT32 e NTFS 4 Al m disso quan do n o houver valor definido o Subversion for ar o valor ao definir esta propriedade Por fim esta propriedade s v lido em arquivos n o em diret rios Sequ ncia de Caracteres de Fim de Linha A n o voc ser que esteja usando a propriedade svn mime type em um arquivo sob controle de vers o o Subversion assume que o arquivo cont m dados humanamente legi veis De uma forma geral o Subversion somente usa esse conhecimento para determinar se os relat rios de diferen as contextuais para este arquivo s o poss veis Ao contr rio para o Subversion bytes s o bytes Isto significa que por padr o o Subversion n o presta qualquer aten o para o tipo de marcadores de fim de linha ou end of line EOL usados em seus arquivos Infelizmente diferentes sistemas operacionais possuem diferentes conven es sobre qual sequ ncia de caracteres representa o fim de uma linha de texto em um arquivo Por exemplo a mar Os sistemas de arquivos do Windows usam extens es de arquivo tais como EXE BAT e COM para indicar arquivos execut veis 49 T picos Avan ados ca usual de t rmino de linha usada por
470. quantidade de corre es estiverem acumula das os gestores do software pode decidir fazer uma vers o 1 0 1 branches 1 0 copiado para tags 1 0 1 e o r tulo empacotado e distribu do Este processo inteiro se repete enquanto o software amadurece quando a vers o 2 0 esti ver pronta um novo ramo para o release 2 0 criado testado rotulado e eventualmente distribu do Depois de alguns anos o reposit rio acaba com uma por o de ramos distri 95 Fundir e Ramificar bu dos em modo de manuten o e um conjunto de tags representando as ltimas ver s es entregues do software Ramos de Novos Recursos Features Um ramo de novos recursos o tipo de ramo que tem sido o exemplo dominante neste ca p tulo aquele no qual voc trabalhava enquanto Sally continuava seu trabalho em trunk E um ramo tempor rio criado para lidar com uma modifica o complexa sem in terferir na estabilidade de t runk Diferentemente dos ramos de distribui o os quais po dem continuar sendo mantidos para sempre ramos de novos recursos s o criados usa dos por um tempo mesclados de volta ao tronco e finalmente exclu dos Eles t m um es copo finito de utilidade Novamente as pol ticas de projeto variam enormemente ao abordar sobre exatamente quando adequado criar um ramo de novos recursos Alguns projetos nunca usam ramos de recursos como um todo submiss es de altera es em trunk s o permitidas a todos A va
471. que crie um arquivo de log especial svn_logfile no diret rio de 1ogs padr o do Apache As vari veis t e u s o substitu das respectiva mente pela hora e pelo nome do usu rio da requisi o A parte realmente importante aqui s o as duas inst ncias de SVN ACTION Quando o Apache v esta vari vel ele substitui o valor da vari vel de ambiente SVN ACTION que atribu da automaticamente pelo mod dav svn sempre que ele detecta uma a o do cliente em alto nivel Assim ao inv s de ter de interpretar um access log tradicional como este 26 Jan 2007 22 25 29 0600 PROPFIND svn calc svn vcc default HTTP 1 1 207 26 Jan 2007 22 25 29 0600 PROPFIND svn calce svn bln 59 HTTP 1 1 207 449 26 Jan 2007 22 25 29 0600 PROPFIND svn calc HTTP 1 1 207 647 26 Jan 2007 22 25 29 0600 REPORT svn calc svn vcc default HTTP 1 1 200 6 26 Jan 2007 22 25 31 0600 OPTIONS svn calc HTTP 1 1 200 188 26 Jan 2007 22 25 31 0600 MKACTIVITY svn calc svn act e6035ef7 5df0 4ac0 Voc pode examinar um svn_logfile bem mais intelig vel como este 26 Jan 2007 22 24 20 0600 26 Jan 2007 22 24 27 0600 26 Jan 2007 22 25 29 0600 26 Jan 2007 22 25 31 0600 list dir update remote status sally commit r60 Outros Recursos Varios recursos j providos pelo Apache como um servidor Web robusto que tamb m podem ser aproveitadas para aprimorar as funcionalidades ou a seguran a do Subversion O S
472. que eles n o s o propriamente ditas FAQ Nin gu m nunca liga para o suporte t cnico e pergunta Como n s podemos maximizar a pro dutividade Em vez disso as pessoas fazem perguntas muito mais espec ficas como Como podemos alterar o sistema de calend rio para enviar lembretes dois dias antes ao inv s de um etc Mas muito mais f cil forjar Perguntas Frequentes imagin rias do que descobrir as verdadeiras Compilar uma verdadeira base de FAQ exige um esfor o conti nuo e organizado atrav s do ciclo de vida do software as quest es que chegam devem ser rastreadas respostas monitoradas e tudo deve ser reunido em um todo coerente pesquis vel que reflete a experi ncia coletiva dos usu rios em seu mundo Isto requer a paci ncia e a atitude observadora de um cientista Nenhuma grande teoria ou pronuncia mentos vision rios aqui olhos abertos e anota es precisas s o o principal O que eu amo neste livro que ele surgiu deste processo e isto evidenciado em cada p gina Ele o resultado direto dos encontros entre os autores e usu rios Ele come ou quando Ben Collins Sussman observou que as pessoas estavam fazendo as mesmas per guntas b sicas diversas vezes nas listas de discuss o do Subversion como por exemplo Quais s o os procedimentos padr o para se utilizar o Subversion Branches e tags funci onam do mesmo modo como em outros sistemas de controle de vers o Como eu posso saber quem realizou uma a
473. que sejam leg veis por humanos e valores com qualquer coisa que voc queira inclusive dados bin rios A principal diferen a que as propriedades de uma revis o n o s o versionadas Em outras palavras se voc modificar o valor de ou excluir uma propriedade de uma revis o n o h uma forma de recuperar seu valor anterior no Subversion O Subversion n o tem nenhuma pol tica em particular em rela o ao uso de propriedades Ele apenas solicita que voc n o use nomes de propriedades que comecem com o prefixo svn Este o espa o de nomes namespace que ele reserva para uso pr prio E o Sub version de fato faz uso de propriedades tanto do tipo versionadas quando das n o versionadas Certas propriedades versionadas t m um significado especial ou certos efei tos quando encontradas em arquivos e diret rios ou carregam alguma pequena informa o sobre a revis o na qual estes se encontram Certas propriedades de revis o s o auto maticamente anexadas s revis es pelo processo de submiss o de altera es do Subver sion e obt m informa o sobre a revis o Muitas dessas propriedades s o mencionadas em algum lugar neste ou em outros cap tulos como parte de t picos mais gerais aos quais est o relacionadas Para uma lista exaustiva das propriedades pr definidas do Subversi on veja Propriedades do Subversion Nesta se o vamos examinar a utilidade tanto para os usu rios quanto para o pr prio Subver
474. quena quantidade de dados para o cliente O cliente usa o algoritmo de hash MD5 para criar uma impress o digital dos dados e da senha combinados ent o envia esta impres s o digital como resposta O servidor realiza a mesma computa o com a senha armaze nada para verificar se os resultados coincidem Em nenhum momento a senha atual tra fegada pela rede E claro tamb m poss vel para o cliente ser autenticado externamente por meio de um t nel agente tal como o SSH Neste caso o servidor simplesmente examina o usu rio com o qual est sendo executado e o utiliza como nome de usu rio autenticado Para mais detalhes sobre isto veja Tunelamento sobre SSH Como voc j deve ter percebido o arquivo svnserve conf do reposit rio o mecanis mo central para controle das pol ticas de autentica o e autoriza o O arquivo possui o mesmo formato que outros arquivos de configura o veja Area de Configura o do Tem po de Execu o nomes de se o s o marcados por colchetes e coment rios inici am por cerquilha e cada se o cont m vari veis espec ficas que podem ser definidas vari vel valor Vamos conferir estes arquivos e aprender como us los Criar um arquivo users e um dom nio Por hora a se o general do svnserve conf tem todas as vari veis que voc pre cisa Comece alterando os valores dessas vari veis escolha um nome para um arquivo que ir conter seus nomes de
475. r Reverted RE READMI DME zj q D O Subversion reverte o arquivo para seu estado antes da altera o sobrescrevendo o com a c pia intacta que est na rea svn Mas atente tamb m que svn revert pode desfa zer quaisquer opera es agendadas por exemplo voc pode decidir que voc n o quer mais adicionar um novo arquivo svn status foo foo o UV svn add foo A foo svn revert foo Reverted foo svn status foo foo svn revert 7 TEM tem exatamente o mesmo efeito de se excluir o ITEM de sua c pia de trabalho e ent o executar svn update r BASE ITEM Por m se vo c estiver revertendo um arquivo o svn revert tem uma not vel diferen a ele n o precisa se comunicar com o reposit rio para restaurar o seu ar quivo Ou talvez voc tenha removido um arquivo do controle de vers o por engano LT S svn status READM README LT S svn delete READM D README S svn revert README Reverted README S svn status README README 26 Uso B sico Resolvendo Conflitos Combinando Altera es de Ou tros J vimos como o svn status u pode prever conflitos Suponha que voc execute svn up date e aconte a algo interessante svn update U INSTALL G README C bar c Updated to revision 46 Os c digos U e G n o s o motivo de preocupa o esses arquivos absorveram
476. r ele executa uma heur stica bem b sica para identificar se o arquivo cont m algum conte do que seja leg vel por humanos Se n o o Subversion automatica mente vai definir a propriedade svn mime t ype naquele arquivo para application oc tet stream 0 tipo MIME gen rico para isto um conjunto de bytes Claro que se o Subversion identificou corretamente ou se voc quiser definir a propriedade svn mime type para algo mais preciso talvez image png OU application x shockwave flash voc sempre pode remover ou editar esta propriedade Para mais sobre como o Subversion faz uso dos tipos MIME veja Tipo de Conte do do Arqui vo O Subversion tamb m oferece atrav s de seu sistema de configura o em tempo de exe cu o veja Area de Configura o do Tempo de Execu o um mecanismo mais flex vel de defini o autom tica de propriedades que permite a voc criar mapeamentos de pa dr es de nome de arquivos para nomes de propriedades e valores Novamente estes ma peamentos afetam adi es e importa es e n o apenas podem sobrescrever a identifica o sobre o tipo MIME padr o feita pelo Subversion durante suas opera es como pode definir propriedades do Subversion adicionais e personalizadas tamb m Por exemplo vo c poderia criar um mapeamento que dissesse que sempre que voc adicionar arquivos JPEG aqueles cujos nomes casem com o padr o jpg o Subversion deveria automa ticamente definir
477. r a se familiarizar com somente um ou dois projetos no reposit rio Utilizar projetos como ramos irm os tende a desenfatizar a in dividualidade dos projetos e focar no conjunto inteiro como uma nica entidade De qual quer forma essa uma quest o social N s gostamos da organiza o inicialmente propos ta por raz es puramente pr ticas f cil perguntar sobre ou modificar ou migrar para outro lugar o hist rico completo de um nico projeto quando existe um nico caminho no reposit rio que guarda tudo passado presente etiquetas e ramos referente ao projeto sozinho Decidindo Onde e Como Hospedar Seu Reposit rio Antes de criar seu reposit rio Subversion uma quest o bvia que voc precisa responder onde a coisa toda dever ficar Isto est fortemente interligado a uma mir ade de outras quest es que dizem respeito a como o reposit rio ser acessado atrav s de um servidor Subversion ou diretamente por quem usu rios que estejam por atr s de um firewall cor porativo ou globalmente por meio da Internet que outros servi os voc ir disponibilizar em conjunto com o Subversion interfaces de navega o de reposit rio avisos de submis s es commits por e mail etc sua estrat gia de c pias de seguran a backup e por a vai Abordamos a escolha do servidor e configura o em Cap tulo 6 Configura o do Servidor o que gostar amos brevemente de apontar aqui simplesmente que as respos ta
478. r este com portamento o que pode ser til para determinar pontos de ramifica o Nomes Alternativos Altera Nenhum Nada Acessa o Reposit rio Op es Sim revision r REV quiet q verbose v targets FILENAME stop on copy incremental limit NUM xml username USER password PASS no auth cach 235 Refer ncia Completa do Subversion non interactive config dir DIR Exemplos Voc pode ver as mensagens de log para todos os caminhos que sofreram altera es em sua c pia de trabalho executando svn log a partir da raiz da mesma svn log r20 harry 2003 01 17 22 56 19 0600 Fri 17 Jan 2003 1 line Tweak r17 sally 2003 01 16 23 21 19 0600 Thu 16 Jan 2003 2 lines Examine todas as mensagens de log para um dado arquivo em sua copia de trabalho svn log foo c r32 sally 2003 01 13 00 43 13 0600 Mon 13 Jan 2003 1 line Added defines 3 lines r28 2003 01 07 21 48 33 0600 Tue 07 Jan 2003 sally Se voc n o tiver uma c pia de trabalho m o voc pode obter as mensagens de log a partir de uma URL svn log http svn red bean com repos test foo c r32 sally 2003 01 13 00 43 13 0600 Mon 13 Jan 2003 1 line Added defines r28 sally 2003 01 07 21 48 33 0600 Tue 07 Jan 2003 3 lines Se voc quiser as mensagens de diversos arquivos sob uma mesma URL
479. r que seja Caracter sticas do Subversion Ao discutir sobre que recursos o Subversion traz para o mbito do controle de vers o fre quentemente til falar deles em termos de que avan os eles representam aos recursos do CVS Se voc n o est familiarizado com o CVS voc pode n o compreender todas essas caracter sticas E se voc n o estiver familiarizado com controle de vers o como um todo voc pode ficar bem confuso a menos que voc leia antes Cap tulo 1 Conceitos Fundamentais onde apresentamos uma suave introdu o ao controle de vers o O Subversion proporciona Versionamento de diret rios O CVS apenas rastreia o hist rico de arquivos individuais j o Subversion implementa um sistema de arquivos virtual sob controle de vers o que rastreia modifica es a to da a rvore de diret rio ao longo do tempo Os arquivos e os diret rios s o versiona dos Hist rico de vers es efetivo Como o CVS limitado apenas ao versionamento de arquivos opera es como c pia e renomea o que podem ocorrer com arquivos tamb m mas que s o realmente al tera es no conte do de algum diret rio continente n o s o suportadas no CVS Adicionalmente no CVS voc n o pode substituir um arquivo versionado por alguma outra coisa com 0 mesmo nome sem que o novo item deixe de herdar o hist rico do arquivo antigo que talvez seja at algo com o qual n o mantenha nenhuma correla o Com o Subversion voc
480. ra o comum note que n o aparece o nome de nenhum reposit rio no nome da se o Isto torna todos os reposit rios leg veis para todos os usu rios Uma vez que todos os usu rios tem acesso de leitura aos reposit rios voc pode dar permiss es rw expl citas a certos usu rios em subdiret rios dentro de reposit rios espec ficos A vari vel asterisco merece tamb m um destaque especial aqui o nico padr o que corresponde com o usu rio an nimo Se voc configurou seu bloco servidor para permitir um misto de acesso an nimo e autenticado todos os usu rios iniciam acessando anoni mamente O servidor procura por um valor definido para o caminho sendo acessado se encontrar ent o requisita autentica o efetiva do cliente O arquivo de acesso tamb m lhe possibilita definir grupos inteiros de usu rios tal como o arquivo etc group do Unix groups calc developers harry sally Joe paint developers frank sally jane everyone harry sally joe frank sally jane Controle de acesso pode ser definido para grupos da mesma forma como para usuarios Sendo que os grupos se distinguem por tem um sinal de arroba na frente calc projects calc calc developers rw paint projects paint Gpaint developers rw jane r Grupos tamb m podem ser definidos de forma a conter outros grupos groups calc developers harry sally joe paint developers frank sally jane ever
481. ra cada opera o realizada o c digo no reposit rio do Subversion tenha uma vis o est tica da base de dados e n o uma base de dados que esteja mudando constantemente nas m os de alguns outros processos e possa tomar decis es baseadas no que v Se uma decis o tomada parecer conflitar com o que outro processo esteja fazendo a opera o inteira desfeita como se nunca tivesse acontecido e o Subversion graciosamente ir tentar executar a opera o sobre uma nova atualizada e ainda assim est tica vis o da base de dados Outro grande recurso do Berkeley DB o backup a quente a habilidade de executar uma c pia de seguran a do ambiente da base de dados sem precisar deixar o sistema offline Vamos discutir como fazer c pias de seguran a de seu reposit rio em Repository Bac kup mas os benef cios de se poder fazer c pias funcionais de seus reposit rios sem des ligar o sistema devem lhe ser bvios Berkeley DB tamb m um sistema de base de dados muito confi vel quando utilizado adequadamente O Subversion usa as facilidades de registros de log do Berkeley DB o que quer dizer que a base de dados primeiro escreve uma descri o de quaisquer modifi ca es que estiver para fazer em seus arquivos de log em disco e s ent o realiza a mo difica o em si Isto para garantir que se qualquer coisa der errado o sistema da base de dados pode se recuperar para um determinado ponto de verifica o checkp
482. raba lho est o desatualizados Isto n o atualiza nenhum de seus arquivos apenas mostra a voc quais arquivos ser o atualizados se voc executar um svn update stop on copy Faz com que um subcomando do Subversion que esta varrendo o hist rico de um re curso versionado pare de vasculhar essas informa es hist ricas quando uma c pia isto um local no hist rico em que o recurso foi copiado de outro local no repo sit rio seja encontrada strict Faz com que o Subversion use sem ntica estrita um conceito que um pouco vago a n o ser quando aplicado a subcomandos espec ficos especificamente ao svn prop get targets FILENAME Diz para o Subversion obter a lista de arquivos em que voc quer executar uma opera o a partir de um nome de arquivo informado ao inv s de ter de listar todos os arqui vos na linha de comando username NAME Indica que voc est informando seu nome de usu rio para autentica o na linha de comando de outra forma se for necess rio o Subversion ir solicit lo a voc intera tivamente 205 Refer ncia Completa do Subversion verbose v Solicita que o cliente exibe o maximo de informa o que puder ao executar qualquer subcomando Isto pode fazer com que o Subversion exiba campos adicionais informa es detalhadas sobre cada arquivo ou informa es extras sobre suas a es em exe cu o version Exibe informa o da vers o do cli
483. rabalho Para cada item atualizado o comando exibe uma linha que inicia com um caractere infor mando a a o tomada Estes caracteres t m o seguinte significado A Adicionado Removido deleted Atualizado updated Em conflito Mesclado merged Um caractere na primeira coluna significa uma atualiza o no arquivo atual que atualizou as propriedades do arquivo mostradas na segunda coluna Nomes Alternativos up Altera C pia de trabalho Acessa o Reposit rio Sim Op es revision r non recursive quiet q no ignore incremental diff3 cmd CMD username USER REV N 264 Refer ncia Completa do Subversion password PASS no auth cach non interactive config dir DIR ignor xternals Exemplos Obt m as altera es do reposit rio que ocorreram desde a ltima opera o de update svn update A newdir toggle c A newdir disclose c A newdir launch c D newdir README Updated to revision 32 Voc tamb m pode atualizar sua c pia de trabalho para uma revis o mais antiga o Sub version n o tem o conceito de arquivos aderentes sticky que o CVS tem consulte Ap ndice B Subversion para Usu rios de CVS svn update r30 A newdir README D newdir toggle c D newdir disclose c D U U newdir launch c foo c pdated to revision 30 Se voc quiser examinar uma revis o mais antiga de um nico arquiv
484. ransmitting file data Committed revision 57 Agora as suas altera es no arquivo button c foram submetidas no reposit rio com uma nota descrevendo as suas altera es especificamente voc corrigiu um erro de digi ta o Se outros usu rios fizerem check out de calc eles ver o suas altera es na lti ma vers o do arquivo Suponha que voc tenha um colaborador Sally que tenha feito check out de calc ao mesmo tempo que voc Quando voc publicar suas altera es em button c a c pia de trabalho de Sally ser deixada intacta o Subversion somente modifica as c pias locais quando o usu rio requisita Para atualizar o seu projeto Sally pede ao Subversion para realizar um update na c pia de trabalho dela usando o comando update do Subversion Isto ir incorporar as suas al tera es na c pia local dela bem como as altera es de todos que tenham feito um com mit desde que ela fez check out S pwd home sally calc Is A svn Makefile integer c button c svn update U button c Updated to revision 57 A sa da do comando svn update indica que o Subversion atualizou o conte do de but ton c Note que Sally n o precisou especificar quais arquivos seriam atualizados o Sub version usou as informa es no diret rio svn e mais algumas no reposit rio para deci dir quais arquivos precisariam ser atualizados URLs do Reposit rio Os reposit rios do Subversion podem ser acessados atrav
485. ransparente para todos os programas As aplica es nem sequer se d o conta de que requisi es WebDAV est o acontecendo WebDrive NetDrive Ambos WebDrive e NetDrive s o excelentes produtos comerciais que permitem que um compartilhamento WebDAV seja mapeado como letras de drives no Windows Nunca tive mos nada al m de xito com estes produtos No momento em que este livro estava sendo escrito o WebDrive podia ser adquirido junto a South River Technologies http www southrivertech com J o NetDrive vem junto com o Netware sem custos adi cionais e pode ser encontrado na web procurando se por netdrive exe Ainda que esteja livremente dispon vel na internet os usu rios precisam ter uma licen a do Netware para us lo Se voc acha isso estranho voc n o est sozinho Veja esta p gina no site da Novell http www novell com coolsolutions qna 999 html Mac OS X O sistema operacional OS X da Apple tem um cliente WebDAV integrado em nivel de sis tema de arquivos A partir do Finder selecione o item Connect to Server a partir do menu Go Entre com uma URL WebDAV e ela aparecera como um disco em sua area de traba lho tal como qualquer outro volume montado Voc tamb m pode montar um compartilha mento WebDAV a partir do terminal do Darwin usando o tipo de sistema de arquivos web dav com o comando mount mount t webdav http svn example com repos project some mountpoint Note que se seu mod dav svn for ant
486. raz o de que o Subversion n o est em condi o de unir o mundo inteiro em defini es comuns e implementa es de todas estas coisas o melhor que podemos fazer ten tar ajudar a tornar sua vida mais simples quando voc precisar trabalhar com seus arqui vos e diret rios versionados em m ltiplos computadores e sistemas operacionais Esta se o descreve alguns dos meios de como o Subversion faz isto Tipo de Conte do do Arquivo O Subversion combina a qualidade das muitas aplica es que reconhecem e fazem uso dos tipos de conte do do Multipurpose Internet Mail Extensions MIME Al m de ser um local de armazenamento de prop sito geral para um tipo de conte do do arquivo o valor da propriedade de arquivo svn mime type determina algumas caracter sticas comporta mentais do pr prio Subversion Identificando Tipos de Arquivo V rios programas nos sistemas operacionais mais modernos fazem suposi es so bre o tipo e formato do conte do de um arquivo pelo nome do arquivo especifica mente por sua extens o Por exemplo arquivos cujos nomes terminam em txt s o geralmente supostos ser leg veis por humanos pass veis de serem compreen didos por simples leitura em vez dos que requerem processamento complexo para os decifrar Por outro lado arquivos cujos nomes terminam em png assume se se rem do tipo Portable Network Graphics que n o s o leg veis por humanos sendo percept veis apenas quando interpretados
487. rede Se voc estiver fazendo uma implanta o inteiramente dentro de sua rede LAN ou VPN da sua empresa isto n o chega a ser nenhum problema Mas se o reposit rio tiver de ser aces s vel pela internet ent o voc deveria se assegurar que o conte do do reposit rio n o cont m dados sens veis p ex se apenas c digo fonte Se voc precisar de integra o com alguns sistemas de identifica o existentes LDAP Active Directory NTLM X 509 etc ent o uma configura o baseada no Apache ser sua nica op o Similarmente se voc indispensavelmente precisar de log de servidor tanto para registro de erros de servidor quanto para atividades dos clientes ent o um servidor com base no Apache ser necess rio Se voc optou por usar ou o Apache ou o svnserve crie uma nica conta no sistema para o usu rio svn e fa a com que o processo do servidor seja executado por este usu rio Certifique se de fazer com que o diret rio do reposit rio perten a totalmente ao usu rio svn tamb m Do ponto de vista da seguran a isto deixa os dados do reposit rio adequadamente seguros e protegidos pelas permiss es do sistema de arquivos do sistema operacional alter veis apenas pelo pr prio processo do servidor Subversion Se voc j tiver uma infraestrutura fortemente baseada em contas SSH e se seus usu rios j possu rem contas no servidor ent o faz sentido implantar uma solu o usando o svnserve sobre SSH C
488. removidas s o iniciadas com e linhas adicionadas s o iniciadas com O svn diff tamb m exibe o nome do arquivo e uma informa o de deslocamento offset que til para o programa patch de forma que voc pode gerar atualiza es patches redirecionando a sa da do diff para um arquivo svn diff gt patchfile Voc pode por exemplo enviar um arquivo de atualiza o por e mail para outro desenvol vedor para revis o ou teste pr vio antes de submeter 25 Uso B sico O Subversion usa seu mecanismo interno de diff o qual gera o formato diff unificado por padr o Se voc quiser esta sa da em um formato diferente especifique um programa diff externo usando diff cmd e passe as op es de sua prefer ncia para ele com extensions x Por exemplo para ver as diferen as locais no arquivo foo c no formato de sa da de contexto ao mesmo tempo ignorando diferen as de mai sculas e mi n sculas voc poderia executar svn diff diff cmd usr bin diff extensions i foo c Desfazendo Modifica es de Trabalho Suponha que ao ver a sa da do svn diff voc decida que todas as modifica es que voc fez em um certo arquivo foram equivocadas Talvez voc n o tivesse que ter modificado o arquivo como um todo ou talvez voc veja que acabar sendo mais f cil fazer outras mo difica es come ando tudo de novo Esta uma oportunidade perfeita para usar o comando svn revert LT S svn reve
489. ret rios do reposit rio Os usu rios ent o trabalham simultaneamente e independentemente mo dificando suas c pias privadas Finalmente as c pias privadas s o fundidas merged nu ma nova vers o final O sistema de controle de vers o frequentemente ajuda com a fus o mas no final a interven o humana a nica capaz de garantir que as mudan as foram realizadas de forma correta Aqui vai um exemplo Digamos que Harry e Sally criaram cada um a sua c pia de trabalho de um mesmo projeto copiadas do reposit rio Eles trabalharam simultaneamente fazen do altera es no arquivo A nas suas pr prias c pias Sally salva suas altera es no repo sit rio primeiro Quando Harry tentar salvar suas altera es mais tarde o reposit rio vai inform lo que seu arquivo A est desatualizado out of date Em outras palavras o arqui vo A do reposit rio foi de alguma forma alterado desde a ltima vez que ele foi copiado Ent o Harry pede a seu programa cliente para ajud lo a fundir merge todas as altera es do reposit rio na sua c pia de trabalho do arquivo A Provavelmente as mudan as de Sally n o se sobrep em com as suas pr prias ent o uma vez que ele tiver ambos os conjuntos de altera es integrados ele salva sua c pia de trabalho de volta no reposit rio As figuras Figura 1 4 A solu o copy modify merge e Figura 1 5 A solu o copy mo dify merge continuando mostram este processo Figura 1 4
490. reve o ltimo usu rio conhecido que modificou este arquivo no reposit rio e apresentada na forma SAuthor harry Ela tamb m pode ser especificada como LastChangedBy HeadURL Esta palavra chave descreve a URL completa para a vers o mais recente do arquivo no reposit rio e apresentada na forma HeadURL http svn collab net repos trunk README Ela tamb m pode ser abre viada como URL Id Esta palavra chave uma combina o comprimida das outras palavras chave Sua substitui o apresenta se como Id calc c 148 2006 07 28 21 30 432 sally e interpretada no sentido de que o arquivo calc c foi modificado pela l tima vez na revis o 148 na noite de 28 de julho de 2006 pelo usu rio sally Muitas das descri es anteriores usam a frase ltimo valor conhecido ou algo parecido Tenha em mente que a expans o da palavra chave uma opera o no lado do cliente e seu cliente somente conhece sobre mudan as que tenham ocorrido no reposit rio quan do voc atualiza sua c pia de trabalho para incluir essas mudan as Se voc nunca atuali zar sua c pia de trabalho suas palavras chave nunca expandir o para valores diferentes mesmo que esses arquivos versionados estejam sendo modificados regularmente no re posit rio Simplesmente adicionar texto da ncora de uma palavra chave em seu arquivo faz nada de especial O Subversion nunca tentar executar substitui es textuais no conte do de s
491. revis o 40 no nosso reposit rio de exemplo svnlook log tmp repos Rearrange lunch 294 Refer ncia Completa do Subversion Nome svnlook propget Print the raw value of a property on a path in the repository Sinopse svnlook propget REPOS PATH PROPNAME PATH IN REPOS Descri o List the value of a property on a path in the repository Nomes Alternativos pg pget Op es revision r REV transaction t revprop Exemplos This shows the value of the seasonings property on the file trunk sandwich in the HEAD revision svnlook pg usr local svn repos seasonings trunk sandwich mustard 295 Refer ncia Completa do Subversion Nome svnlook proplist Print the names and values of versioned file and directory properties Sinopse svnlook proplist REPOS PATH PATH IN REPOS Descri o List the properties of a path in the repository With verbose show the property values too Nomes Alternativos pl plist Opcoes revision r REV transaction t verbose v revprop Exemplos This shows the names of properties set on the file t runk README in the HEAD revision svnlook proplist usr local svn repos trunk README original author svn mime type This is the same command as in the previous example but this time showing the property values as well svnlook verbose proplist usr loca
492. rganizada trinta arquivos em um diret rio nomeado images porque n o tem certeza de quais arquivos ele precisa modificar por ora apenas modifica quatro destes arquivos quando ele executar svn commit images o processo mesmo assim liberar todas as trinta travas Este comportamento de liberar as travas automaticamente pode ser evitado com a passa gem da op o no unlock ao comando svn commit Isso tem melhor uso para aque les casos quando voc quer submeter mudan as mas ainda planeja fazer mais mudan as e portanto precisa conservar as travas existentes Voc tamb m pode fazer este seu comportamento padr o configurando a op o no unlock do seu ambiente de execu o veja Area de Configura o do Tempo de Execu o Evidentemente travar um arquivo n o o obriga a submeter uma mudan a para ele A tra va pode ser liberada a qualquer tempo com um simples comando svn unlock S svn unlock banana c banana c unlocked Descobrindo as travas 61 T picos Avan ados Quando uma submiss o falha devido a um trava que outra pessoa criou bastante f cil ver os detalhes sobre ela A forma mais f cil delas svn status show updates S svn status u M 23 bar c M O 32 raisin jpg x 72 foo h Status against revision 105 Neste exemplo Sally pode ver n o somente que sua c pia de foo h est desatualizada mas que um dos dois arquivos modificados que ela planeja submeter est travado no re posit rio
493. ria privada Os direitos acima podem ser exercidos em todas as m dias e formatos independente de serem conhecidos agora ou concebidos posteriormente Os direitos acima incluem o direito de fazer modifica es que forem tecnicamente necess rias para exercer os direitos em outras m dias meios e formatos Todos os direitos n o concedidos expressamente pelo Licenciante ficam aqui reservados 4 Restri es A licen a concedida na Se o 3 acima est expressament sujeita e limitada aos seguintes termos a Voc pode distribuir exibir publicamente executar publicamente ou executar publicamente por meios digitais a Obra apenas sob os termos desta Licen a Voc deve incluir uma c pia desta licen a ou o Identificador Uniformizado de Recursos Uniform Resource Identifier para esta Licen a com cada c pia ou grava o da Obra que Voc distribuir exibir publicamente executar publicamente ou executar publicamente por meios digitais Voc n o poder oferecer ou impor quaisquer termos sobre a Obra que alterem ou restrinjam os termos desta Licen a ou o exerc cio dos direitos aqui concedidos aos destinat rios Voc n o poder sub licenciar a Obra Voc dever manter intactas todas as informa es que se referem a esta Licen a e exclus o de garantias Voc n o pode distribuir exibir publicamente executar publicamente ou executar publicamente por meios digitais a Obra com qualquer medida te
494. riedade em um diret rio a n o ser que ele esteja atualizado Para mais discuss o sobre as limita es do versionamento de diret rios veja Revis es Locais Mistas Mais Opera es Desconectadas Nos ltimos anos espa o em disco tornou se ultrajantemente barato e abundante mas largura de banda n o Portanto a c pia de trabalho do Subversion foi otimizada em fun o do recurso mais escasso O diret rio administrativo svn serve ao mesmo prop sito que o diret rio cvs exceto por que tamb m armazena c pias somente leitura e intocadas dos seus arquivos Isto permi te que voc fa a muitas coisas desconectado svn status Mostra quaisquer mudan as locais que voc fez veja Obtendo uma vis o geral de suas altera es svn diff Mostra os detalhes das suas mudan as veja Examinando os detalhes de suas altera es locais svn revert Remove suas mudan as locais veja Desfazendo Modifica es de Trabalho Os arquivos originais guardados tamb m permitem que o cliente Subversion envie diferen as ao submeter o que o CVS n o capaz de fazer O ltimo subcomando da lista novo ele n o apenas remover mudan as locais mas ir 325 Subversion para Usu rios de CVS desmarcar opera es agendadas como adi es e exclus es a maneira preferida de re verter um arquivo executar rm file svn update tamb m ir funcionar mas isso mancha o prop sito da atual
495. ro cessos necess rios Pode parecer um pouco confuso e complicado mas os problemas de ter m ltiplos usu rios compartilhando acesso de escrita a arquivos comuns s o problemas cl ssicos e que muitas vezes n o s o resolvidos de maneira muito elegante Felizmente muitos administradores de reposit rios nunca ir o precisar realizar t o com plexa configura o Os usu rios que querem acessar reposit rios que estejam na mesma m quina n o est o limitados a usar URLs file para acesso eles normalmente po dem contactar um servidor Apache HTTP ou svnserve usando localhost como nome do servidor em suas URLs http ou svn E manter m ltiplos processos servidores para seus reposit rios Subversion estar propenso a mais dor de cabe a que o necess rio N s recomendamos que voc escolha o servidor que melhor atenda s suas necessi dades e siga firme com ele Um checklist para o servidor svn ssh Pode ser um pouco complicado fazer com que uma por o de usu rios com contas SSH existentes compartilhem um reposit rio sem problemas de permiss o Se voc est confuso sobre todas as coisas que voc como um administrador precisa fazer em um sistema Unix like aqui est um breve checklist que resume algumas das coi sas discutidas nesta se o Todos os seus usu rios SSH precisam ser capazes de ler e escrever no reposit rio ent o ponha todos os usu rios SSH em um mesmo grupo Fa a com que o reposit rio
496. ro voc ainda pode abortar sem subme ter suas altera es Se voc quiser cancelar a opera o apenas feche o edi tor sem salvar sua mensagem de log e o Subversion ir lhe perguntar se voc quer cancelar a opera o prosseguir sem uma mensagem de log ou editar a mensagem novamente Nomes Alternativos ci abrevia o para check in e n o co que a abrevia o para checkout Altera C pia de trabalho reposit rio Acessa o Reposit rio Sim Op es message m TEXT file F FILE quiet q no unlock non recursive N targets FILENAME force log username USER password PASS no auth cach non interactive encoding ENC config dir DIR Exemplos Submete uma modifica o simples em um arquivo com a mensagem de log na linha de comando e um alvo impl cito de seu diret rio atual 214 Refer ncia Completa do Subversion svn commit m added howto section Sending a Transmitting file data Committed revision 3 Submete uma modifica o no arquivo foo c explicitamente especificado na linha de co mando com a mensagem de log contida em um arquivo chamado msg svn commit F msg foo c Sending ftoo e Transmitting file data Committed revision 5 Se voc quiser usar um arquivo que est sob controle de vers o para sua mensagem de log com file voc precisa passar a op o force log svn commit
497. ro de mudan as nele Ent o voc rapidamente constata que voc pretendia fazer as mudan as em um ramo N o tem problema Quando voc executa svn switch para um ramo de sua c pia de trabalho as mudan as locais permanecer o Voc pode ent o testar e submeter elas para o ramo voc pode entretanto usar svn switch com a op o relocate se a URL de seu servidor mudar e voc n o quiser abandonar uma c pia de trabalho existente Veja svn switch para mais informa es e um exemplo 98 Fundir e Ramificar R tulos Outro conceito comum do controle de vers o ramo Um ramo apenas uma foto do projeto no momento No Subversion essa id ia parece estar em todo lugar Cada revis o do reposit rio exatamente isso uma foto da estrutura depois de cada commit Entretanto pessoas normalmente querem dar r tulos mais amig veis como nomes de tags como vers o 1 0 E querem fazer fotos de pequenos sub diret rios da estrutura Al m do mais n o f cil lembrar que versao 1 0 de um peda o do software um particu lar sub diret rio da revis o 4822 Criando um r tulo simples Mais uma vez snv copy vem para nos socorrer Se voc quer criar uma foto do calc trunk exatamente como ele est na revis o HEAD fazendo uma copia dela svn copy http svn example com repos calc trunk http svn example com repos calc tags release 1 0 m R tulando a vers o 1 0 do projeto calc Committ
498. roperties for revision 46 Committed revision 47 Copied properties for revision 47 svnserve O svnserve possibilita o acesso a reposit rios do Subversion usando o protocolo de rede espec fico do Subversion Voc pode executar o svnserve como um processo servidor independente para clientes que estejam usando o m todo de acesso svn voc pode deixar com que um dae mon tal como o inetd ou xinetd execute o para voc sob demanda tamb m para acesso 303 Refer ncia Completa do Subversion via svn ou voc pode fazer com que o sshd execute o sob demanda para o m todo de acesso svn ssh Independentemente do m todo de acesso uma vez que o cliente tenha selecionado um reposit rio enviando sua URL o svnserve l um arquivo chamado conf svnser ve conf no diret rio do reposit rio para determinar configura es espec ficas tais como qual base de dados de autentica o usar e que pol ticas de autoriza o aplicar Veja svnserve um servidor especializado para mais detalhes sobre o arquivo svnser ve conf Op es do svnserve Diferente dos comandos anteriores que descrevemos o svnserve n o possui subcoman dos o svnserve controlado exclusivamente por op es daemon d Faz com que o svnserve execute em modo daemon O pr prio svnserve se p e em segundo plano aceitando e servindo conex es TCP IP na porta do svn 3690 por pa dr o listen port PORT Faz com que o svnserve es
499. rquivos ou diret rios 18 Uso B sico ou modifica es nos j existentes n o h necessidade de continuar a notificar o servidor Subversion que voc tenha feito algo O que h no diret rio svn Cada diret rio em uma c pia de trabalho cont m uma rea administrativa um subdi ret rio nomeado svn Normalmente comandos de listagem de diret rios n o mos trar o este subdiret rio mas este um diret rio importante Fa a o que fizer n o apague ou modifique nada nesta rea administrativa O Subversion depende dela para gerenciar sua c pia de trabalho Se voc remover o subdiret rio svn acidentalmente o modo mais f cil de resolver o problema remover todo o conte do do diret rio uma exclus o normal pelo siste ma n o svn delete ent o executar svn update a partir do diret rio pai O cliente Subversion far novamente o download do diret rio que voc excluiu bem como uma nova rea svn Al m de voc certamente poder obter uma c pia de trabalho com a URL do reposit rio co mo nico argumento voc tamb m pode especificar um diret rio ap s a URL do reposit rio Isto coloca sua c pia de trabalho no novo diret rio que voc informou Por exemplo svn checkout http svn collab net repos svn trunk subv A subv Makefile in A subv ac helpers A subv ac helpers install sh A subv ac helpers install sh A subv build conf Gerado c pia de trabalho para revis o 8
500. rsion 1 1 a Berke ley DB repository is the default repository type but an FSFS repository can be created using the fs type option svnadmin create usr local svn repos fs type fsfs Remember svnadmin works only with local paths not URLs 267 Refer ncia Completa do Subversion Nome svnadmin deltify Deltify changed paths in a revision range Sinopse svnadmin deltify r LOWER UPPER REPOS PATH Descri o svnadmin deltify exists in current versions of Subversion only for historical reasons This command is deprecated and no longer needed It dates from a time when Subversion offered administrators greater control over compres sion strategies in the repository This turned out to be a lot of complexity for very little gain and this feature was deprecated Op es revision r REV quiet q 268 Refer ncia Completa do Subversion Nome svnadmin dump Dump the contents of filesystem to stdout Sinopse svnadmin dump REPOS PATH r LOWER UPPER incremental Descri o Dump the contents of filesystem to stdout in a dumpfile portable format sending feed back to stderr Dump revisions LOWER rev through UPPER rev If no revisions are given dump all revision trees If only LOWER is given dump that one revision tree See Migrating Repository Data Elsewhere for a practical use By default the Subversion dumpfile stream co
501. rso do sistema de arquivos Subversion N s entendemos que isso pode ser um choque para os f s de fic o cient fica que est o a muito tempo sob a impress o de que Tempo na verdade a quarta dimens o e n s pedimos desculpamos por qualquer trauma emocional causado por nossa declara o de uma teoria diferente 188 Incorporando o Subversion Figura 8 2 Versionando o tempo a terceira dimens o Como mencionado anteriormente a API de libsvn fs parece como qualquer outro sistema de arquivos exceto que ele tem essa maravilhosa capacidade de versionamento Ela foi projetada para ser us vel por qualquer programa interessado em um sistema de arquivos com versionamento N o coincidentemente o pr prio Subversion tem interesse nessa fun cionalidade Mas enquanto a API do sistema de arquivos deveria ser suficiente para su porte b sico em versionamento de arquivos e diret rios o Subversion quer mais e a que aparece a libsvn repos A biblioteca de reposit rio Subversion libsvn_repos est sentada logicamente falando no topo da API de libsvn fs provendo funcionalidades adicionais al m daquelas essenci ais l gica do sistema de arquivos versionado Ela n o cobre completamente todas as fun es de um sistema de arquivos apenas alguns passos maiores no ciclo geral de ati vidade do sistema de arquivos s o cobertas pela interface de reposit rio Algumas dessas incluem a cria o e submiss o de transa es
502. rt read_byte gzfile read LSB high unsigned short read_byte gzfile read MSB high high lt lt 8 interpret MSB correctly total low high add them togethe for correct total total low high add them together for correct total info gt extra header unsigned char my malloc total fread info gt extra header total 1 gzfile CQ 241 7 241 7 GR Store the offset with ftell if info gt data offset ftell gzfile 1 printf error ftell retturned 1 n printf error ftell returned 1 n exit 1 CR 249 7 249 7 GR printf I believe start of compressed data is u n info gt data offset endif Set postion eight bytes from the end of the file Set position eight bytes from the end of the file if fseek gzfile 8 SEEK_END printf error fseek returned non zero n 83 Fundir e Ramificar O comando svn merge quase que o mesmo Ao inv s de imprimir as diferen as no ter minal ele as aplica diretamente c pia de trabalho classificando como local modifications svn merge c 344 http svn example com repos calc trunk U integer c svn status M integer c A sa da do comando svn merge mostra a sua c pia de integer c sofreu uma corre o Agora ele cont m as modifica es feitas por Sally essas modifica es foram copiadas do tronco do reposit rio para a c p
503. rvidor Explica como configurar um servidor Subversion e os diferentes caminhos para aces sar seu reposit rio HTTP O protocolosvn e o acesso local pelo disco Tamb m cobre os detalhes de autentica o autoriza o e acesso an nimo Cap tulo 7 Customizando sua Experi ncia com Subversion Explora os arquivos de configura o do cliente Subversion a internacionaliza o de texto e como fazer com que ferramentas externas trabalhem com o subversion Cap tulo 8 Incorporando o Subversion Descreve as partes internas do Subversion o sistema de arquivos do Subversion e a c pia de trabalho da rea administrativa do ponto de vista de um programador De monstra como usar as APIs p blicas para escrever um programa que usa o Subversi on e o mais importante como contribuir para o desenvolvimento do Subversion Cap tulo 9 Refer ncia Completa do Subversion Explica em detalhes todos os subcomandos do svn svnadmin e svnlook com abun d ncia de exemplos para toda a fam lia Ap ndice A Guia R pido de Introdu o ao Subversion Para os impacientes uma r pida explica o de como instalar o Subversion e iniciar seu uso imediatamente Voc foi avisado Ap ndice B Subversion para Usu rios de CVS Cobre as similaridades e diferen as entre o Subversion e o CVS com numerosas su gest es de como fazer para quebrar todos os maus h bitos que voc adquiriu ao lon go dos anos com o uso do CVS Inclui a descri o de n mero de revis
504. s o muitas checagens de modifica es locais e avisos de diferen as livres de rede revers o de arquivos modificados ou perdidos livre de rede maior efici ncia na transmiss o das mudan as para o servidor mas tem o custo de possuir cada arquivo versionado armazenado duas vezes no disco Nos dias de hoje isso parece ser uma penalidade inofensiva para a maioria dos arquivos Entretanto a situa o fica feia quando o tamanho de seus arquivos versionados aumenta Uma aten o vem sendo dada para tornar opcional a presen a do text base Ironicamente quando o tamanho dos seus arquivos versionados fica maior que a exist ncia do text base se torna mais cruci al quem quer transmitir um arquivo enorme atrav s de uma rede apenas porque precisa submeter uma pequena mudan a para ele Com prop sito similar aos arquivos text base est o os arquivos de propriedade e suas c pias prop base intactas localizadas em svn props svn prop base respectiva mente J que diret rios podem ter propriedades tamb m existem os arquivos svn dir props e svn dir prop base Usando as APIs Desenvolver aplica es junto com as APIs de biblioteca do Subversion bastante sim ples O Subversion essencialmente um conjunto de bibliotecas C com arquivos de cabe alho h que ficam no diret rio subversion include da rvore de fontes Estes cabe alhos s o copiados para locais de seu sistema por exemplo usr loc
505. s svnsync copy revprops is the answer to this problem Use it to re synchronize the revision properties for a particu lar revision Nomes Alternativos Nenhum Opcoes non interactive no auth cach username NAME password PASS config dir DIR Exemplos Re synchronize revision properties for a single revision svnsync copy revprops file opt svn repos mirror 6 Copied properties for revision 6 301 Nome Sinopse Refer ncia Completa do Subversion svnsync initialize Initialize a destination repository for synchronization from another re pository z svnsync initialize DEST_URL SOURCE_URL Descri o svnsync initialize verifies that a repository meets the requirements of a new mirror reposi tory that it has no previous existing version history and that it allows revision property modifications and records the initial administrative information which associates the mir ror repository with the source repository This is the first svnsync operation you run on a would be mirror repository Nomes Alternativos Op es init non interactive no auth cach username NAME password PASS config dir DIR Exemplos Fail to initialize a mirror repository due to inability to modify revision properties svnsync initialize file opt svn repos mirror http svn example com repos svnsync Repository has not been enabled to accept revision propchanges a
506. s Operativas 68 Modelo de Rede cece eeeeeeeeeeaeeeeaeeeeeaeeeaaeeeseaeesaeeeeaeeeeseeesaaees 72 Solicita es e Respostas serraria 72 Armazenando Credenciais no Cliente rr rerreeesre renne 73 4 Fundir e Ramificar cece cece ce eeeeeeeeee A a AEEA a a Ee AE 76 O q e um Ramo seinen ne aint eee a 76 Usando Ramos sir AE E hh a het att tee tna ote nh 77 Criando um iRamo sussa aaee r desi caio ariana ad ele a adia as 78 Trabalhando com o seu Ramo errar 80 Os conceitos chave por tr s de ramos see 82 Copiando Modifica es Entre Ramos 82 Copiando modifica es espec ficas erre 83 O conceito chave sobre fus o ear 85 Melhores pr ticas sobre Fus o iara 86 Casos Comuns de Utiliza o cece eee eeeeeeeeeeeeeaeaaeeeeeeeeeeeeaeaaeaees 90 Mesclando um Ramo Inteiro para Outro 90 Desfazendo Altera es errar arara araaaa 92 Ressucitando Itens Exclu dos ir 93 Padr es Comuns de Ramifica o rr rerrereererrnne 95 Atravessando Ramos ori i na renan rara adeta 97 R LUIOS Sastres E A EE A Leia Aee E EE Debe ARES DC TRE 99 Criando um r tulo simples seen 99 Criando um r tulo complexo cece tees ceeeeeeeeeeeeeeeaeaaeaneeeeeees 99 Manuten o
507. s a algumas destas e de outras perguntas podem ter implica es que forcem sua cuca ao decidir sobre onde seu reposit rio ir residir Por exemplo certos cen rios de produ o podem demandar acesso ao reposit rio a partir de um sistema de arquivos remoto para m ltiplos computadores caso este em que como voc ver na pr xima se o a sua es colha de um reposit rio secund rio para armazenamento de dados passa a n o ser uma escolha porque apenas um dos servidores secund rios dispon veis ir funcionar neste ce n rio Averiguar cada poss vel maneira de implanta o do Subversion tamb m imposs vel e fora do escopo deste livro Simplesmente encorajamos voc a avaliar suas op es usando estas p ginas e outras fontes como seu material de refer ncia e planejar a partir dai Escolhendo uma Base de Dados A partir da vers o 1 1 o Subversion oferece duas op es de tipos de base de da dos frequentemente referenciada como o back end ou de uma maneira que causa confus o o sistema de arquivos versionado que poder o ser utilizadas pelos reposi t rios Um tipo mant m tudo em um ambiente de banco de dados Berkeley DB ou BDB reposit rios baseados nesse ambiente tamb m s o conhecidos como BDB backed O outro tipo de armazenagem de dados usa arquivos comuns com um formato pr prio Os desenvolvedores do Subversion t m o h bito de chamar esse ltimo mecanismo de FSFS 4 uma implementa o de si
508. s bin rios de imagem Harry deci diu modificar uma imagem JPEG Para prevenir que outras pessoas submetessem mu dan as no arquivo enquanto ele est modificando o bem como alertando os que ele est prestes a mud lo ele trava o arquivo no reposit rio usando o comando svn lock svn lock banana jpg m Editando arquivo para a libera o de amanh banana jpg locked by user harry Existe uma s rie de novas coisas demonstradas no exemplo anterior Primeiro note que Harry passou a op o message m para o comando svn lock Similar ao svn com mit o comando svn lock pode receber coment rios seja via message m OU file F para descrever a raz o do travamento do arquivo Ao contr rio do svn commit entretanto o svn lock n o exigir uma mensagem executando seu editor de tex atualmente o Subversion does n o permite travas em diret rios 59 T picos Avan ados to preferido Os coment rios de trava s o opcionais mas ainda recomendados para ajudar na comunica o Em segundo lugar a trava foi bem sucedida Isto significa que o arquivo n o estava trava do e que Harry tinha a mais recente vers o do arquivo Se o arquivo da c pia de trabalho de Harry estivesse desatualizado o reposit rio teria rejeitado a requisi o for ando Harry a executar svn update e tentar o comando de travamento novamente O comando de tra vamento tamb m teria falhado se o arquivo j estivesse travado por
509. s de conflito Este arquivo tem apenas as suas lti mas altera es feitas nele Se o Subversion considerar que o arquivo n o mescl vel ent o o arquivo mine n o criado uma vez que seria id ntico ao arquivo de tra balho filename rOLDREV Este o arquivo que estava na revis o BASE antes de voc atualizar sua c pia de tra balho Isto o arquivo em que voc pegou do reposit rio antes de fazer suas ltimas altera es filename rNEWREV Este o arquivo que seu cliente Subversion acabou de receber do servidor quando voc atualizou sua c pia de trabalho Este arquivo corresponde revis o HEAD do re posit rio Aqui OLDREV o n mero de revis o do arquivo em seu diret rio svn e NEWREV O n mero de revis o do reposit rio HEAD Como exemplo Sally faz modifica es no arquivo sandwich txt no reposit rio Harry acabou de alterar o arquivo em sua c pia de trabalho e o submeteu Sally atualiza sua c 27 Uso B sico pia de trabalho antes de executar um commit o que resulta em um conflito svn update C sandwich txt Updated to revision 2 ls 1 sandwich txt sandwich txt mine sandwich txt rl sandwich txt r2 Neste ponto o Subversion n o vai deixar que voc submeta o arquivo sandwich txt at que os tr s arquivos tempor rios sejam removidos svn commit m Add a few more things svn Commit failed details follow svn Aborting co
510. s de diversos m todos em um disco local atrav s de v rios protocolos de rede dependendo de como o ad ministrador configurou as coisas para voc Qualquer local no reposit rio entretanto sempre uma URL A Tabela Tabela 1 1 URLs de Acesso ao Reposit rio descre ve como diferentes esquemas de URLs mapeiam para os m todos de acesso dispo n veis Tabela 1 1 URLs de Acesso ao Reposit rio Esquema M todo de Acesso niles acesso direto ao reposit rio em um disco local Ines acesso via protocolo WebDAV em um servi dor Apache especialmente configurado 10 Conceitos Fundamentais Esquema M todo de Acesso ineicjios 3 mesmo que http mas com encripta o SSL svn acesso via protocolo pr prio em um servidor SWANS SIENA svn ssh mesmo que svn mas atrav s de um t nel SSH Para obter mais informa es sobre como o Subversion analisa as URLs veja URLs do Reposit rio Subversion Para obter mais informa es sobre os diferentes tipos de servidores de rede dispon veis para Subversion veja Cap tulo 6 Configura o do Servidor Revis es Uma opera o svn commit publica as altera es feitas em qualquer n mero de arquivos o diret rios como uma nica transa o at mica Em sua c pia de trabalho voc pode alte rar o conte do de arquivos criar deletar renomear e copiar arquivos e diret rios e ent o submeter
511. s do inetd A IANA reservou a porta 3690 para o protocolo Subversion assim em um sistema Unix like voc poderia adi cionar linhas como estas ao arquivo etc services se elas j n o existirem svn 3690 tcp Subversion svn 3690 udp Subversion E se seu sistema Unix like estiver usando um daemon inetd classico voc pode adicionar esta linha ao arquivo etc inetd conf svn stream tcp nowait svnowner usr bin svnserve svnserv i Assegure se de que svnowner seja um usu rio com permiss es apropriadas para aces so aos seus reposit rios Agora quando uma conex o do cliente atingir seu servidor na porta 3690 o inetd vai disparar um processo svnserve para atend la Obviamente voc tamb m pode querer adicionar a op o r para restringir quais reposit rios ser o exporta dos svnserve sobre um T nel Uma terceira forma de se invocar o svnserve no modo t nel com a op o t Este modo assume que um programa de acesso remoto como o RSH ou o SSH autenticou um usu rio com sucesso e est agora invocando um processo svnserve particular como aquele usu rio Note que voc o usu rio vai raramente ou talvez nunca precisar invo car o svnserve com a op o t na linha de comando j que o pr prio daemon SSH faz isso para voc O programa svnserve funciona normalmente se comunicando por meio do stdin e stdout e assume que o tr fego est sendo automaticamente redirecionado por algum tipo de t nel de v
512. s nos caminhos e revis es por ele providos Aqui est um exemplo de execu o 1oyoc n o pretendia dar um nome a ele Depois que voc d um nome voc come a a ficar ligado a ele Mike Wazowski N T Em ingl s o s mbolo de arroba lido como at que tem o sentido de em ou naquele lugar 2Main Street Wheaton 606 N Illinois o endere o do Wheaton History Center Sacou History Center Pa rece apropriado 69 T picos Avan ados svn command r OPERATIVE REV item PEG REV Se OPERATIVE REV for mais antiga que PEG REV ent o o algoritmo ser o seguin te Localize o item na revis o identificada por PEG REV Deve ser encontrado ape nas um nico objeto Trace o hist rico pregresso do objeto atrav s de eventuais renomea es ocorri das at seu ancestral na revis o OPERATIVE REV Execute a a o requisitada naquele ancestral onde quer que ele se encontre ou qualquer que seja o nome que ele tenha ou que tenha tido ao longo do tempo Mas e se OPERATIVE REV for mais recente que PEG REV Bem isso adiciona algu ma complexidade ao problema te rico de localiza o do caminho em OPERATIVE REV pois o hist rico do caminho pode ter sido ramificado v rias vezes gra as a opera es de c pia entre PEG REV e OPERATIVE REV E isso n o tudo de qualquer maneira o Subversion n o armazena informa o o suficiente para tra ar eficientemente o hist
513. sam conseguir ler suas folhas de estilo para que possam fazer uso delas Listando Reposit rios Se voc est servindo um conjunto de reposit rios a partir de uma nica URL por meio da diretiva SVNParent Path ent o tamb m poss vel fazer o Apache exibir todos os reposi t rios dispon veis para o navegador web Apenas ative a diretiva SVNListParentPath lt Location svn gt DAV svn SVNParentPath usr local svn SVNListParentPath on lt Location gt Se um usu rio agora apontar seu navegador web para a URL http host example com svn ele ir ver uma lista de todos os reposit rios Sub version situados em usr local svn E claro que isto pode representar um problema de seguran a por isso este recurso desabilitado por padr o Logs do Apache Pelo fato de o Apache ser um servidor HTTP por voca o ele possui recursos para log fantasticamente flex veis Est al m do escopo deste livro discutir todas as formas de log que podem ser configuradas mas ressaltamos que mesmo o arquivo httpd conf mais gen rico vai fazer com que o Apache produza dois arquivos de log error log e ac cess log Estes logs podem ficar em diferentes lugares mas comumente s o criados na rea de logs de sua instala o do Apache No Unix eles frequentemente ficam em usr local apache2 logs O error_log descreve quaisquer erros internos que ocorram com o Apache durante sua execu o J o arquivo access_log faz um registro de cada requi
514. schedules It is useful to know what pie ces of Subversion s repository data need to remain on the live site which need to be bac ked up and which can be safely removed How Subversion saves disk space To keep the repository small Subversion uses deltification or deltified storage within the repository itself Deltification involves encoding the representation of a chunk of data as a collection of differences against some other chunk of data If the two pieces of data are very similar this deltification results in storage savings for the deltified chunk rather than 122 Administra o do Reposit rio taking up space equal to the size of the original data it takes up only enough space to say look just like this other piece of data over here except for the following couple of chan ges The result is that most of the repository data that tends to be bulky namely the con tents of versioned files is stored at a much smaller size than the original fulltext repre sentation of that data And for repositories created with Subversion 1 4 or later the space savings are even better now those fulltext representations of file contents are themselves compressed tory is stored in a single Berkeley DB database file reducing the size of the stored values will not immediately reduce the size of the database file itself Berkeley DB will however keep internal records of unused areas of the data base file and
515. sclagens ou con flitos resultantes e tentar executar o commit novamente Isto conclui o ciclo b sico de trabalho no uso do Subversion H muitos outros recursos no Subversion que voc pode usar para gerenciar seu reposit rio e sua c pia de trabalho mas muito de seu uso cotidiano do Subversion vai envolver apenas os comandos que dis cutimos neste cap tulo Vamos entretanto abordar mais uns poucos comandos que voc tamb m pode usar bastante Examinando o Hist rico O seu reposit rio Subversion como uma m quina do tempo Ele mant m um registro de cada modifica o submetida e permite a voc explorar este hist rico examinando vers es anteriores de seus arquivos e diret rios bem como os metadados a eles relacionados Com apenas um comando do Subversion voc pode deixar o reposit rio ou restaurar uma c pia de trabalho existente exatamente como ele era em uma certa data ou em um n mero de revis o no passado Por m algumas vezes voc s quer revisitar o passado ao inv s de retornar ao passado H uma s rie de comandos que podem lhe mostrar dados hist ricos do reposit rio svn log Exibe bastante informa o mensagens de log com informa es de data e autor ane xadas s revis es e quais caminhos mudaram em cada revis o 31 Uso B sico svn diff Exibe detalhes a n vel das linhas de uma altera o em particular svn cat Recupera um arquivo como ele era em uma dada revis o e exibe seu cont
516. se executar o Svnserve como um processo daemon Isto pode ser feito tanto para restringir o acesso a partes do siste ma ou simplesmente para facilitar para que o usu rio n o tenha de digitar um caminho absoluto na URL svn ssh Tamb m poss vel ter m ltiplos usu rios compartilhando uma Unica conta Ao inv s de criar uma conta em separado no sistema para cada usu rio gere um par de chaves p bli ca privada para cada pessoa Ent o ponha cada chave p blica dentro do arquivo autho rized keys uma por linha e utilize a op o tunel user command svnserv E tunnel user harry TIPOl CHAVE1 harry example com command svnserv t tunnel user sally TIPO2 CHAVE2 sally example com Este exemplo permite que Harry e Sally se conectem mesma conta por meio da autenti ca o de chave p blica Cada um deles tem um comando espec fico a ser executado a op o tunnel user diz ao svnserve t para assumir que o argumento informado um nome de usu rio autenticado N o fosse pelo tunnel user pareceria como se to dos os commits viessem de uma nica mesma conta de sistema compartilhada Uma ltima palavra de precau o dando acesso ao usu rio atrav s de uma chave p blica numa conta compartilhada deve permitir ainda outras formas de acesso por SSH ainda que voc j tenha definido o valor do campo command no authorized keys Por exem plo o usu rio pode ainda ter acesso a um shell atrav s do SSH ou ser cap
517. ses tipos de problemas Assim por mais que que um reposit rio Berkeley DB seja bastante r pido e escal vel ele melhor aproveitado se for utilizado por um nico processo servidor executando como um nico usu rio como o httpd do Apache ou o svnserve veja Cap tulo 6 Configura o do Servidor ao inv s do que por v rios usu rios diferentes atrav s de URLs file ou svn ssh Se voc for usar um reposit rio em Berkeley DB diretamente para m ltiplos usu rios certifique se de ler Dando Suporte a M ltiplos M todos de Acesso ao Reposit no Em meados de 2004 um segundo tipo de sistema de armazenamento de reposit ri os um que n o usa um banco de dados nasceu Um reposit rio FSFS armazena as mudan as relacionadas com uma revis o em um nica arquivo e assim todas as revis es do reposit rio podem ser encontradas num nico subdiret rio que cont m arquivos nume rados Transa es s o criadas em subdiret rios diferentes como arquivos individuais Quando completa o arquivo de transa o renomeado e movido para o diret rio de revi s es garantindo assim que a transa o ser at mica Em fun o do arquivo de revis o 114 Administra o do Reposit rio ser permanente e imodific vel tamb m poss vel fazer uma c pia de seguran a quente assim como os reposit rios baseados em BDB Os arquivos de revis o FSFS decrevem uma estrutura de diret rios de uma revis o con
518. si o recebida pelo Apache Com isto fica f cil de ver por exemplo quais endere os IP dos clientes Subversi on que est o se conectando com que frequ ncia os clientes acessam o servidor quais usu rios est o devidamente autenticados e quantas requisi es tiveram sucesso ou fa lharam Infelizmente como o HTTP um protocolo sem informa o de estado mesmo a mais sim ples opera o de um cliente Subversion gera m ltiplas requisi es de rede E muito dif cil olhar o arquivo access 1og e deduzir o que o cliente estava fazendo muitas opera es se parecem uma s rie de obscuras requisi es PROPPATCH GET PUT REPORT Para piorar as coisas muitas opera es dos clientes enviam conjuntos de requisi es quase id nticas ent o ainda mais dif cil diferenci las O mod dav svn entretanto pode ajudar Ativando um recurso de log operacional voc pode pode instruir o mod dav svn a criar arquivos de log separados os tipos de opera es em alto n vel que os clientes est o executando Para fazer isso voc precisa usar a diretiva CustomLog do Apache a qual explicada em mais detalhes na pr pria documenta o do Apache Cuide para invocar esta diretiva fora do seu bloco Location do Subversion lt Location svn gt 165 Configura o do Servidor DAV svn lt Location gt CustomLog logs svn logfile t Su SVN ACTION e env SVN ACTION Neste exemplo solicitamos ao Apache
519. sion do suporte a propriedades Voc vai aprender sobre os subcomandos de svn que lidam com propriedades e como altera es nas propriedades afetam seu fluxo de trabalho normal no Subversion Por que Propriedades Como o Subversion usa propriedades para armazenar informa es extras sobre arquivos diret rios e revis es que as cont m voc tamb m pode usar propriedades de forma se melhante Voc poderia achar til ter um lugar pr ximo de seus dados versionados para 41 T picos Avan ados pendurar metadados personalizados sobre estes dados Digamos que voc quer elaborar um website que armazene muitas fotos digitais e as exi ba com legendas e a data e hora em que foram tiradas S que seu conjunto de fotos est mudando constantemente e voc gostaria de automatizar este site tanto quanto poss vel Estas fotos podem ser um pouco grandes ent o como muito comum em sites desse tipo voc quer disponibilizar pr vias em miniatura de suas fotos para os visitantes de seu site Agora voc pode ter esta funcionalidade usando arquivos tradicionais Isto voc pode ter seus arquivos image123 jpg image123 thumbnail jpg lado a lado em um dire t rio Ou se voc quiser manter os mesmos nomes de arquivos voc poderia ter suas mi niaturas em um diret rio diferente como thumbnails imagel23 jpg Voc tamb m pode armazenar suas legendas e datas e hor rios de forma parecida tamb m separadas do arquivo da fo
520. sion trabalha com os mecanismos dispon veis fornecidos pelo sis tema e ambiente operacional para tentar minimizar o risco de vazamento destas informa es Aqui est uma descri o de que isto significa para os usu rios nas plataformas mais comuns No Windows 2000 e posteriores o cliente Subversion utiliza os servi os de criptografia padr o do Windows para criptografar a senha no disco Devido a chave de criptografia ser gerenciada pelo Windows e ser vinculada s credenciais de ogin do pr prio usu rio somente o usu rio pode descriptografar a senha armazenada Note que se a senha da conta Windows do usu rio redefinida por um administrador todas as senhas armaze nadas se tornam indecifr veis O cliente Subversion se comportar como se elas n o existissem solicitando pelas senhas quando requeridas Similarmente no Mac OS X o cliente Subversion armazena todas as senha de reposit rio na cole o de chaves de login gerenciada pelo servi o Keychain o qual protegida pela senha da conta do usu rio As configura es de prefer ncias do usu rio podem im por pol ticas adicionais como exigir que a senha da conta do usu rio seja fornecida ca da vez que o Subversion utilize a senha e Para outros sistemas operacionais baseado em Unix nenhum servi o de keychain existe No entanto a rea de armazenamento auth ainda protegida por permiss o para que somente o usu rio propriet rio possa ler dados de
521. sistema de controle de vers o livre open source Isto o Subversion ge rencia arquivos e diret rios e as modifica es feitas neles ao longo do tempo Isto permite que voc recupere vers es antigas de seus dados ou que examine o hist rico de suas al tera es Devido a isso muitas pessoas tratam um sistema de controle de vers o como uma esp cie de m quina do tempo O Subversion pode funcionar em rede o que lhe possibilita ser usado por pessoas em di ferentes computadores Em certo n vel a capacidade de v rias pessoas modificarem e ge renciarem o mesmo conjunto de dados de seus pr prios locais o que fomenta a colabo ra o Progressos podem ocorrer muito mais rapidamente quando n o h um gargalo ni 2Tradu o Papai te ama e espera que voc goste de computadores assim como voc ir gostar de basquete basebol e futebol Isso seria bvio xviii Pref cio co por onde todas as modifica es devam acontecer E como o trabalho est versionado voc n o precisa ter medo de que seu trabalho perca qualidade por n o ter essa via nica para modifica es se os dados sofrerem alguma modifica o indevida apenas desfa a tal modifica o Alguns sistemas de controle de vers o tamb m s o sistema de gerenciamento de configu ra o GC Estes sistemas s o especificamente desenvolvimento para gerenciar rvores de c digo fonte e possuem muitos recursos espec ficos para o desenvolvimento
522. sk the administrator to create a pre revprop change hook Initialize a repository as a mirror having already created a pre revprop change hook which permits all revision property changes svnsync initialize file opt svn repos mirror http svn example com repos Copied properties for revision 0 302 Refer ncia Completa do Subversion Nome svnsync synchronize Transfer all pending revisions from the source repository to the mirror repository Sinopse svnsync synchronize DEST URL Descri o The svnsync synchronize command does all the heavy lifting of a repository mirroring operation After consulting with the mirror repository to see which revisions have already been copied into it it then begins copying any not yet mirrored revisions from the source repository svnsync synchronize can be gracefully cancelled and restarted Nomes Alternativos sync Op es non interactive no auth cach username NAME password PASS config dir DIR Exemplos Copy unsynchronized revisions from the source repository to the mirror repository svnsync synchronize file opt svn repos mirror Committed revision 1 Copied properties for revision 1 e Committed revision 2 Copied properties for revision 2 Committed revision 3 Copied properties for revision 3 Committed revision 45 Copied properties for revision 45 Committed revision 46 Copied p
523. so que voc quase n o vai ouvir os usu rios do Subversion reclamando de C pias Leves cheap copies N o importa o qu o grande o diret rio a c pia sempre ser feita em um pequeno e constante espa o de tempo Na verdade essa funcionalidade a base do funcionamento do commit no Subversion cada revis o uma c pia leve da revis o anterior com algumas ligeiras modifica es em alguns itens para ler mais sobre esse assunto visite o website do Subversion e leia o m to do bubble up nos documentos de design do Subversion Claro que estes mecanismos internos de copiar e compartilhar dados est o escondi dos do usu rio que v apenas c pias das rvores de arquivos O ponto principal aqui que as c pias s o leves tanto em tempo quanto em tamanho Se voc criar um ramo inteiro dentro do reposit rio usando o comando svn copy URL1 URL2 ser uma opera o r pida e de tempo constante Crie ramos sempre que quiser Trabalhando com o seu Ramo Agora que voc criou um ramo do projeto voc pode fazer um Checkout para uma nova c pia de trabalho e us la svn checkout http svn example com repos calc branches my calc branch A my calc branch Makefile A my calc branch integer c A my calc branch button c Checked out revision 341 N o tem nada de especial nessa c pia de trabalho ela simplesmente aponta para um di ret rio diferente no reposit rio Entretanto quando voc faz o co
524. sob controle de vers o N Executar n o recursivamente n o descer para os subdiret rios O comando status tem dois formatos de sa da No formato curto padr o modifica es locais parecem com isto svn status M foo c M bar baz c Se voc especificar a op o show updates u um formato mais longo de sa da usado S svn status u M 1047 foo c 1045 faces html bloo png M 1050 bar baz c Status against revision 1066 326 Subversion para Usu rios de CVS Neste caso duas novas colunas aparecem A segunda coluna cont m um asterisco se o arquivo ou diret rio est desatualizado A terceira coluna mostra o n mero de revis o da c pia de trabalho do item No exemplo acima o asterisco indica que faces html seria alterado se n s atualiz ssemos e que bloo png um arquivo rec m adicionado ao re posit rio A falta de qualquer n mero de revis o pr ximo a bloo png significa que ele ainda n o existe na c pia de trabalho A esta altura voc deve dar uma r pida olhada na lista de todos os c digos de status pos s veis em svn status Aqui est o alguns dos c digos de status mais comuns que voc ve r recurso est programado para Adi o recurso est programado para exclus o recurso tem Modifica es locais recurso tem Conflitos as mudan as n o foram completamente fundidas entre o reposit rio e a vers o da c pia de trabalho recurso eXterno a esta c pia de
525. specification is break which means that no more property changes should be applied to that path If the control specification is cont an abbreviation for cont inue then matching will continue with the next line of the configuration file Any whitespace in the regular expression property name or property value must be surro unded by either single or double quote characters You can escape quote characters that are not used for wrapping whitespace by preceding them with a backslash character The backslash escapes only quotes when parsing the configuration file so do not protect any other characters beyond what is necessary for the regular expression Sum rio N s cobrimos muito ch o nesse cap tulo N s discutimos conceitos de r tulotags e ramos branches e demonstramos como Subversion implementa estes conceitos atrav s da c pia de diret rios com o comando svn copy N s mostramos como usar svn merge para copiar mudan as de um ramo branch para outro ou reverter mudan as indesejadas N s passamos pelo uso do svn switch para criar locais mistos de copias de trabalho E n s fa lamos sobre como eles podem gerenciar a organiza o e vida dos ramos branches em um resposit rio Lembre se do mantra do Subversion ramos branches e r tulos tags s o baratos Ent o use os livremente Ao mesmo tempo n o esque a de usar bons h bitos de fus o merge C pias baratas s o teis apenas quando voc cuidadoso ao rastrear suas
526. st familiarizado com o modelo geral do Subversion Para uma refer ncia completa de todos os comandos veja Cap tulo 9 Refer ncia Completa do Subversion Help Antes de continuar a leitura aqui est o comando mais importante que voc precisar quando usar o Subversion svn help O cliente de linha de comando do Subversion au to documentado a qualquer momento um r pido svn help SUBCOMANDO descrever a sintaxe op es e comportamento do subcomando svn help import import Faz commit de um arquivo n o versionado ou rvore no reposit rio uso import CAMINHO URL Recursivamente faz commit de uma c pia de CAMINHO para URL Se CAMINHO omitido assumido Diret rios pais s o criados conforme necess rio no reposit rio Se CAMINHO um diret rio seu conte do ser adicionado diretamente abaixo de URL Op es v lidas q quiet imprime o m nimo poss vel N non recursive opera somente em um diret rio Colocando dados em seu Reposit rio H dois modos de colocar novos arquivos em seu reposit rio Subversion svn import e svn add Discutiremos svn import aqui e svn add mais adiante neste cap tulo quando analisarmos um dia t pico com o Subversion svn import O comando svn import um modo r pido para copiar uma rvore de arquivos n o versio nada em um reposit rio criando diret rios intermedi rios quando necess rio svn import n o requer uma c pia de trabalho e seus
527. st namely that restoring that data can take a long time longer with each new revision committed to your repository Also as is the case with so many of the various backup methods revision property changes made to already backed up revisions won t get picked up by a non overlapping incremental dump generation For these rea sons we recommend against relying solely on dump based backup approaches As you can see each of the various backup types and methods has its advantages and di sadvantages The easiest is by far the full hot backup which will always result in a perfect working replica of your repository Should something bad happen to your live repository you can restore from the backup with a simple recursive directory copy Unfortunately if you are maintaining multiple backups of your repository these full copies will each eat up just as much disk space as your live repository Incremental backups by contrast tend to be quicker to generate and smaller to store But the restoration process can be a pain of ten involving applying multiple incremental backups And other methods have their own pe culiarities Administrators need to find the balance between the cost of making the backup and the cost of restoring it The svnsync program see Repository Replication actually provides a rather handy middle ground approach If you are regularly synchronizing a read only mirror with your main repository then in a pinch your read only
528. stema de arquivos versionado que usa diretamente o sistema de arquivos nativo do Sistema Operacional ao inv s de uma biblioteca de banco de da dos ou outra camada de abstra o para armazenar os dados Tabela 5 1 Comparativo dos Mecanismos de Armazenamento fornece um comparativo geral dos reposit rios Berkeley DB e FSFS Tabela 5 1 Comparativo dos Mecanismos de Armazenamento Frequentemente pronunciado como fuzz fuzz a menos que Jack Repenning tenha algo a dizer sobre isso Este livro entretanto assume que o leitor est pensando efe esse efe esse 111 Administra o do Reposit rio Categoria Caracter stica Berkeley DB FSFS Confiabilidade Integridade dos Da dos quando corretamente implementado ex tremamente confi vel Berkeley DB 4 4 oferece auto recupera o vers es antigas t m bugs que comprome tem os dados mas essas situa es acontecem raramen te Sensibilidade a inter rup es grande travamentos e problemas de per miss es podem dei xar a base de dados quebrada requirin do procedimentos bastante insens vel Acessibilidade Us vel de uma siste ma de arquivos mon tado como somente leitura para recupera o n o sim Armazenamento in dependente de plata forma Us vel em sistemas de arquivos de rede n o geralmente n o sim sim Tratamento de per miss es em grupo se
529. svn veja Por dentro da Area de Administra o da C pia de Trabalho neste cap tulo A biblioteca do cliente Subversion libsvn client tem uma responsabilidade mais abran gente seu trabalho combinar a funcionalidade da biblioteca de c pia de trabalho com as da Camada de Acesso ao Reposit rio e ent o oferecer uma API de alto n vel para qual quer aplica o que desejar realizar a es gerais de controle de revis o Por exemplo a fun o svn client checkout pega uma URL como argumento Ela passa esta URL para a camada de RA e abre uma sess o autenticada com um determinado reposit rio Ela ent o pede ao reposit rio por uma certa rvore e envia esta rvore para a biblioteca de c pia de trabalho que ent o escrever toda a c pia de trabalho no disco o diret rio svn e tudo mais A biblioteca cliente projetada para ser usada por qualquer aplica o Enquanto o c digo fonte do Subversion inclui um cliente de linha de comando padr o deveria ser muito f cil escrever qualquer n mero de clientes GUI sob essa biblioteca cliente Novas interfaces gr ficas ou qualquer novo cliente para o Subversion n o precisam ser inv lucros desajei tados sobre o cliente de linha de linha de comando elas possuem acesso total pela API de libsvn client s mesmas funcionalidades dados e mecanismos de resposta que o cli ente de linha de comando usa De fato a rvore do c digo fonte do Subversion cont m um pequeno programa em
530. svnadmin rmtxns which will perform the cleanup of the transaction In fact the rmtxns subcommand can take its input directly from the out put of Istxns svnadmin rmtxns myrepos svnadmin lstxns myrepos If you use these two subcommands like this you should consider making your repository temporarily inaccessible to clients That way no one can begin a legitimate transaction be fore you start your cleanup Exemplo 5 1 txn info sh Reporting Outstanding Transacti ons contains a bit of shell scripting that can quickly generate information about each outs tanding transaction in your repository Exemplo 5 1 txn info sh Reporting Outstanding Transactions bin sh 123 Administra o do Reposit rio Generate informational output for all outstanding transactions in a Subversion repository REPOS 1 if xSREPOS x then echo usage 0 REPOS_PATH exit fi for TXN in svnadmin lstxns S REPOS do echo Transaction S TXN svnlook info S REPOS t S TXN done The output of the script is basically a concatenation of several chunks of svnlook info out put see svnlook and will look something like txn info sh myrepos Transaction 19 sally 2001 09 04 11 57 19 0500 Tue 04 Sep 2001 0 Transaction 3al harry 2001 09 10 16 50 30 0500 Mon 10 Sep 2001 39 Trying to commit over a faulty network Transaction a45 sally 2
531. t rio O termo check out pode soar como algo que tem a ver com locking ou com reserva de recursos o que n o verdade ele simplesmente cria uma c pia privada do projeto pa ra voc Por exemplo se voc fizer check out de calc voc receber uma c pia de tra balho como esta svn checkout http svn example com repos calc A calc Makefile A calc integer c A calc button c Checked out revision 56 ls A calc Makefil integer c button c svn A lista de letras A na margem esquerda indica que o Subversion est adicionando um cer to n mero de itens sua c pia de trabalho Voc tem agora uma c pia pessoal do diret rio calc do reposit rio com uma entrada adicional svn a qual det m as informa es extras que o Subversion precisa conforme mencionado anteriormente Suponha que voc fa a altera es no arquivo button c Visto que o diret rio svn se lembra da data de modifica o e conte do do arquivo original o Subversion tem como sa ber que voc modificou o arquivo Entretanto o Subversion n o torna as suas altera es Conceitos Fundamentais p blicas at voc explicitamente lhe dizer para fazer isto O ato de publicar as suas altera es conhecido como committing ou checking in no reposit rio Para publicar as suas altera es para os outros voc deve usar o comando commit do Subversion svn commit button c m Fixed a typo in button c Sending button c T
532. t rio Require valid user lt Location gt Algumas vezes voc n o precisa de regras t o r gidas Por exemplo o pr prio reposit rio do c digo fonte do Subversion em http svn collab net repos svn permite a qualquer um no mundo executar tarefas somente leitura no reposit rio como verificar c pias de traba lho e navegar pelo reposit rio com um navegador web mas restringe todas as opera es de escrita a usu rios autenticados Para fazer este tipo de restri o seletiva voc pode usar as diretivas de configura o Limit e LimitExcept Como a diretiva Location es tes blocos possuem tags de abertura e de fechamento e voc deve inser las dentro de seu bloco lt Location gt Os par metros presentes nas diretivas Limit e LimitExcept s o tipos de requisi es HTTP que s o afetadas por aquele bloco Por exemplo se voc quiser desabilitar todo o acesso a seu reposit rio exceto as opera es somente leitura atualmente suportadas vo c deve usar a diretiva LimitExcept passando os tipos de requisi o GET PROPFIND OPTIONS REPORT como par metros Ent o a j mencionada diretiva Require valid user deve ser colocada dentro do bloco lt LimitExcept gt ao inv s de apenas dentro do bloco lt Location gt lt Location svn gt DAV svn SVNParentPath usr local svn como autenticar um usu rio AuthType Basic AuthName Subversion repository AuthUserFile caminho do arquivo users
533. t your dump files tweaking the Node path and Node copyfrom path headers to no longer have that first calc path component Also you ll want to remove the section of dump da ta that creates the calc directory It will look something like Node path calc Node action add Node kind dir Content length 0 make sure that your editor is not set to automatically convert end of line cha racters to the native format e g r n to n as the content will then not agree with the metadata This will render the dump file useless If you do plan on manually editing the dump file to remove a top level directory All that remains now is to create your three new repositories and load each dump file into the right repository 131 Administra o do Reposit rio svnadmin create calc svnadmin load calc lt calc dumpfile lt lt lt Started new transaction based on original revision 1 adding path Makefile done adding path button c done svnadmin create calendar svnadmin load calendar lt cal dumpfile lt lt lt Started new transaction based on original revision 1 adding path Makefile done adding path cal c done svnadmin create spreadsheet svnadmin load spreadsheet lt ss dumpfile lt lt lt Started new transaction based on original revision 1 adding path Makefile done adding path ss c done Both of svndumpfilter s subcommands accept options
534. table across machine architectures this format is a useful way to transfer those da tabases from machine to machine irrespective of architecture or operating system As we describe later in this chapter you can also use svnadmin dump and svnadmin load for similar purposes but db dump and db load can do certain jobs just as well and much faster They can also be useful if the experienced Berkeley DB hacker needs to do in place tweaking of the data in a BDB backed repository for some reason which is something Sub version s utilities won t allow Also the db stat utility can provide useful information about the status of your Berkeley DB environment including detailed statistics about the locking and storage subsystems For more information on the Berkeley DB tool chain visit the documentation section of the Berkeley DB section of Oracle s website located at http www oracle com technology documentation berkeley db db Commit Log Message Correction Sometimes a user will have an error in her log message a misspelling or some misinfor mation perhaps If the repository is configured using the pre revprop change hook see Implementando Ganchos de Reposit rio to accept changes to this log message af ter the commit is finished then the user can fix her log message remotely using the svn program s propset command see svn propset However because of the potential to lo se information forever Subversion repositories are not
535. tando pingo de fornecedor 1 0 inicial Temos agora a vers o atual do c digo fonte de libcomplex em ven dor libcomplex current Agora vamos rotular essa vers o ver R tulos e ent o copi la para o ramo principal de desenvolvimento Nosso c pia criar um novo diret rio 103 Fundir e Ramificar chamado 1ibcomplex no nosso diret rio de projeto calc j existente nesta vers o co piada dos dados do fornecedor que n s vamos fazer nossas personaliza es svn copy http svn exemplo com repos vendor libcomplex current A http svn exemplo com repos vendor libcomplex 1 0 N m rotulando libcomplex 1 0 svn copy http svn exemplo com repos vendor libcomplex 1 0 N http svn exemplo com repos calc libcomplex N m trazendo libcomplex 1 0 para o ramo principal N s obtemos uma c pia do ramo principal do nosso projeto que agora inclui uma c pia do primeiro pingo de fornecedor e come amos a trabalhar personalizando o c digo de libcomplex Antes que saibamos nossa vers o modificada de libcomplex agora est com pletamente integrada ao nosso programa da calculadora Algumas semanas depois os desenvolvedores da libcomplex lan am uma nova vers o da sua biblioteca vers o 1 1 que cont m algumas caracter sticas e funcionalidades que n s queremos muito N s gostar amos de atualizar para esta nova vers o mas sem per der as personaliza es que fizemos na vers o existente O que n s essencialme
536. tatus calc calc button c calc data c ss Agora todas aqueles res duos n o s o apresentados nos resultados Certamente seu programa compilado calculator e todos aqueles arquivos de registro est o ainda em sua c pia de trabalho O Subversion est simplesmente n o lembrando voc que eles es t o presentes e n o versionados E agora com todos os arquivos desinteressantes remo vidos dos resultados voc visualizar somente os itens mais interessantes assim como o arquivo de c digo fonte data c que voc provavelmente esqueceu de adicionar ao con trole de vers o Evidentemente este relat rio menos prolixo da situa o de sua c pia de trabalho n o a nica dispon vel Se voc realmente quiser ver os arquivos ignorados como parte do rela t rio de situa o voc pode passar a op o no ignore para o Subversion svn status no ignore M calc M calc button c calc calculator calc data c calc debug_log calc debug_log 1 calc debug_log 2 gz calc debug_log 3 gz HHHHWH Como mencionado anteriormente a lista de filtros de arquivos a ignorar tamb m usada pelos comandos svn add e svn import Estas duas opera es implicam solicitar ao Sub version iniciar o gerenciamento de algum conjunto de arquivos e diret rios Ao inv s de for ar o usu rio a escolher quais arquivos em uma rvore ele deseja iniciar o versiona mento o Subversion usa os filtros de rejei o tanto a lista global quanto a por diret
537. te do dos arquivos e diferen as em rela o aos arquivos em outras rvores de revis o Ao contr rio das baseas de dados Berkeley DB esse formato de armazenamento port vel em muitos sistemas operacionais e n o sens vel a arquitetura de CPU Em fun o de n o haver journaling ou arquivos com mem ria compartilhada o reposit rio pode ser aces sado com seguran a a partir de um sistema de arquivos de rede e examinado em um am biente somente para leitura A inexist ncia da sobrecarga de um banco de dados tamb m significa que o tamanho total do reposit rio tamb m um pouco menor FSFS tem caracter stica de desempenho diferentes tamb m Quando se submete um dire t rio com um alto n mero de arquivos o FSFS capaz de rapidamente atualizar as entra das de diret rio Por outro lado FSF escreve a ltima vers o de um arquivo como um del ta em rela o uma vers o anterior o que significa que obtee a ltima rvore de diret ri os um pouco mais lento do que obter os textos completos armazenados em uma revis o HEAD no Berkeley DB O FSFS tamb m possui uma certa demora na finaliza o de uma submiss o 0 que em casos extremos pode causar timeout no cliente A diferen a mais importante entretanto o formato inabal vel do FSFS quando alguma coisa errada acontece Se ocorre um problema qualquer com um processo que est usan do um banco de dados Berkeley DB o banco de dados pode ficar em um estado que n
538. te diverte se ao fazer uma otimiza o extremamente r gida do programa 194 Incorporando o Subversion consumida por todos os objetos que voc alocou nele Dessa forma em vez de man ter o controle individual de objetos que precisam ser desalocados seu programa simplesmente considera o tempo de vida total desses objetos e aloca os objetos em um recipiente cujo tempo de vida o tempo entre a cria o do recipiente e sua exclu s o coincide a necessidade do objeto Requisitos de URL e Caminho Com opera o remota de controle de vers o como o ponto de toda a exist ncia do Sub version faz sentido que alguma aten o seja dada ao suporte de internacionaliza o 18n Afinal enquanto o remoto possa significar em todo o escrit rio poderia perfeita mente dizer em todo o globo Para facilitar isto todas as interfaces p blicas do Subversi on que aceitam argumentos de caminho esperam que esses caminhos sejam canonicali zados e codificados em UTF 8 Isto significa por exemplo que qualquer novo cliente bin rio que realiza a interface libsvn client precisa primeiro converter os caminhos a partir da codifica o espec fica da localidade para a UTF 8 antes de passar esses caminhos para as bibliotecas do Subversion e ent o reconverter qualquer dos caminhos de sa da resul tantes do retorno do Subversion para a codifica o da localidade antes de usar esses ca minhos para prop sitos fora do S
539. te re curso Quanto aos custos vis veis tem se que o servidor precisa de muito mas esfor o para garantir que cada usu rio tenha o acesso correto de leitura ou escrita em ca da caminho espec fico em certas circunst ncias h uma sens vel perda de desem penho Quanto aos custos invis veis considere a cultura que voc est criando Na maior parte do tempo ainda que certos usu rios n o devessem estar registrando al tera es em certas partes do reposit rio este contrato social n o precisa ser refor ado tecnologicamente Algumas vezes as equipes podem colaborar umas com as outras espontaneamente algu m pode querer ajudar a algum outro fazendo altera es em alguma parte na qual n o trabalha normalmente Ao prevenir este tipo de coisa a n vel de servidor voc est criando inesperadas barreiras colabora o Vo c tamb m est criando um monte de regras que dever o ser mantidas conforme os projetos s o desenvolvidos novos usu rios s o adicionados e por a vai E muito trabalho extra para manter Lembre se de que isto um sistema de controle de vers o Mesmo que algu m aci dentalmente fa a alguma altera o em algo que n o deveria f cil desfazer a alte ra o E se um usu rio registrar uma modifica o intencionalmente no lugar errado isto um problema social de qualquer maneira e este um problema que precisar ser tratado fora do Subversion Ent o antes de come ar a restringir os d
540. tere de conten o SRev 13 S Revis o da ltima submiss o SAuthor harry Autor da ltima submiss o SDate 2006 03 15 0 S Data da ltima submiss o O uso de palavras chave de comprimento fixo especialmente til quando executamos substitui es em formatos de arquivo complexos que por si mesmo usam campos de com primento fixo nos dados ou que o tamanho armazenado de um determinado campo de dados predominantemente dif cil de modificar fora da aplica o original do formato assim como para documentos do Microsoft Office Esteja ciente que pelo fato da largura do campo de uma palavra chave me dida em bytes o potencial de corrup o de valores de multi byte existe Por exemplo um nome de usu rio que cont m alguns caracteres multi byte em UTF 8 pode sofrer truncamento no meio da sequ ncia de bytes que comp em um desses caracteres O resultado ser um mero truncamento quando visuali zado n vel de byte mas provavelmente aparecer como uma cadeia com um caractere adicional incorreto ou ileg vel quando exibido como texto em UTF 8 E conceb vel que certas aplica es quando solicitadas a carregar o arquivo notariam o texto em UTF 8 quebrado e ainda considerem todo o ar quivo como corrompido recusando se a operar sobre o arquivo de um modo geral Portanto ao limitar palavras chave para um tamanho fixo escolha um tamanho que permita este tipo de expans o ciente dos bytes Travamento O modelo de contr
541. tering quite literally If you are trying to copy the history of a project rooted at trunk my project and move it into a repository of its own you would of course use the svndumpfilter include command to keep all the changes in and under trunk my project But the resulting dump file makes no assumptions about the repository into which you plan to load this data Specifically the dump data might begin with the revision which added the trunk my project directory but it will not contain di rectives which would create the trunk directory itself because trunk doesn t match the include filter You ll need to make sure that any directories which the new dump stream ex pect to exist actually do exist in the target repository before trying to load the stream into that repository Repository Replication There are several scenarios in which it is quite handy to have a Subversion repository who se version history is exactly the same as some other repository s Perhaps the most obvi ous one is the maintenance of a simple backup repository used when the primary reposi tory has become inaccessible due to a hardware failure network outage or other such an noyance Other scenarios include deploying mirror repositories to distribute heavy Subver sion load across multiple servers use as a soft upgrade mechanism and so on As of version 1 4 Subversion provides a program for managing scenarios like these svnsync svnsync works by essentially asking th
542. thorized keys Cada linha neste arquivo descreve uma chave p blica com permiss o para conectar As linhas s o comumente da forma ssh dsa AAAABtce9euch user example com O primeiro campo descreve o tipo da chave o segundo campo a chave em si codificada em base64 e o terceiro campo um coment rio Por m pouco conhecido o fato de que a linha inteira pode ser precedida por um campo command command program ssh dsa AAAABtce9euch user example com 151 Configura o do Servidor Quando o campo command definido o daemon SSH ir rodar o programa descrito em vez da t pica invoca o svnserve t que o cliente Subversion est esperando Isto abre espa o para um conjunto de truques no lado do servidor Nos exemplos a seguir abrevia mos a linha do arquivo para command program TIPO CHAVE COMENT RIO Controlando o comando invocado Pelo fato de podermos especificar o comando executado no lado do servidor f cil deter minar um bin rio svnserve espec fico para rodar e para o qual passar argumentos extras Gl command caminho do svnserve t r virtual root TIPO CHAV COMENTARIO Neste exemplo caminho do svnserve pode ser um script especifico que encapsule uma chamada ao svnserve e que configure o umask veja Dando Suporte a M ltiplos M todos de Acesso ao Reposit rio O exemplo tamb m mostra como prender o svnser ve em um diret rio raiz virtual tal como sempre ocorre ao
543. tica 2Entretanto neste exato momento essa funcionalidade est sendo preparada 86 Fundir e Ramificar Visualizando Fus es Primeiro lembre se de fundir seus arquivos para a c pia de trabalho quando esta n o tiver altera es locais e tenha sido atualizada recentemente Se a sua c pia de trabalho n o estiver limpa voc pode ter alguns problemas Assumindo que a sua c pia de trabalho est no ponto fazer a fus o n o ser uma opera o de alto risco Se voc n o fizer a primeira fus o de forma correta rode o comando svn revert nas modifica es e tente novamente Se voc fez a fus o para uma c pia de trabalho que j possui modifica es locais a mu dan as aplicadas pela fus o ser o misturadas as pr existentes e rodar o comando svn revert n o mais uma op o Pode ser imposs vel de separar os dois grupos de modifica es Em casos como este as pessoas se tranquilizam em poder prever e examinar as fus es antes de ocorrerem Uma maneira simples de fazer isso rodar o comando svn diff com os mesmos argumentos que voc quer passar para o comando svn merge como mostra mos no primeiro exemplo de fus o Outro m todo de prever os impactos passar a op o dry run para o comando de fus o svn merg dry run c 344 http svn example com repos calc trunk U integer c svn status nothing printed working copy is still unchanged A op o dry run n o aplica qualquer
544. tion gt Tendo se decidido por um destes tr s modelos b sicos de httpd conf voc ent o pre cisa criar seu arquivo contendo regras de acesso para determinados caminhos dentro do reposit rio Isto descrito em Autoriza o Baseada em Caminhos Desabilitando Verifica o baseada em Caminhos O m dulo mod dav svn realiza bastante trabalho para se assegurar de que os dados que voc marcou como unreadable n o sejam corrompidos acidentalmente Isto significa que ele precisa monitorar de perto todos os caminhos e conte dos de arquivos retornados por comandos como svn checkout ou svn update Se estes comandos encontram um caminho que n o seja leg vel de acordo com alguma pol tica de autoriza o ent o tipica mente o caminho como um todo omitido No caso de hist rico ou acompanhamento de renomea es p ex ao se executar um comando como svn cat r OLD foo c em um ar quivo que foi renomeado ha bastante tempo o acompanhamento da renomea o ir sim plesmente parar se um dos nomes anteriores do objeto for determinado como sendo de leitura restrita Toda esta verifica o de caminhos algumas vezes pode ser um pouco custosa especial mente no caso do svn log Ao obter uma lista de revis es o servidor olha para cada cami nho alterado em cada revis o e verifica sua legibilidade Se um caminho ileg vel desco berto ent o ele omitido da lista de caminhos alterados da revis o normalmente vista com a op
545. tipos de informa o um certificado de servidor uma demanda por um certificado de cliente Se o cliente recebe um certificado de servidor ele precisa verificar se confia no certificado o servidor quem ele realmente diz ser A biblioteca OpenSSL faz isto examinando o as sinador do certificado de servidor ou autoridade certificadora AC Se o OpenSSL for inca paz de confiar automaticamente na AC ou se algum outro problema ocorrer como o certi ficado ter expirado ou o hostname n o corresponder o cliente de linha de comando do Subversion vai lhe perguntar se voc quer confiar no certificado do servidor de qualquer maneira svn list https host example com repos project Error validating server certificate for https host example com 443 The certificate is not issued by a trusted authority Use the fingerprint to validate the certificate manually Certificate information Hostname host example com Valid from Jan 30 19 23 56 2004 GMT until Jan 30 19 23 56 2006 GMT Issuer CA example com Sometown California US Fingerprint 7d el a9 34 33 39 ba 6a e9 a5 04 22 98 7b 76 5c 92 a0 9c 7b R eject accept t emporarily or accept p ermanently Este di logo deve parecer familiar essencialmente a mesma pergunta que voc prova velmente j tenha visto vindo de seu navegador web o qual apenas outro cliente HTTP como o cliente Subversion Se voc escolher a op o p ermanente o certif
546. tiver encontrado quaisquer diferen as ou 0 em caso contrario qualquer outro c digo resultante considerado como um erro fatal Exemplo 7 2 diffwrap sh e Exemplo 7 3 diffwrap bat s o modelos para scripts encap suladores para ferramentas diff externas em formato de arquivos shell Bourne e batch do Windows respectivamente Exemplo 7 2 diffwrap sh bin sh Configura seu programa diff preferido aqui DIFF usr local bin my diff tool O Subversion disp e dos caminhos que precisamos como o sexto e s timo par metros LEFT S 6 RIGHT 7 Chama o comando diff modifique a linha a seguir de acordo com seu programa SDIFF left SLEFT right RIGHT Retorna um c digo d rro de 0 se nenhumas diferen as forem encontradas ou 1 em caso contr rio Qualquer outro c digo de erro ser considerado como fatal Exemplo 7 3 diffwrap bat GI ECHO OFF REM Configura seu programa diff preferido aqui SET DIFF C Program Files Funky Stuff My Diff Tool exe REM O Subversion disp e dos caminhos que precisamos como o sexto e REM s timo par metros SET LEFT 6 SET RIGHT REM Chama o comando diff modifique a linha a seguir de acordo com seu REM programa SDIFF left SLEFTS right SRIGHT Retorna um c digo d rro de 0 se nenhumas diferen as forem encontradas ou 1 em caso contr rio Qualquer outro c digo de erro ser considerado como fatal td ta
547. to ele informa ao Subversion que o conflito foi resolvido Leia Resolvendo Conflitos Combinando Altera es de Outros para uma vis o mais aprofundada sobre resolu o de conflitos Nomes Alternativos Nenhum Altera C pia de trabalho Acessa o Reposit rio N o Op es targets FILENAME recursive R quiet q config dir DIR Exemplos Se voc obtiver um conflito em uma atualiza o sua c pia de trabalho ir gerar tr s novos arquivos svn update G 00 Updated to revision 31 S ls foo c foo c mine foo c r30 foo c r31 Uma vez que voc tenha resolvido o conflito e que foo c esteja pronto para ser submeti do execute o comando svn resolved para fazer com que sua c pia de trabalho saiba que voc j cuidou de tudo Voc pode apenas remover os arquivos relacionados ao conflito e realizar a opera o de commit mas o svn resolved corrige alguns dados de registro na rea administrativa na c pia de trabalho al m de remover os arquivos conflitu 252 Refer ncia Completa do Subversion osos de forma que recomendamos que voc utilize este comando 253 Nome svn revert Desfaz todas as edi es locais Sinopse Refer ncia Completa do Subversion svn revert PATH Descri o Reverte quaisquer altera es feitas em um arquivo ou diret rio e resolve quaisquer esta dos de conflito svn revert n o apenas ir reverter o conte
548. to criptografado protegido por uma senha local Quando o Subversion recebe este desafio ele solicitar a voc tanto o caminho do certificado quando a senha que o protege svn list https host example com repos project Authentication realm https host example com 443 Client certificate filename caminho do meu cert p12 Passphrase for caminho do meu cert p1l2 x Note que o certificado do cliente um arquivo no formato p12 Para usar um certificado de cliente com o Subversion este deve estar no formato PKCS 12 que um padr o por t vel A maioria dos navegadores j s o capazes de importar e exportar certificados neste formato Outra op o usar as ferramentas de linha de comando do OpenSSL para con verter certificados existentes para PKCS 12 Novamente o arquivo em tempo de execu o servers permite a voc automatizar este desafio numa configura o baseada em host Qualquer um ou mesmo os dois tipos de in forma o podem estar descritos em vari veis em tempo de execu o groups xamplehost host example com examplehost ssl client cert fil caminho do meu cert p12 ssl client cert password somepassword Uma vez que voc tenha definido as vari veis ssl client cert file e ssl client cert password O cliente Subversion pode automaticamente responder a um desafio de certificado de cliente sem solicitar nada a voc Op es de Autoriza o At este ponto voc con
549. to de volta al m da opera o de c pia que criou o ramo Ent o normalmente voc ir ver o hist rico do tronco tamb m A op o stop on copy ir parar a sa da do log assim que o svn log detecte que seu alvo foi copiado ou renomeado Assim no caso de nosso exemplo S svn log v stop on copy N http svn example com repos calc branches my calc branch r341 user 2002 11 03 15 27 56 0600 Thu 07 Nov 2002 Changed paths A calc branches my calc branch from calc trunk 340 Como esperado a ltima revis o exibida por este comando a revis o na qual o ramo my calc branch foi criado por c pia 90 Fundir e Ramificar E ent o aqui est o ltimo procedimento para mesclagem S cd calc trunk svn update At revision 405 svn merge r 341 405 http svn example com repos calc branches my calc branc U integer c U button c U akefile S svn status integer c button c akefile examine os diffs compila es testes etc svn commit m Merged my calc branch changes r341 405 into the trunk Sending integer c Sending button c Sending Makefile Transmitting file data Committed revision 406 Novamente perceba que a mensagem de log do commit menciona bem especificamente o intervalo de modifica es que foram mescladas para o tronco Sempre se lembre de fa zer isso pois uma informa o cr tica de que voc ir precisar depois Por exemplo
550. to original Mas o problema aqui que o conjunto de arquivos aumenta aos m ltiplos para cada nova foto adicionada ao site Agora considere o mesmo website desenvolvido de forma a fazer uso das propriedades de arquivo do Subversion Imagine ter um nico arquivo de imagem image123 jpg e ent o propriedades definidas neste arquivo chamadas caption datestamp ou mesmo thumbnail respectivamente para a legenda data e hora e miniatura da imagem Agora sua c pia de trabalho parece muito mais gerenci vel de fato numa primeira visualiza o n o parece haver nada mais al m dos arquivos de imagem l dentro Mas seus scripts de automa o sabem mais Eles sabes que podem usar o svn ou melhor ainda eles podem usar a linguagem incorporada ao Subversion veja Usando as APIs para para extrair as informa es extras que seu site precisa exibir sem ter que l las de um ar quivo de ndices nem precisar de preocupar em estar manipulando caminhos dos arqui vos As propriedades personalizadas de revis es tamb m s o frequentemente usadas Um de seus usos comuns uma propriedades cujo valor cont m um recurso de ID de rastrea mento ao qual a revis o est associada talvez pelo fato de a altera o feita nesta revis o corrigir um problema relatado externamente com aquele ID Outros usos incluem a inser o de nomes mais amig veis revis o pode ser dif cil lembrar que a revis o 1935 foi uma revis o testada completamente
551. to podemos abusar deste modelo De um ponto de vista te rico n s definimos que a revis o 5 do diret rio foo significa uma cole o espec fica de entradas de diret rio e propriedades Agora suponha que co me amos a adicionar e remover arquivos de foo e ent o submetemos Seria mentira di zer que n s ainda temos a revis o 5 de foo Entretanto se n s mud ssemos o n mero de revis o de foo depois da submiss o isso tamb m seria falso pode haver outras mu dan as em foo que n s ainda n o recebemos porque ainda n o atualizamos O Subversion lida com este problema rastreando secretamente na rea svn as adi es e exclus es submetidas Quando voc eventualmente executa svn update todas as contas s o acertadas com o reposit rio e o novo n mero de revis o do diret rio determinado corretamente Portanto apenas depois de uma atualiza o realmente seguro dizer que voc tem uma perfeita revis o de um diret rio Na maior parte do tempo sua c pia de trabalho conter revis es de diret rio imperfeitas Similarmente surge um problema se voc tenta submeter mudan as de propriedades em um diret rio Normalmente a submiss o mudaria o n mero de revis o local do diret rio de trabalho Mas novamente isso seria falso porque pode haver adi es ou exclus es que o diret rio ainda n o tem porque nenhuma atualiza o aconteceu Portanto n o permiti do que voc submeta mudan as de prop
552. todo exige a cria o de um ramo com mudan as extras em arquivos tudo em uma nica revis o Isso dificulta muito mais tarde a identificar um n mero de uma revis o como um ponto de um ramo J se encontrou fazendo edi es complexas no sua c pia de trabalho L trunk e de repente percebe Ei estas mudan as deviam estar num ramo pr prio Uma tima t cnica para fazer isso pode ser resumir em dois passos svn copy http svn example com repos calc trunk http svn example com repos calc branches newbranch Committed revision 353 svn switch http svn example com repos calc branches newbranch At revision 353 O comando svn switch como svn update preserva suas edi es locais Nesse ponto sua c pia de trabablho um reflexo do novo ramo criado e seu pr ximo svn commit ira enviar suas mudan as para l Manuten o de Ramos Voc pode ter notado por agora que o Subversion extremamente flex vel Como ele im plementa ramos e r tulos usando o mesmo mecanismo de suporte c pias de diret rio e como ramos e r tulos aparecem normalmente no espa o do sistema de arquivos muitas pessoas v em o Subversion como algo intimidador Ele realmente muito flex vel Nesta se i vamos lhe dar algumas sugest es sobre como arrajar e gerenciar seus dados ao longo do tempo 100 Fundir e Ramificar Repository Layout There are some standard recommended ways to organize a repository Most people cr
553. tp host path with space project espafia entao o Subversion ira aplicar escape aos caracteres inseguros e se comportar como se voc tivesse digitado svn checkout http host path 20with 20space project espa sC3 Bla Se a URL contiver espa os certifique se de coloc la entre aspas de forma que o seu shell trate a inteiramente como um nico argumento do programa svn C pias de Trabalho ou C pias Locais Voc j leu sobre as c pias de trabalho agora vamos demonstrar como o cliente do Sub version as cria e usa Uma c pia de trabalho do Subversion uma rvore de diret rios comum no seu sistema de arquivos local contendo uma cole o de arquivos Voc pode editar esses arquivos conforme desejar e se eles s o arquivos de c digo fonte voc pode compilar o seu pro grama a partir deles da maneira usual Sua c pia de local sua rea de trabalho privada O Subversion jamais incorporar as mudan as de terceiros ou tornar as suas pr prias al tera es dispon veis para os outros at que voc explicitamente o diga para fazer isso Voc pode ter m ltiplas c pias de trabalho do o mesmo projeto Ap s voc ter feito algumas altera es nos arquivos de sua c pia de trabalho e verificado que elas funcionam corretamente o Subversion lhe disponibiliza comandos para publicar commit suas altera es para as outras pessoas que est o trabalhando com voc no mesmo projeto gravando no reposit rio Se o
554. tra marca ou logo relacionado ao Creative Commons sem consentimento pr vio e por escrito do Creative Commons Qualquer uso permitido dever ser de acordo com as diretrizes do Creative Commons de utiliza o da marca ent o v lidas conforme sejam publicadas em seu website ou de outro modo disponibilizadas periodicamente mediante solicita o A Creative Commons pode ser contactada pelo endere o http creativecommons org 344 ndice Remissivo B BASE 38 C COMMITTED 38 Concurrent Versions System CVS xiii H HEAD 38 P PREV 38 propriedades 40 R reposit rio ganchos post commit 313 post lock 317 post revprop change 315 post unlock 319 pre commit 312 pre lock 316 pre revprop change 314 pre unlock 318 start commit 311 revis es especificadas como datas 39 termos de revis o 38 S Subversion hist rico do xix svn subcomando checkout 211 cleanup 213 commit 214 copy 216 delete 218 diff 220 export 223 help 225 import 226 info 228 list 231 lock 233 log 235 merge 239 mkdir 241 move 243 propdel 245 propedit 246 propget 247 proplist 248 propset 250 resolved 252 revert 254 status 256 switch 260 unlock 262 update 264 subcomandos add 207 subcommands blame 209 cat 210 svnadmin subcomando create 267 deltify 268 dump 269 help 271 hotcopy 272 list dblogs 273 list unused dblogs 274 load 275 Islocks 276 Istxns 27
555. trabalho pode vir de outro reposit rio Veja Defini es Externas recurso n o est sob controle de vers o recurso est faltando ou incompleto removido por outra ferramenta que n o Subversion GRUP x So O OOOO Para uma discuss o mais detalhada de svn status veja Obtendo uma vis o geral de su as altera es Update svn update atualiza sua c pia de trabalho e s imprime informa o sobre arquivos que ele atualiza O Subversion combinou os c digos P e U do CVS em apenas U Quando ocorre uma fus o ou conflito o Subversion simplesmente imprime G ou c em vez de uma senten a inteira Para uma discuss o mais detalhada de svn update veja Atualizando Sua C pia de Tra balho Ramos e R tulos O Subversion n o distingue entre espa o do sistema de arquivos e espa o do ramo ra mos e r tulos s o diret rios normais dentro do sistema de arquivos Esta provavelmente o nico maior obst culo mental que um usu rio de CVS precisar escalar Leia tudo sobre isso em Cap tulo 4 Fundir e Ramificar Visto que o Subversion trata ramos e r tulos como diret rios normais sempre se lembre de efetuar checkout do tronco http svn example com repos calc trunk do seu projeto e n o do projeto em si nttp svn example com repos calc Se voc co meter o erro de efetuar checkout do projeto em si vai terminar com uma c pia de trabalho que cont m uma c pia do seu projeto para
556. trodu o ao Subversion Independente do seu estilo de aprendizado este livro pretende ser til para os mais diver sos tipos de pessoas os que n o possuem nenhuma experi ncia com controle de ver s o at os administradores de sistema mais experientes Dependendo do seu conheci mento certos cap tulos podem ser mais ou menos importantes para voc A lista abaixo uma recomenda o de leitura para os diversos tipos de leitores Administradores de Sistemas Experientes Sup e se aqui que voc provavelmente j tenha usado controle de vers o anterior mente e est morrendo de vontade de usar um servidor Subversion o quanto antes O Cap tulo 5 Administra o do Reposit rio e o Cap tulo 6 Configura o do Servidor ir o mostrar como criar seu primeiro reposit rio e torn lo dispon vel na rede Depois dis so o Cap tulo 2 Uso B sico e o Ap ndice B Subversion para Usu rios de CVS v o mostrar o caminho mais r pido para se aprender a usar o cliente Subversion Novos usu rio Seu administrador provavelmente j disponibilizou um servidor Subversion e voc precisa aprender a usar o cliente Se voc nunca utilizou um sistema de controle de vers o ent o o Cap tulo 1 Conceitos Fundamentais ser vital para introduzir e mos trar as id ias por tr s do controle de vers o O Cap tulo 2 Uso B sico um guia do cliente do Subversion Usu rios avan ados Seja voc um usu rio ou um administrador eventua
557. u shouldn t Further if your dump file has an inconsistent usage of leading slashes for some reason J you should probably normalize those paths so they all have or lack leading slashes Also copied paths can give you some trouble Subversion supports copy operations in the repository where a new path is created by copying some already existing path It is possi ble that at some point in the lifetime of your repository you might have copied a file or di rectory from some location that svndumpfilter is excluding to a location that it is including In order to make the dump data self sufficient svndumpfilter needs to still show the addi While svnadmin dump has a consistent leading slash policy to not include them other programs which ge nerate dump data might not be so consistent 132 Administra o do Reposit rio tion of the new path including the contents of any files created by the copy and not re present that addition as a copy from a source that won t exist in your filtered dump data stream But because the Subversion repository dump format only shows what was chan ged in each revision the contents of the copy source might not be readily available If you suspect that you have any copies of this sort in your repository you might want to rethink your set of included excluded paths perhaps including the paths that served as sources of your troublesome copy operations too Finally svndumpfilter takes path fil
558. ubversion Felizmente o Subversion oferece um conjunto de fun es veja subversion include svn utf h que podem ser usadas por qual quer programa para fazer esses convers es Al m disso as APIs do Subversion requerem que todos os par metros da URL sejam de vidamente codificados em URI Assim em vez de passar file home username My File txt como a URL de um arquivo nomeado My File txt voc precisa passar fi le home username My 20File txt Novamente o Subversion fornece fun es auxiliares que sua aplica o pode usar svn path uri encode e svn path uri decode para codifica o e decodifica o de URI respectivamente Usando Outras Linguagens al m de C e C Se voc est interessado em usar as bibliotecas do Subversion em conjun o com algu ma outra coisa do que um programa C digo um script Python ou Perl o Subversion pos sui algum suporte para isto por meio do Simplified Wrapper and Interface Generator SWIG Os v nculos do SWIG com o Subversion est o localizados em subversion bin dings swig Eles est o ainda amadurecendo mas j s o us veis Estes v nculos permi tem voc chamar as fun es da API do Subversion indiretamente usando inv lucros que traduzem os tipos de dado nativos de sua linguagem de scripting para os tipos de dado necess rios das bibliotecas C do Subversion Esfor os significantes v m sendo realizados na cria o de v nculos funcionais gerados por SWIG para Python Perl
559. ubversion se comunica com o Apache usando o Neon que uma biblioteca HTTP WebDAV gen rica com suporte a alguns mecanismos como o SSL Secure Socket Layer discutida anteriormente Se seu cliente Subversion tiver sido compilado com suporte a SSL ent o ele pode acessar seu servidor Apache usando https Igualmente til s o outros recursos da rela o entre o Apache e o Subversion como a ca pacidade de se especificar uma porta espec fica ao inv s da porta 80 padr o HTTP ou um nome de dom nio virtual a partir do qual um reposit rio Subversion pode ser acessado ou a capacidade de se acessar o reposit rio atrav s de um proxy HTTP Tudo isto su portado pelo Neon ent o por tabela o Subversion tem suporte a tudo isto tamb m Finalmente como o mod dav svn est falando um subconjunto do protocolo WebDAV Del taV poss vel acessar o reposit rio por meio de clientes DAV de terceiros A maioria dos sistemas operacionais modernos Win32 OS X e Linux t m a capacidade de montar um servidor DAV como um compartilhamento de rede Este um assunto complicado para mais detalhes leia Ap ndice C WebDAV e Autoversionamento Autoriza o Baseada em Caminhos Tanto o Apache como o svnserve s o capazes de garantir ou negar permiss es aos usu rios Tipicamente isto feito considerando todo o reposit rio um usu rio pode ler o reposit rio ou n o e pode escrever no reposit rio ou n o No entanto tamb m poss
560. ucceeded 3 succeeded 4 succeeded Patching file integer c using Plan A gue Ma at 164 aie Zaia aie ZA Essa questao pode estar em sua mente especialmente se voc for um usuario de Unix porque usar o comando svn merge Porque n o simplesmente usar o coman do do sistema patch para realizar esta tarefa Por exemplo Neste caso em particular sim realmente n o ha diferen a Mas o comando svn merge tem habilidades especiais que superam o comando patch O formato do ar quivo usado pelo patch bem limitado apenas capaz de mexer o conte do dos arquivos N o h forma de representar mudan as em arvores como o criar remover S svn diff c 344 http svn example com repos calc trunk gt patch file 84 Fundir e Ramificar e renomear arquivos e diret rios T o pouco pode o comando patch ver mudan as de propriedades Se nas modifica es de Sally um diret rio tivesse sido criado a sa da do comando svn diff n o iria fazer men o disso svn diff somente mostra forma limitada do patch ent o existem coisa que ele simplesmente n o ir mostrar O comando svn merge por sua vez pode mostrar modifica es em estrutura de r vores e propriedades aplicando estes diretamente em sua c pia de trabalho Um aviso ainda que o comando svn diff e o svn merge tem conceitos similares eles apresentam sintaxe diferente em v rios casos Leia sobre isso em Cap tulo 9 Refer ncia Completa do Subversi
561. ucesso printf O diret rio s foi adicionado com sucesso na nova revis o Sld n new directory youngest rev lse if err gt apr_err SVN_ERR_FS_CONFLICT Oh n o Nossa submiss o falhou como resultado de um conflito algu m parece ter feito mudan as na mesma rea do sistema de arquivo que n s tentamos modificar Imprime uma mensagem de erro R printf Um conflito ocorreu no caminho s na tentativa de adicionar o diret rio s no reposit rio em s n conflict str new directory repos path else Algum outro erro ocorreu Imprime uma mensagem de erro af printf Um erro ocorreu na tentativa de adicionar o diret rio s no reposit rio em Ss n new directory repos path 197 Incorporando o Subversion INT ERR err Note que em Exemplo 8 1 Usando a Camada de Reposit rio o c digo poderia ter ape nas t o facilmente submetido a transa o usando svn fs commit txn Mas a API do sistema de arquivo sabe nada sobre o mecanismo de gancho da biblioteca do reposit rio Se voc quer que seu reposit rio Subversion realize automaticamente algum conjunto de tarefas n o Subversion toda vez que voc submeter uma transa o como por exemplo enviar um email que descreve todas as mudan as feitas nesta transa o para sua lista de discuss o de desenvolvedores voc precisa usar a vers o desta fun o embrulhada em libsvn_repos
562. ucitar diret rios exclu dos Padr es Comuns de Ramifica o Controle de vers o muito usado para desenvolvimento de software ent o aqui est uma r pida mostra de dois dos padr es mais comuns de ramifica o fus o usados por equipes de programadores Se voc n o estiver usando o Subversion para desenvolvimento de software fique vontade para pular esta se o Mas se voc for um desenvolvedor de software usando controle de vers o pela primeira vez preste bastante aten o j que es tes padr es s o frequentemente considerados como melhores pr ticas por pessoas mais experientes Estes procedimentos n o s o espec ficos para o Subversion sendo aplic veis a qualquer sistema de controle de vers o Al m do que pode ajudar ver tais padr es aplicados ao ambiente do Subversion Ramos para Distribui o Releases A maioria dos softwares possuem um ciclo de vida t pico codifique teste entregue repita H dois problemas com este processo Primeiro os desenvolvedores precisam continuar implementando novos recursos enquanto as equipes de garantia da qualidade se dedicam a testar as vers es supostamente est veis do software Segundo a equipe quase sempre precisa dar suporte a vers es mais antigas j entregues do software se um bug for des coberto no c digo mais recente ele provavelmente tamb m est presente nas outras ver s es j distribu das e os clientes v o querer obter a corre o sem ter que es
563. ue fabrica a vers o Python da estrutura complexa correspondente em C Note tamb m que o caminho passado para este programa como aquele ltimo passa atrav s da svn path canonicalize porque n o fazendo isso corre se o risco de desencadear as asser es subjacentes da biblioteca C do Subversion sobre tais coisas que se traduz a um aborto imediato e sem cerim nia da execu o do programa 201 Cap tulo 9 Refer ncia Completa do Subversion Este cap tulo tem a inten o de ser uma refer ncia completa para o uso do Subversion Ele inclui o comando svn e todos os seus subcomandos assim como programas de ad ministra o de reposit rio svnadmin e svnlook e seus respectivos sub comandos O Cliente de Linha de Comando do Subversi on svn Para usar o cliente de linha de comando voc digita svn o subcomando que voc quer usar e quaisquer op es ou argumentos de destino sobre os quais voc quer realizar a opera o n o h uma ordem espec fica na qual o subcomando e as op es devam apa recer Por exemplo todos os comandos a seguir s o formas v lidas de se usar um svn status svn v status svn status v svn status v meuarquivo Voc pode encontrar muitos exemplos de como usar a maioria dos comandos do cliente Subversion Cap tulo 2 Uso B sico e dos comandos para gerenciamento de propriedades em Propriedades Op es do svn Ainda que o Subversion tenha diferentes op es para seus su
564. uivos faltantes s o arquivos que estavam em 1 0 mas n o em 1 1 e sobre esses caminhos n s executamos svn dele te Por fim uma vez que nossa c pia de trabalho current cont m apenas o c digo da libcomplex 1 1 n s submetemos as altera es que fizemos para que ela ficasse desse jei to Nosso ramo current agora cont m o novo pingo de fornecedor N s rotulamos a nova vers o da mesma maneira que anteriormente rotulamos o pingo de fornecedor da vers o 1 0 e em seguida fundimos as diferen as entre o r tulo da vers o anterior e a nova ver s o atual em nosso ramo principal de desenvolvimento cd working copies calc svn merge http svn exemplo com repos vendor libcomplex 1 0 http svn exemplo com repos vendor libcomplex current libcomplex resolva todos os conflitos entre as altera es deles as nossas svn commit m fundindo libcomplex 1 1 com o ramo principal No caso de uso trivial a nova vers o da nossa ferramenta de terceiros pareceria com a SE inteiramente livre de bugs claro 104 Fundir e Ramificar vers o anterior de um ponto de vista de arquivos e diret rios Nenhum dos arquivos fonte de libcomplex teria sido exclu do renomeado ou movido para locais diferentes a nova vers o conteria apenas altera es textuais em rela o anterior Em um mundo perfeito nossas altera es seriam facilmente aplicadas nova vers o da biblioteca sem absoluta mente nenhuma complica
565. uma filtragem r pida a partir da sa da do comando svn log E bastante comum de se ver mensagens de log do Subversion parecidas com 42 T picos Avan ados Issue s 122376 121919 Reviewed by sally Isto corrige um erro de falha de segmenta o no gerenciador de processos Mas isto resulta em outra dificuldade O Subversion n o prov ainda uma mecanis mo de modelos para mensagens de log que poderia ajudar bastante os usu rios a manter consistentemente o formato de seus metadados inclu dos em suas mensa gens de log Manipulando Propriedades O comando svn oferece algumas poucas maneiras de se adicionar ou modificar proprie dades de arquivos e diret rios Para propriedades com valores pequenos leg veis por hu manos talvez a forma mais simples de se adicionar uma nova propriedade especificar o nome e o valor da propriedade na linha de comando com o subcomando propset svn propset copyright c 2006 Red Bean Software calc button c property copyright set on calc button c Mas sempre podemos contar com a flexibilidade que o Subversion oferece para seus valo res de propriedades E se voc est planejando ter texto com m ltiplas linhas ou mesmo valores bin rios para o valor da propriedade voc provavelmente n o vai informar este valor pela linha de comando Ent o o subcomando propset leva uma op o file F para especificar o nome de um arquivo que cont m o valor para a nova
566. uns ainda consideram que o DeltaV per manece impopular porque ainda n o h um servidor como produto open source que o im plemente t o bem Ainda que o Subversion ainda esteja em fase de desenvolvimento parece uma grande id ia usar o Apache como servidor de rede Ele j possui um m dulo para prover servi os WebDAV DeltaV era uma especifica o relativamente nova A esperan a era que o m 330 WebDAV e Autoversionamento dulo servidor do Subversion o mod dav svn pudesse eventualmente evoluir para uma implementa o open source de refer ncia DeltaV Infelizmente o DeltaV tem um modelo de versionamento muito espec fico que n o exatamente adequado ao modelo do Sub version Alguns conceitos foram mapeados mas outros n o Mas ent o o que isto significa Primeiro o cliente Subversion n o uma implementa o completa de um cliente DeltaV Ele precisa de algumas certas coisas do servidor que o DeltaV em si n o pode prover e assim ele altamente dependente de diversas requisi es HTTP REPORT espec ficas pa ra o Subversion que apenas o mod dav svn pode entender Segundo o mod dav svn tamb m n o um servidor DeltaV completamente implemen tado Muitas partes da especifica o DeltaV eram irrelevantes para o Subversion e assim simplesmente n o foram implementadas Ainda h um certo debate na comunidade de desenvolvedores se ainda ou n o adequa do se preocupar em tentar remediar estas situa
567. uns svn update she will be told that her working copy represents a path that no longer exists and the user will be forced to svn switch to the new location Data Lifetimes Another nice feature of Subversion s model is that branches and tags can have finite lifeti mes just like any other versioned item For example suppose you eventually finish all your work on your personal branch of the calc project After merging all of your changes back into calc trunk there s no need for your private branch directory to stick around any more svn delete http svn example com repos calc branches my calc branch m Removing obsolete branch of calc project Committed revision 375 And now your branch is gone Of course it s not really gone the directory is simply missing from the HEAD revision no longer distracting anyone If you use svn checkout svn switch or svn list to examine an earlier revision you ll still be able to see your old branch If browsing your deleted directory isn t enough you can always bring it back Resurrecting data is very easy in Subversion If there s a deleted directory or file that you d like to bring back into HEAD simply use svn copy r to copy it from the old revision 101 Fundir e Ramificar svn copy r 374 http svn example com repos calc branches my calc branch http svn example com repos calc branches my calc branch Committed revision 376 In our example your personal branc
568. usar qualquer tipo de controle de acesso atrav s do svnserve acaba n o fazendo muito sentido o usu rio sempre possui acesso direto base de dados do reposit rio atualmente n s n o recomendamos isto uma vez que o RSH sabidamente menos seguro que o SSH 150 Configura o do Servidor E agora voc pode usar este nova defini o de t nel usando um esquema de URL que casa com o nome de sua nova vari vel svn rsh host path Ao usar o novo esque ma de URL o cliente Subversion atualmente vai ser executado pelo comando rsh host svnserve t por tr s dos panos Se voc incluir um nome de usu rio na URL por exem plo svn rsh username host path o cliente tamb m vai inclu lo em seu comando rsh username host svnserve t Mas voc pode definir novos esquemas de tunela mento que sejam muito mais inteligentes que isto tunnels joessh SJOESSH opt alternate ssh p 29934 Este exemplo demonstra uma por o de coisas Primeiro ele mostra como fazer o cliente do Subversion executar um bin rio de tunelamento bem espec fico este que est localiza do em opt alternate ssh com op es espec ficas Neste caso acessando uma URL svn joessh deveria invocar o bin rio SSH em quest o com p 29934 como argumentos util se voc quer que o programa do t nel se conecte a uma porta n o padr o Segundo esse exemplo mostra como definir uma vari vel de ambiente personalizada que pode sobrescrever o nome do pr
569. usu rios e senha e escolha um dom nio de autentica o general password db userfil realm example domain O dominio realm um nome que voc define Ele informa aos clientes a que tipo de espa o de nomes de autentica o voc est se conectando o cliente Subversion o exibe no prompt de autentica o e o utiliza como chave junto com o hostname do servidor e a porta para fazer cache de credenciais no disco veja Armazenando Credenciais no Clien te A vari vel password db aponta para um arquivo em separado que cont m uma lista de nomes de usu rios e senhas usando o mesmo formato familiar Por exemplo users harry foopassword sally barpassword O valor de password db pode ser um caminho absoluto ou relativo para o arquivo de usu rios Para muitos administradores f cil manter o arquivo logo dentro da rea conf do reposit rio juntamente com 0 svnserve conf Por outro lado poss vel que voc queira ter dois ou mais reposit rios compartilhando o mesmo arquivo de usu rios neste caso o arquivo provavelmente deve ficar em um local mais p blico Reposit rios que com partilhem o arquivo de usu rios tamb m devem ser configurados para ter um mesmo do m nio uma vez que a lista de usu rios essencialmente define um dom nio de autentica o Onde quer que este arquivo esteja certifique se de definir as permiss es de leitura e escrita adequadamente Se voc sabe com qual is usu ri
570. ut file localhost path to repos Al m disso usu rios do esquema file em plataformas Windows precisar o utilizar um padr o de sintaxe n o oficial para acessar reposit rios que est o na mesma m qui na mas em um drive diferente do atual drive de trabalho Qualquer uma das seguintes sin taxes de URLs funcionar o sendo x o drive onde o reposit rio reside C gt svn checkout file X path to repos C gt svn checkout file X path to repos Na segunda sintaxe voc precisa colocar a URL entre aspas de modo que o caractere de barra vertical nao seja interpretado como um pipe Al m disso note que a URL utiliza bar ras normais enquanto no Windows os caminhos nao URLs utilizam barra invertida Conceitos Fundamentais URLs file do Subversion n o podem ser utilizadas em um browser co mum da mesma forma que URLs file t picas podem Quando voc tenta ver uma URL file num web browser comum ele l e mostra o conte do do local examinando o sistema de arquivos diretamente Entretanto os recur sos do Subversion existem em um sistema de arquivos virtual veja Camada de Reposit rio e o seu browser n o vai saber como interagir com este siste ma de arquivos Por ltimo conv m notar que o cliente Subversion vai automaticamente codificar as URLs conforme necess rio de forma semelhante a um browser Por exemplo se a URL contiver espa os ou algum caractere n o ASCII svn checkout ht
571. utious removal of certain bits of versioned data is actually supported by real use cases That s why an obliterate feature has been one of the most highly requested Subversion features and one which the Subversion developers hope to soon provide 130 Administra o do Reposit rio calc trunk branches tags calendar trunk branches tags spreadsheet trunk branches tags To get these three projects into their own repositories we first dump the whole repository svnadmin dump path to repos gt repos dumpfile Dumped revision 0 Dumped revision 1 Dumped revision 2 Dumped revision 3 A Next run that dump file through the filter each time including only one of our top level di rectories and resulting in three new dump files svndumpfilter include calc lt repos dumpfile gt calc dumpfile svndumpfilter include calendar lt repos dumpfile gt cal dumpfile svndumpfilter include spreadsheet lt repos dumpfile gt ss dumpfile At this point you have to make a decision Each of your dump files will create a valid repo sitory but will preserve the paths exactly as they were in the original repository This me ans that even though you would have a repository solely for your calc project that reposi tory would still have a top level directory named calc If you want your trunk tags and branches directories to live in the root of your repository you might wish to edi
572. utras pessoas publicarem altera es o Subversion disponibiliza comandos para fundir merge essas altera es em sua c pia de trabalho lendo do reposit rio Uma c pia de trabalho tamb m cont m alguns arquivos extras criados e mantidos pelo Subversion para ajud lo a executar esse comandos Em particular cada diret rio em sua c pia local cont m um subdiret rio chamado svn tamb m conhecido como o diret rio administrativo da c pia de local Os arquivos em cada diret rio administrativo ajudam o Subversion a reconhecer quais arquivos possuem altera es n o publicadas e quais es t o desatualizados em rela o ao trabalho dos outros Um t pico reposit rio Subversion frequentemente det m os arquivos ou c digo fonte para v rios projetos geralmente cada projeto um subdiret rio na rvore de arquivos do repo sit rio Desse modo uma c pia de trabalho de um normalmente corresponder a uma sub rvore particular do reposit rio Por exemplo suponha que voc tenha um reposit rio que contenha dois projetos de soft ware paint e calc Cada projeto reside em seu pr prio subdiret rio como mostrado 8 Conceitos Fundamentais em Figura 1 6 O Sistema de Arquivos do Reposit rio Figura 1 6 O Sistema de Arquivos do Reposit rio Makefile i integer button c i E Makefile canvas c brush c Para obter uma c pia local voc deve fazer check out de alguma sub rvore do reposi
573. utros ganchos os posto hooks s o executados depois que algum evento ocorre e s o teis para executar tarefas que examinam mas n o modifi cam o reposit rio Cada gancho acompanhado de informa es que dizem que evento ou foi as modifica es propostas ou completadas e o nome de usu rio da pessa que disparou o evento O subdiret rio hooks cont m por padr o v rios modelos de ganchos Is repos hooks post commit tmpl post unlock tmpl pre revprop change tmpl 116 Administra o do Reposit rio post lock tmpl pre commit tmpl pre unlock tmpl post revprop change tmpl pre lock tmpl start commit tmpl Existe um modelo para cada gancho que o reposit rio Subversion suporta e examinando o conte do desses scripts voc pode observar o que dispara cada script e que inforam es s o passadas para o script Tamb m s o apresentados em muitos desses modelos exemplos de como algu m pode usar o script em conjunto com outros programas disponi bilizados pelo Subversion para desempenhar tarefas teis e rotineiras Para instalar um gancho voc somente precisa colocar algum programa execut vel ou script no diret rio repos hooks que pode ser executado pelo nome do gancho como start commit ou post commit Na plataforma Unix isso significa fornecer um script ou programa que pode ser um script shell um programa Python um bin rio C compilado ou qualquer outra coisa semelhante com o nome exato do
574. vailable too The tools backup directory of the Subversion source distribution holds the hot backup py script This script adds a bit of backup management atop svnadmin hotcopy allowing you to keep only the most recent configured number of backups of each repository It will automatically manage the names of the backed up repository directories to avoid collisions with previous backups and will rotate off older backups deleting them so only the most recent ones remain Even if you also have an incremental backup you might want to run this program on a regular basis For example you might consider using hot backup py from a program scheduler such as cron on Unix systems which will cause it to run nightly or at whatever granularity of Time you deem safe Some administrators use a different backup mechanism built around generating and sto 138 Administra o do Reposit rio ring repository dump data We described in Migrating Repository Data Elsewhere how to use svnadmin dump incremental to perform an incremental backup of a given revision or range of revisions And of course there is a full backup variation of this achieved by omitting the incremental option to that command There is some value in these methods in that the format of your backed up information is flexible it s not tied to a parti cular platform versioned filesystem type or release of Subversion or Berkeley DB But that flexibility comes at a co
575. valor diz ao cliente como manipular as quebras de linha do arquivo na c pia de trabalho e em rvores exportadas Veja Sequ ncia de Carac teres de Fim de Linha e svn export svn externals Se presente em um diret rio o valor uma lista de v rias linhas com outros caminhos e URLs que o cliente deve verificar Veja Defini es Externas svn special Se presente em um arquivo indica que o arquivo n o um arquivo normal mas uma liga o simb lica ou outro objeto especial svn needs lock Se presente em um arquivo diz ao cliente para tornar o arquivo somente de leitura na c pia de trabalho como um lembrete de que o arquivo deve ser travado antes de inici ar sua edi o Veja Comunica o de Travas Propriedades N o Versionadas svn author Se presente cont m o nome de usu rio autenticado da pessoa que criou a revis o Se n o presente ent o a revis o foi submitida anonimamente at o momento liga es simb licas s o na verdade apenas objetos especiais Mas poder o existir mais ou tros em vers es futuras do Subversion 309 Refer ncia Completa do Subversion svn date Cont m a data e hora em UTC em que a revis o foi criada no formato ISO 8601 O valor vem do rel gio do computador servidor n o do cliente svn log Cont m a mensagem de log descrevendo a revis o svn autoversioned Se presente a revis o foi criada por meio do recurso de autoversionamento Veja
576. vas completas dos arquivos e diret rios Mas estas rapida mente tornam se dores de cabe a para a manuten o exigindo algum mecanismo para aplicar suas altera es personalizadas aos dados de terceiros e necessitando de regene ra o dessas mudan as a cada sucessiva vers o dos dados de terceiros que voc acom panha A solu o para este problema usar ramos de fornecedores vendor branches Um ramo de fornecedor uma rvore de diret rios no nosso pr prio sistema de controle de vers es que cont m informa es fornecidas por uma entidade de terceiros ou fornecedor Cada vers o dos dados do fornecedor que voc decidir absorver em seu projeto chamada pin go de fornecedor vendor drop Os ramos de fornecedor proporcionam dois benef cios Primeiro por armazenar o pingo de fornecedor atualmente suportado em seu pr prio sistema de controle de vers o os membros do seu projeto nunca precisam perguntar se t m a vers o correta dos dados do fornecedor Eles simplesmente recebem essa vers o correta como parte de suas atualiza es regulares da c pia de trabalho Em segundo lugar como os dados residem em seu pr prio reposit rio Subversion voc pode armazenar as altera es personalizadas feitas nele no pr prio local voc n o precisa mais de um m todo automatizado ou pior manu al para incluir no projeto suas personaliza es Procedimento Geral para Manuten o de Ramos de Fornecedores Gerenciar ramos
577. veio mas falha ao transmitir essa informa o para o cliente que est execu tando um svn update ou um svn merge Ao inv s de dizer para o cliente Copie este ar quivo que voc j possui para este novo local ele envia informa o acerca de um arquivo completamente novo Isto pode levar a problemas especialmente pelo fato de que a mes ma coisa acontece com arquivos renomeados Um fato pouco conhecido pouco conhecido sobre o Subversion que ainda lhe falta um recurso para renomea o efetiva o co mando svn move nada mais que uma combina o de svn copy e svn delete Por exemplo suponha que ao trabalhar em seu ramo particular voc renomeie inte ger c para whole c Efetivamente voc criou um novo arquivo em seu ramo que uma c pia do arquivo original e excluiu o arquivo original Enquanto isso de volta ao trunk Sally submeteu algumas melhorias em integer c Agora voc decide mesclar seu ramo ao tronco S cd calc trunk svn merge r 341 405 http svn example com repos calc branches my calc branc D integer c A whole c primeira vista isto n o parece t o ruim mas provavelmente tamb m n o era o que voc ou Sally esperavam A opera o de mesclagem excluiu a ltima vers o do arquivo inte ger c aquela que continha as ltimas altera es de Sally e adicionou cegamente seu novo arquivo whole c que uma duplicata da vers o mais antiga de integer c O efeito em cascata que mesclar sua re
578. vis o 343 At onde o Subversion sabe esses dois commits afetaram arquivos dife rentes em locais distintos no reposit rio Entretanto o Subversion mostra que os dois ar quivos t m um hist rico em comum Antes de ser feita a c pia ramo na revis o 341 eles eram o mesmo arquivo E por isso que voc e Sally podem ver as altera es feitas nas re vis es 303 e 98 Os conceitos chave por tr s de ramos H duas li es importantes que voc deve se lembrar desta se o Primeiro o Subversion n o tem um conceito interno de ramos ele apenas sabe fazer c pias Quando voc copia um diret rio o diret rio resultante somente um ramo porque voc atribui esse significa do a ele Voc pode pensar de forma diferente sobre esse diret rio ou trat lo de forma diferente mas para o Subversion apenas um diret rio comum que carrega uma informa o extra de hist rico Segundo devido a este mecanismo de c pia os ramos no Subver sion existem como diret rios normais do sistema de arquivos no reposit rio Isso diferen te de outros sistemas de controle de vers o onde ramos s o criados ao adicionar r tulos extra dimensionais aos arquivos Copiando Modifica es Entre Ramos Agora voc e Sally est o trabalhando em ramos paralelos do projeto voc est trabalhan do no seu pr prio ramo e Sally est trabalhando no tronco ou linha principal de desenvol vimento Para projetos que tenham um grande numero d
579. vn copy daquela revis o normalmente a HEAD pa ra dentro de seu diret rio tags svn copy file tmp repos test trunk file tmp repos test tags 0 6 32 prer Committed revision 12 E n o se preocupe se voc se esquecer de rotular voc pode sempre especificar uma revis o mais antiga e o r tulo a qualquer momento svn copy r 11 file tmp repos test trunk file tmp repos test tags 0 6 3 Committed revision 13 217 Refer ncia Completa do Subversion Nome svn delete Exclui um item de uma c pia de trabalho ou do reposit rio Sinopse svn delete PATH svn delete URL Descri o Os itens especificados pelo PATH s o agendados para exclus o at o pr ximo commit Os arquivos e diret rios que ainda n o foram submetidos s o imediatamente removidos da c pia de trabalho O comando n o ir remover quaisquer itens n o versionados ou modifi cados utilize a op o force para sobrescrever este comportamento Itens especificados pela URL s o exclu dos do reposit rio por meio de um registro commit imediato M ltiplas URLs sofrem as altera es de forma at mica Nomes Alternativos del remove rm Altera C pia de trabalho se executando sobre arquivos reposit rio se operando sobre URLs Acessa o Reposit rio Apenas quando executado sobre URLs Op es force force log message m TEXT file F FILE quiet q targets FILENAME username USE
580. vn module modules mod dav svn so Note que se o mod dav foi compilado como um objeto compartilhado ao inv s de ter sido lincado diretamente ao bin rio httpd voc vai precisar de uma declara o LoadModule para ele tamb m Assegure se de que sua declara o venha antes da linha mod dav svn LoadModule dav module modules mod dav so LoadModule dav svn module modules mod dav svn so Em outra parta de seu arquivo de configura o voc agora vai dizer ao Apache onde voc mant m seu reposit rio ou reposit rios Subversion A diretiva Location tem uma nota o parecida com a de XML come ando com uma tag de abertura e terminando com uma tag de fechamento com v rias outras diretivas de configura o no meio O prop sito da diretiva Location instruir o Apache a fazer algo especial quando manipular requisi es que sejam direcionadas a uma certa URL ou uma de suas filhas No caso do Subver sion quer que o Apache simplesmente desconsidere URLs que apontem para recursos sob controle de vers o na camada DAV Voc pode instruir o Apache a delegar a manipu la o de todas as URL em que cuja parte do caminho a parte da URL ap s o nome do servidor e do n mero de porta opcional comece com repos para um provedor DAV cu jo reposit rio est localizado em caminho absoluto do repositorio usando a se guinte sintaxe do httpd conf lt Location repos gt DAV svn SVNPath caminho absoluto do reposit rio lt Location gt
581. vn red bean com repos test Repository UUID 5e7d134a 54fb 0310 bd04 b611643e5c25 Revision 19 Node Kind directory Schedule normal 229 Refer ncia Completa do Subversion Last Changed Author harry Last Changed Rev 19 Last Changed Date 2003 01 16 23 21 19 0600 Thu 16 Jan 2003 Properties Last Updated 2003 01 16 23 39 02 0600 Thu 16 Jan 2003 svn info tamb m funciona em URLs perceba tamb m que o arquivo readme doc neste exemplo est travado ent o a informa o da trava tamb m exibida svn info http svn red bean com repos test readme doc Path readme doc Name readme doc URL http svn red bean com repos test readme doc Repository Root http svn red bean com repos test Repository UUID 5e7d134a 54fb 0310 bd04 b611643e5c25 Revision 1 Node Kind file Schedule normal Last Changed Author sally Last Changed Rev 42 Last Changed Date 2003 01 14 23 21 19 0600 Tue 14 Jan 2003 Lock Token opaquelocktoken 14011d4b 54fb 0310 8541 dbd16bd471b2 Lock Owner harry Lock Created 2003 01 15 17 35 12 0600 Wed 15 Jan 2003 Lock Comment 1 line My test lock comment 230 Nome Sinopse Refer ncia Completa do Subversion svn list Lista entradas de diret rio no reposit rio svn list TARGET REV Descri o Lista cada arquivo em TARGET e o conte do de cada diret rio em TARGET como existirem no reposit rio Se TARGET for u
582. vo apare a como um icone gen rico quando visto em uma pasta WebDAV compartilhada n o associado a nenhuma aplica o Uma solu o ter um administrador de sistema ou outra pessoa com conhecimento do Subversion que obtenha uma c pia de trabalho e defina manualmente a propriedade svn mime type nos arquivos necess rios Mas potencialmente essas tarefas de limpeza potencialmente n o t m fim Ao inv s disso voc pode usar a diretiva ModMimeUse PathInfo no bloco lt Location gt de seu Subversion lt Location repos gt DAV svn SVNPath path to repository SVNAutoversioning on ModMimeUsePathInfo on lt Location gt Esta diretiva permite que 0 mod_mime para tentar deduzir automaticamente o tipo mime em novos arquivos adicionados ao reposit rio pelo autoversionamento O m dulo verifica a extens o do nome do arquivo e possivelmente seu conte do tamb m se o arquivo cor responder a alguns padr es comuns ent o a propriedade svn mime type ser definida automaticamente Interoperabilidade com Softwares Clientes Todos os clientes WebDAV entram em uma de tr s categorias aplica es independen tes extens es para gerenciadores de arquivos ou implementa es de sistemas de arqui vos Estas categorias definem amplamente os tipos de funcionalidades WebDAV disponi veis aos usu rios Tabela C 1 Clientes WebDAV Comuns mostra nossa categoriza o e uma breve descri o de algumas das partes mais comuns de softwar
583. w is present in the sync 137 Administra o do Reposit rio repository and then retry the relocation Finally be aware that the revision based replication provided by svnsync is only that replication of revisions It does not include such things as the hook implementations repository or server configuration data uncommitted transactions or information about user locks on repository paths Only information carried by the Subversion repository dump file format is available for replication Repository Backup Despite numerous advances in technology since the birth of the modern computer one thing unfortunately rings true with crystalline clarity sometimes things go very very awry Power outages network connectivity dropouts corrupt RAM and crashed hard drives are but a taste of the evil that Fate is poised to unleash on even the most conscientious admi nistrator And so we arrive at a very important topic how to make backup copies of your repository data There are two types of backup methods available for Subversion repository administra tors tull and incremental A full backup of the repository involves squirreling away in one sweeping action all the information required to fully reconstruct that repository in the event of a catastrophe Usually it means quite literally the duplication of the entire repository di rectory which includes either a Berkeley DB or FSFS environment Incremental backups are lesser thin
584. web comum Em uma palavra n o Ao menos n o com o mod dav svn como sua nica ferramenta Seu navegador web entende apenas HTTP padr o Isso significa que ele apenas sa be como obter GET URLs p blicas as quais representam as ltimas vers es dos arquivos e diret rios De acordo com a especifica o WebDAV DeltaV cada servidor define uma sintaxe de URL particular para vers es mais antigas dos recursos e esta sintaxe opaca aos clientes Para encontrar uma vers o mais antiga de um arquivo 163 Configura o do Servidor um cliente deve seguir um processo espec fico para descobri a URL adequada o procedimento envolve um conjunto de requisi es PROPFIND do WebDAV e a com preens o de conceitos do DeltaV Isto algo que seu navegador web simplesmente n o consegue fazer Ent o para responder pergunta a maneira bvia de ver revis es antigas de arqui vos e diret rios pela passagem do argumento revision r para os coman do svn list e svn cat Para navegar em revis es antigas com seu navegador web entretanto voc precisar usar software de terceiros Um bom exemplo disto o Vi ewVC http viewvc tigris org Originalmente o ViewVC foi escrito para exibir reposi t rios CVS pela web mas as vers es mais recentes trabalham com reposit rios Subversion tamb m Tipo MIME Adequado Ao navegar em um reposit rio Subversion o navegador web obt m um ind cio sobre como
585. when they were changed replication processes have to pay special attention to them If you ve already mirrored the first 15 revisions of a repository and someone then changes a revision property on revision 12 synsync won t know to go back and patch up its copy of revision 12 You ll need to tell it to do so manually by using or with some additionally tooling around the svnsync copy revprops subcommand which simply re replicates all the revision properties for a particular revision svnsync help copy revprops copy revprops usage svnsync copy revprops DEST_URL REV Copy all revision properties for revision REV from source to destination svnsync copy revprops http svn example com svn mirror 12 username syncuser password syncpass Copied properties for revision 12 That s repository replication in a nutshell You ll likely want some automation around such a process For example while our example was a pull and push setup you might wish to ha ve your primary repository push changes to one or more blessed mirrors as part of its post commit and post revprop change hook implementations This would enable the mirror to be up to date in as near to realtime as is likely possible Also while it isn t very commonplace to do so svnsync does gracefully mirror repositories in which the user as whom it authenticates only has partial read access It simply copies only the bits of the repository that it is permitted to see Obvi
586. ws h diversas aplica es bem conhecidas que j possuem funcionalidade de cliente WebDAV tais como os programas Microsoft Office Adobe Photoshop e Macro media Dreamweaver Eles s o capazes de abrir e salvar URLs diretamente e tendem a fazer uso massivo de travas WebDAV ao editar arquivos Veja que ainda que muitos desses programas tamb m existam para o Mac OS X eles n o parecem suportar o WebDAV nativamente nessa plataforma De fato no Mac OS X a cai xa de di logo File gt Open n o permite de forma alguma que voc digite um caminho ou uma URL E como se os recursos para WebDAV tivessem sido deliberadamente removi dos das vers es Macintosh desses programas uma vez que o sistema de arquivos do OS X j prov um excelente suporte de baixo n vel para WebDAV Cadaver DAV Explorer Cadaver um programa de linha de comando muito enxuto do Unix para navega o e re aliza o de modifica es em compartilhamentos WebDAV Como o cliente do Subversion ele usa a biblioteca HTTP neon sem nenhuma surpresa uma vez que tanto o neon quanto o cadaver s o desenvolvidos pelo mesmo autor O Cadaver um software livre licen a GPL e est dispon vel em http Avww webdav org cadaver Usar o cadaver se parece com usar um programa FTP de linha de comando sendo assim extremamente til para depura o b sica de WebDAV O programa pode ser usado para se fazer upload ou download de arquivos de uma s vez e tamb m examinar propried
587. xample This deletes the locks on tree jpg and house jpg in the repository at svn repos svnadmin rmlocks svn repos tree jpg house jpg Removed lock on tree jpg Removed lock on house jpg 279 Refer ncia Completa do Subversion Nome svnadmin rmtxns Delete transactions from a repository Sinopse svnadmin rmtxns REPOS PATH TXN NAME Descri o Delete outstanding transactions from a repository This is covered in detail in Removing dead transactions Op es quiet q Exemplos Remove named transactions svnadmin rmtxns usr local svn repos lw 1x Fortunately the output of Istxns works great as the input for rmtxns svnadmin rmtxns usr local svn repos svnadmin lstxns usr local svn repos Which will remove all uncommitted transactions from your repository 280 Refer ncia Completa do Subversion Nome svnadmin setlog Set the log message on a revision Sinopse svnadmin setlog REPOS_PATH r REVISION FILE Descri o Set the log message on revision REVISION to the contents of FILE This is similar to using svn propset revprop to set the svn 1og property on a revision except that you can also use the option bypass hooks to avoid running any pre or post commit hooks which is useful if the modification of revision properties has not been enabled in the pre revprop change hook Revision properties are not under version control so this
588. xclu ir esse arquivo svn delete banana jpg D banana jpg svn commit m Excluir arquivo sem uso Deleting banana jpg svn Commit failed details follow svn DELETE of repos project svn wrk 64bad3a9 96f9 0310 818a df4224ddc35d banana jpg 423 Locked http svn example com Por m Harry ap s retocar a tonalidade amarela da banana capaz de submeter suas mudan as no arquivo Isso porque ele se autenticou como o propriet rio da trava e tam b m porque sua c pia de trabalho possui o sinal de trava correto S svn status M K banana jpg svn commit m Torna a banana mais amarela Sending banana jpg Transmitting file data Committed revision 2201 S svn status Note que ap s a submiss o ser conclu da svn status mostra que o sinal de trava nao es t mais presente na c pia de trabalho Este o comportamento padr o de svn commit ele procura na c pia de trabalho ou lista de alvos se voc fornecer uma lista desse tipo por modifica es locais e envia todos os sinalizadores de trava encontrados durante esta caminhada para o servidor como parte da transa o de submiss o Ap s a submiss o concluir com sucesso todas as travas do reposit rio que forem mencionadas s o liberadas at mesmo em arquivos que n o foram submetidos Isto utilizado para que os usu rios n o sejam desleixados com os travamentos ou segurem travas por muito tempo Se Harry trava de forma deso
589. xto plano como c digo fonte Mas para arquivos com formatos bin rios como os de imagens ou som frequentemente imposs vel fundir as mudan as con flitantes Nessas situa es realmente necess rio que o arquivo seja alterado por um usu rio de cada vez Sem um acesso serializado algu m acabar perdendo tempo em mudan as que no final ser o descartadas Enquanto o Subversion primariamente um sistema copy modify merge ele ainda reconhece a necessidade ocasional de locking em algum arquivo e assim fornece mecanismos para isso Este recurso ser discutido mais tarde neste livro em Travamento Subversion em A o Chegou a hora de passar do abstrato para o concreto Nesta se o n s mostraremos exemplos reais de utiliza o do Subversion URLs do Reposit rio Subversion Ao longo de todo este livro o Subversion utiliza URLs para identificar arquivos e diret rios versionados nos reposit rios Na maior parte essas URLs usam a sintaxe padr o permi tindo nomes de servidor e n meros de porta serem especificados como parte da URL svn checkout http svn example com 9834 repos Mas existem algumas nuances no manuseio de URLs pelo Subversion que sao notaveis Por exemplo URLs contendo o m todo de acesso file usado para reposit rios lo cais precisam de acordo com a conven o ter como nome do servidor localhost ou nenhum nome de servidor svn checkout file path to repos svn checko
590. y we qax c 965 687 harry we zig c Head revision 981 Para mais exemplos de svn status veja Obtendo uma vis o geral de suas altera es 259 Refer ncia Completa do Subversion Nome svn switch Atualiza a c pia de trabalho para uma URL diferente Sinopse svn switch URL PATH switch relocate FROM TO PATH Descri o A primeira variante deste subcomando sem a op o relocate atualiza sua c pia de trabalho para apontar para uma nova URL frequentemente uma URL que compartilhe um ancestral comum com sua c pia de trabalho apesar de n o ser necess rio Esta a forma que o Subversion usa para mover uma c pia de trabalho para um novo ramo Con sulte Atravessando Ramos para uma vis o mais aprofundada sobre este recurso A op o relocate faz com que o svn switch execute algo diferente ele atualiza sua c pia de trabalho para apontar para o mesmo diret rio no reposit rio apenas numa URL diferente tipicamente porque um administrador moveu o reposit rio para um outro servi dor ou para outra URL no mesmo servidor Nomes Alternativos SW Altera C pia de trabalho Acessa o Reposit rio Sim Op es revision r non recursive quiet q diff3 cmd CMD relocate FROM TO username USER password PASS no auth cach non interactive config dir DIR REV N Exemplos Se voc atualmente dentro do diret rio vendors o qual foi r
591. yone calc developers paint developers Legibilidade Parcial e Checkouts Se voc est usando o Apache como seu servidor Subversion e deixou determina dos subdiret rios de seu reposit rio ileg veis para certos usu rios ent o voc preci sa ter cuidado com um poss vel comportamento n o otimizado do comando svn checkout Quando o cliente realiza um checkout ou update sobre HTTP ele faz uma nica re quisi o ao servidor e recebe uma nica resposta quase sempre bem grande Quando o servidor recebe a requisi o que a nica oportunidade que o Apache tem de solicitar autentica o do usu rio Isto tem alguns efeitos colaterais Por exemplo se um certo determinado subdiret rio do reposit rio leg vel apenas pelo usu rio Sally e o usu rio Harry d um checkout num diret rio pai seu cliente vai atender ao desafio de autentica o inicial como Harry Como o servidor gera uma 169 Configura o do Servidor resposta grande n o h uma forma de reenviar um desafio de autentica o quando encontrar um subdiret rio especial pulando assim este subdiret rio como um todo em vez de solicitar que o usu rio se re autentique como Sally no momento certo De maneira similar se a raiz do reposit rio leg vel anonimamente por todos ent o to do checkout ser feito sem autentica o novamente pulando o diret rio leg vel em vez de solicitar autentica o para ter acesso a essas partes d
592. your existing current vendor drop and compares them with the proposed new vendor drop In the trivial case there will be no files that are in one version and not the other and the script will perform the new im port without incident If however there are discrepancies in the file layouts between versi ons svn_load_dirs pl will ask you how to resolve those differences For example you will have the opportunity to tell the script that you know that the file math c in version 1 0 of libcomplex was renamed to arithmetic c in libcomplex 1 1 Any discrepancies not ex plained by moves are treated as regular additions and deletions The script also accepts a separate configuration file for setting properties on files and di rectories matching a regular expression that are added to the repository This configuration file is specified to svn load dirs pl using the p command line option Each line of the configuration file is a whitespace delimited set of two or four values a Perl style regular ex pression to match the added path against a control keyword either break or cont and then optionally a property name and value pngs break svn mime type image png jJpe gs break svn mime type image jpeg m3us cont svn mime type audio x mpegurl m3us break svn eol style LF gt break svn eol style native For each added path the configured property changes whose regular expression matches the path are applied in order unless the control
593. za es entre eles sua c pia local ir conter uma completa mistura de revis es Mesmo que voc seja a nica pessoa utilizando o reposit rio voc ainda ver este fen meno Para analisar a sua mistura de revis es use o comando svn status verbose veja Obtendo uma vis o geral de suas altera es para maiores informa es Frequentemente os novos usu rios nem tomam consci ncia de que suas c pias locais cont m revis es mistas Isso pode ser confuso pois muitos comandos no cliente s o sen s veis s revis es que eles est o examinando Por exemplo o comando svn log usado para mostrar o hist rico de altera es em um arquivo ou diret rio veja Gerando uma lista de altera es hist ricas Quando o usu rio invoca este comando em um objeto da c pia local ele espera ver o hist rico inteiro do objeto Mas se a revis o local do objeto muito velha muitas vezes porque o comando svn update n o foi executado por um longo tem po ent o o hist rico da vers o antiga do objeto que ser mostrado Revis es mistas s o teis Se o seu projeto for suficientemente complexo voc ir descobrir que algumas vezes in teressante for ar um backdate ou atualizar para uma revis o mais antiga que a que voc tem de partes de sua c pia local para revis es anteriores voc ir aprender como fazer 14 Conceitos Fundamentais isso em Cap tulo 2 Uso B sico Talvez voc queira testar uma vers

Download Pdf Manuals

image

Related Search

Related Contents

Erweiterungsplatinen Katalognr. EXB001A01  WARNUNG! Für Kinder unter 36 Monaten nicht geeignet  Toshiba 6F3A4508 Computer Drive User Manual  Herunterladen  SkyLink EQ User's Manual  AF Lighting 8103-3H Instructions / Assembly  Customizing XM3 Manage  inst-220410  Documentation générale  Untitled - Casa Veerkamp  

Copyright © All rights reserved.
Failed to retrieve file