wiki:Guias/HowTo/UsandoSVN
Last modified 8 years ago Last modified on 03/15/11 17:21:31

Utilizando SVN

Conhecido como subversion, com acrônimo de SVN, é um sistema de controle de versão projetado especificamente para ser um substituto moderno do CVS. Para usar o svn é preciso criar uma cópia de trabalho. Esta cópia do repositório servirá para receber suas modificações. Assim que criar uma cópia o SVN criará um diretório ".svn" em todas as pastas corrente da sua cópia de trabalho. Veja os exemplos abaixo:

Comandos básicos

Comando Atalhos Ação Exemplo
checkout co Faz um download do repositório e cria uma cópia de trabalho svn co https://dev.prognus.com.br/svn-expresso/expresso/trunk
status st Mostra alterações da cópia de trabalho svn status
commit ci Envia alterações da cópia de trabalho para o servidor svn ci -m "Informação sobre commit"
add Adiciona novos arquivos ao repositório svn add foo.c
delete rm Remove arquivos do repositório svn del foo.c
revert volta arquivo da cópia de trabalho para ultima versão baixada do repositório svn revert -R1177 .
update up Atualiza para ultima versão do repositório svn update
help Mostra ajuda svn help

Outros comandos

Comando Atalhos Ação Exemplo
export faz download do repositório sem versionar a cópia svn export https://dev.prognus.com.br/svn-expresso/expresso/trunk .
copy cp copia um diretório/arquivo do repositório svn cp https://dev.prognus.com.br/svn-expresso/expresso/trunk https://dev.prognus.com.br/svn-expresso/expresso/tags/expresso/2.0-prognus3.1
move mv move um diretório/arquivo do repositório
info mostra informação sobre repositório svn info
diff mostra um diff svn diff -r15:40
log mostra o histórico de alterações svn log -v expressoMail1_2/index.php
list lista os arquivos no repositório svn list https://dev.prognus.com.br/svn-expresso/expresso/trunk
propset, propdel muda propriedade de um arquivo svn propset svn:executable 1 binaryfile
switch Atualiza a cópia de trabalho para refletir uma nova URL. Como passar uma tag para um branch svn switch https://dev.prognus.com.br/svn-expresso/expresso/tags/expresso/2.0-prognus3.1 https://dev.prognus.com.br/svn-expresso/expresso/branches/expresso-zend

Rotina de trabalho

Baixando uma cópia da árvore de desenvolvimento

$ svn checkout https://dev.prognus.com.br/svn-expresso/expresso/trunk expresso
$ ls -l
drwxr-x--- 17 william root    0 2008-01-03 12:15 expresso

Atualizando uma cópia já existente

$ cd expresso
$ svn update

Quando o servidor envia alterações para sua cópia de trabalho, um código (letra) é mostrado próximo a cada item:

  • A foo: Arquivo ou diretório foo foi adicionado da cópia de trabalho;
  • D foo: Arquivo ou diretório foo foi apagado da cópia de trabalho;
  • U foo: Arquivo foo foi atualizado (recebeu modificações do servidor);
  • C foo: Arquivo foo recebeu alterações conflitantes do servidor. As mudanças do servidor sobrescrevem diretamente suas próprias mudanças no arquivo. Apesar disso, não há porque entrar em pânico. Esse Conflito deve ser resolvido por uma pessoa (você!).
  • G foo: Arquivo foo recebeu novas alterações do repositório, mas sua cópia local do arquivo ainda tem suas modificações. O Subversion efetuou um "merGe" das mudanças do repositório no arquivo sem problemas;
  • R foo: Arquivo ou diretório foo foi substituído na sua cópia de trabalho; isto é, foo foi apagado e um novo item de mesmo nome foi adicionado;

Para mais informações, veja o manual do Subversion.

Obtendo informações sobre minha cópia de trabalho

$ cd expresso
$ svn info

Verificando o que foi alterado

Exibindo os arquivos alterados (independente da alteração).

$ cd expresso/calendar/setup
$ svn status
M      phpgw_es-es.lang
M      phpgw_pt-br.lang

Examinando minhas alterações

Examinando as últimas alterações de um arquivo em específico:

$ cd expresso/calendar/setup
$ svn diff phpgw_pt-br.lang
  • phpgw_pt-br.lang

     
    408408your suggested time of <b> %1 - %2 </b> conflicts with the following existing calendar entries: calendar        pt-br   Horário sugerido: <B> %1 - %2 </B> está em conflito com as seguintes entradas no calendário: 
    409409quantity of days        calendar        pt-br   Quantidade de dias 
    410410print starting in       calendar        pt-br   Imprimir a partir de 
    411 empty prints from the day chosen below to the end of the current month  calendar        pt-br   Vazio imprime do dia escolhido abaixo até o final do mês corrente. 
     411empty prints from the day chosen below to the end of the current month  calendar        pt-br   Vazio imprime do dia escolhido abaixo até o final do mês corrente 

Examinando as alterações entre duas revisões:

$ cd expresso/calendar/setup
$ svn -r 243:219 phpgw_pt-br.lang
  • phpgw_pt-br.lang

     
    4949calendar preferences    calendar        pt-br   Configurações do calendário 
    5050calendar settings       admin   pt-br   Configurações do calendário 
    5151canceled        calendar        pt-br   Cancelado 
    52 Can have users and groups that doesn't appears on the map       calendar        pt-br   Podem existir grupos ou usuários que não façam parte do mapa de disponibilidade. 
    5352Catalog Name    admin   pt-br   Nome do catálogo 
    5453change all events for $params['old_owner'] to $params['new_owner'].     calendar        pt-br   Modificar todos os eventos de $params['old_owner'] para $params['new_owner']. 
    5554change status   calendar        pt-br   Modificar status 

Verificando o log de alterações

$ cd expresso/calendar/setup
$ svn log phpgw_pt-br.lang
------------------------------------------------------------------------
r243 | douglas | 2011-01-12 12:29:23 -0200 (Qua, 12 Jan 2011) | 1 linha

Ticket #495 - Problema no Calendario ao visualizar Mapa de Disponibilidade (Internacionalizacao)
------------------------------------------------------------------------
r219 | natan | 2010-12-23 13:54:25 -0200 (Qui, 23 Dez 2010) | 1 linha

Ticket #488 - Alterar tradução do botão Tentativa da agenda
------------------------------------------------------------------------
r1 | root | 2010-05-19 18:31:05 -0300 (Qua, 19 Mai 2010) | 1 linha

Enviando minhas modificações para o servidor

$ svn commit -m "Ticket #1234 - Removido strings não utilizadas e duplicadas"

Mesclando branches

Mesclando Branches
Mesclando Branches

Obtendo ajuda

$ svn help
Sub-comandos disponíveis:
   add
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)

$ svn help comando

Attachments