Explicação de como trabalhar com subversion
Autor: Marcelo Fernandes | Publicado: 2010-07-03T10:24:00-03:00

  Autor: Marcello HenriqueDescricao:  Explicação de como trabalhar com subversionFonte:  http://code.google.com/p/svnbook-pt-br/ Legendas:$ => usuário normal do sistema[] => Tudo entre  colchetes são comandos opcionais Estrutura padrão de diretórios de projetos:- (nome do projeto ou produto)|- trunk (Tronco,  diretório base de desenvolvimento.)|- branches (ramos, para  conter cópias de trabalho)|- 1.0- 2.0|- tags (folhas  ou releases pontuáis, que contém as versões congeladas.)|-  v1.0.0- v1.0.1- v2.0.01. Criando um projeto  (nosso projeto chama-se teste) 1.1 Fazer o checkout do projeto. (Baixar os código para sua máquina)$svn  checkout https://svn.cercomp.ufg.br/svn/testeA    teste/trunkA     teste/trunk/teste.txtA    teste/branchesA    teste/tagsGerado  cópia de trabalho para revisão 3.1.2 Entrando no projeto$cd  teste2. Criando ramos 2.1 Fazendo um cópia do tronco para um ramo$svn copy  trunk branches/1.0A         branches/1.0 $svn commit -m "Criando cópia do /trunk para branches/1.0"Adicionando     branches/1.0Adicionando    branches/1.0/teste.txt Commit da revisão 4. $svn updateNa revisão 4.3. Trabalhando em uma ramificação 3.1 Entrando na ramificação$cd branches/1.03.2  Fazendo as alterações que forem necessárias$echo -e  "linha 2\n" >> teste.txt$cat teste.txtlinha 1linha 23.3  Fazendo o commit$svn commit -m "Add linha 2,  branches/1.0/teste.txt"Enviando       1.0/teste.txtTransmitindo  dados do arquivo .Commit da revisão 5.3.4 Faça os  testes de acordo com sua realidade, se houver erros volte ao passo 3.2 e  siga adiante, sorria! ;-D. 3.5 Faça o update$svn updateNa revisão 5.4.  Fazendo a fusão (Lembrem do Dragon Ball Z) 4.1 Indo para raiz do projeto$cd /home/marcello/teste4.2  Verificando os logs$svn log------------------------------------------------------------------------r5  | marcello | 2008-07-16 23:22:29 -0300 (Qua, 16 Jul 2008) | 1 line Add linha 2, branches/1.0/teste.txt------------------------------------------------------------------------r4  | marcello | 2008-07-16 23:20:47 -0300 (Qua, 16 Jul 2008) | 1 line Criando cópia do /trunk para branches/1.0------------------------------------------------------------------------r3  | marcello | 2008-07-16 23:17:56 -0300 (Qua, 16 Jul 2008) | 1 line Add linha 1 in trunk/teste.txt------------------------------------------------------------------------r2  | marcello | 2008-07-16 23:17:28 -0300 (Qua, 16 Jul 2008) | 1 line Add trunk/teste.txt------------------------------------------------------------------------r1  | marcello | 2008-07-16 23:15:54 -0300 (Qua, 16 Jul 2008) | 1 line Criando projeto.------------------------------------------------------------------------4.4  Fundindo a sua ramificação testada para o tronco$svn  merge https://svn.cercomp.ufg.br/svn/teste/trunk@3  https://svn.cercomp.ufg.br/svn/teste/branches/1.0@5 trunk/U     trunk/teste.txt4.5 Commitando a fusão$svn  commit -m "Fundindo branches/marcello/trunk para trunk"Enviando        trunk/teste.txtTransmitindo dados do arquivo .Commit da  revisão 6.4.6 Atualizando$svn updateNa  revisão 6.4.7 Verificando os logs$svn log------------------------------------------------------------------------r6  | marcello | 2008-07-16 23:37:56 -0300 (Qua, 16 Jul 2008) | 1 line Fundindo branches/marcello/trunk para trunk------------------------------------------------------------------------r5  | marcello | 2008-07-16 23:22:29 -0300 (Qua, 16 Jul 2008) | 1 line Add linha 2, branches/1.0/teste.txt------------------------------------------------------------------------r4  | marcello | 2008-07-16 23:20:47 -0300 (Qua, 16 Jul 2008) | 1 line Criando cópia do /trunk para branches/1.0------------------------------------------------------------------------r3  | marcello | 2008-07-16 23:17:56 -0300 (Qua, 16 Jul 2008) | 1 line Add linha 1 in trunk/teste.txt------------------------------------------------------------------------r2  | marcello | 2008-07-16 23:17:28 -0300 (Qua, 16 Jul 2008) | 1 line Add trunk/teste.txt------------------------------------------------------------------------r1  | marcello | 2008-07-16 23:15:54 -0300 (Qua, 16 Jul 2008) | 1 line Criando projeto.------------------------------------------------------------------------5.  Casos de conflito 5.1 Verificando o arquivo de conflito no ramo$cat  branches/1.0/teste.txtlinha 1linha 2 //mexendo na linha 2 do  branches/1.0/teste.txt5.2 Commitando a ramificação para  gerar o conflito$svn commit -m "Alterando o arquivo  branches/marcello/trunk/teste.txt para dar conflito"Enviando        branches/marcello/trunk/teste.txtTransmitindo dados do arquivo .Commit  da revisão 7. $svn updateNa revisão 7.5.3 Alterando o tronco na mesma  linha para gerar o conflito$cat trunk/teste.txtlinha 1linha  2 //mexendo na mesma linha 2 do trunk/teste.txt5.4  Commitando o tronco para gerar o conflito$svn commit -m  "Alterando o arquivo trunk/teste.txt para dar conflito"Enviando        trunk/teste.txtTransmitindo dados do arquivo .Commit da  revisão 8. $svn updateNa revisão 8.5.5 Vejam os logs com a armadilha  pronta :-)$svn log------------------------------------------------------------------------r8  | marcello | 2008-07-16 23:44:19 -0300 (Qua, 16 Jul 2008) | 1 line Alterando o arquivo trunk/teste.txt para dar conflito------------------------------------------------------------------------r7  | marcello | 2008-07-16 23:43:31 -0300 (Qua, 16 Jul 2008) | 1 line Alterando o arquivo branches/marcello/trunk/teste.txt para dar  conflito------------------------------------------------------------------------5.6  Fazer um merge para simular o conflito$svn merge  https://svn.cercomp.ufg.br/svn/teste/trunk@7  https://svn.cercomp.ufg.br/svn/teste/branches/1.0@8 /trunkC     trunk/teste.txt5.7 Fazendo o commit$svn  commit -m "merge braches/1.0 into trunk"svn: Commit falhou (detalhes  a seguir):svn: Abortando commit: '.../trunk/teste.txt' continua em  conflito5.8 Resolvendo um conflito$cd trunk $lsteste.txt  teste.txt.mesclagem-direita.r8   teste.txt.mesclagem-esquerda.r7  teste.txt.trabalho $cat teste.txtlinha 1<<<<<<>>>>>>  .mesclagem-direita.r85.9 Arrumando a bagunça segundo a nossa  vontade, ficando:linha 1linha 2 //mexendo na linha 2  do branches/1.0/teste.txt $svn resolved teste.txtEstado de conflito resolvido para  'teste.txt' $svn commit -m "merge braches/1.0 into trunk"Enviando        trunk/teste.txtTransmitindo dados do arquivo .Commit da revisão  9. $svn updaterevisão 9.6. Ciclo de processo de trabalho no  subversion Minha Tradução svn-book.pdfRevisão 116, Subtítulo: “Release  Branches” Noções prévias:trunk = tronco, corpobranches = ramos, braçostags  = folhas, marcas, liberações pontuáisrelease = liberação Página 95 Muitos software tem tipicamente os ciclo de vida: codificação, teste,  liberação, volta a codificação. Há dois problemas neste processo.  Primeiro, desenvolvedores precisam continuar escrevendo novas  funcionalidades enquanto o equipe de qualidade testa a suposta versão  estável do software. O trabalho não pode parar enquanto o software está  sendo testando. Segundo, a equipe em muitos casos sempre suportam outras  versões do software; se um bug é descoberto na última versão, é  provável que exista em versões liberadas, e os usuários vão querer que  você corrija sem ter que esperar por novas liberações em grande escala. Isto pode ajudar no controle de versão. O processo típico tem esta  aparência:  Desenvolvedores commitam todo o trabalho para dentro do trunk. Dia  após dia mudaças são acrescentadas ao /trunk: novas funcionalidades  correção de defeitos e outros.  O tronco é copiado para a “liberação” ramo. Então a equipe acredita  que o software já está pronto para liberação (dizemos, uma liberação  1.0), então /trunk poderá ser copiado para /branches/1.0  Equipes continuam trabalhando em paralelo. Uma equipe inicia um  rigoroso teste em uma liberação ramo, enquanto uma outra equipe trabalha  para uma versão em grande escala (dizemos, versão 2.0) sobre o /trunk.  Se defeitos são descobertos em outros locais, correções são  transportadas de volta e são criadas quando necessário. Neste ponto, no  entanto o processo pàra. A branch é “congelada” para testes finais antes  de uma liberação.  O ramo é marcado e liberado. Então o teste está completo,  /branches/1.0 é copiado para /tags/1.0.0 como referência da imagem. A  tag é empacotada e liberada para os usuários. O ramo é mantida por todo o tempo. Enquanto o trabalho continua  sobre o /trunk para a versão 2.0, correções continuam a ser  transportadas do /trunk para branches/1.0. Quanto acumula-se correções, o  gerente pode decidir fazer a liberação 1.0.1: /branches/1.0 é copiada  para /tags/1.0.1, e a folha é empacotada e distribuída. Toda repetição desse processo amadurece: então o trabalho 2.0 está  completo, uma nova liberação ramo é criada, testada, marcada e  eventuamente liberada. Depois de alguns anos, o repositório termina com  um número de liberações nos ramos em modo manutenção, e o número de  folhas representa a versões finais expedidas. svn « Blog do faraohh