Home
        Nome - svnbook-pt-br
         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
 
 
    
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