A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 4, “Branching and Merging”, de Ben Collins-Sussman, Brian W

Apresentações semelhantes


Apresentação em tema: "Capítulo 4, “Branching and Merging”, de Ben Collins-Sussman, Brian W"— Transcrição da apresentação:

1 Capítulo 4, “Branching and Merging”, de Ben Collins-Sussman, Brian W
Capítulo 4, “Branching and Merging”, de Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato, “Version Control with Subversion” Grupo 5 André Ribeiro Coelho Rafael de Souza Santos

2 Branch Linha de desenvolvimento que existe independentemente de outra linha no SVN, ramificação implícita Diferente de outros SCV 2 2

3 Layout Inicial do Repositório
3 3

4 Criando o Branch svn copy <trunk> <branch> -m “...” 4
Baixo custo para fazer cópias. Fazer sempre que achar necessário! 4 4

5 Trabalhando com o Branch
svn checkout <branch> 5 5

6 Trabalhando com o Branch
... E continua evoluindo com o trunk 6 6

7 Trabalhando com o Branch
svn log –v <file> (do branch) 7 7

8 Trabalhando com o Branch
svn log –v <file> (do trunk) 8 8

9 Merge Minimizar os conflitos  replicar as mudanças durante a evolução do branch Versão 1.5 Changesets - conjunto de mudanças com um único nome 9 9

10 Mantendo o Branch em Sync
Ainda não terminou as mudanças do branch 10 10

11 Mantendo o Branch em Sync
svn merge ^/trunk ( do branch )‏ Não esquecer depois o commit Pode repetir varias vezes durante o andamento do branch 11 11

12 Reintegrando o Branch svn merge ^/trunk ( do branch )‏ 12 12

13 Reintegrando o Branch svn merge -- reintegrate ^/branches/my-calc-branch Não esquecer depois o commit 13 13

14 Reintegrando o Branch svn delete ^/branches/my-calc-branch \ -m “...”
Não reaproveitar branch, criar um novo 14 14

15 Desfazendo mudanças svn merge -c -303 ^/trunk
remove do Head, mas mantém o histórico remover definitivamente  ADM 15 15

16 Ressuscitando item deletado
svn merge não é uma boa opção svn copy ./real.c mantém o histórico svn cat > ./real.c não mantém o histórico 16 16

17 Cherrypicking Aplicar um changeset específico de um branch a outro
identificar a diferença entre o changeset específico e o trunk svn diff -c 355 ^/trunk/ levar o conteúdo da revisão 355 pro trunk svn merge -c 355 ^/trunk/ 17 17

18 Sintaxe do merge Leva o conceito de “diff-and-apply” e possui 3 parâmetros repositório inicial repositório final alvo do merge Exemplo: svn merge -r 100: my-working-copy 18 18

19 Reverter o merge É possível desfazer o resultado gerado do merge
svn revert . --recursive 19 19

20 Rastreabilidade com o SVN
Exibição através de log $ cd my-calc-branch $ svn log -q r390 | user | :01: (Fri, 22 Nov 2002) | 1 line r388 | user | :20: (Thu, 21 Nov 2002) | 2 lines r381 | user | :07: (Wed, 20 Nov 2002) | 2 lines r359 | user | :19: (Tue, 19 Nov 2002) | 2 lines r357 | user | :29: (Fri, 15 Nov 2002) | 2 lines r343 | user | :50: (Thu, 07 Nov 2002) | 2 lines r341 | user | :17: (Sun, 03 Nov 2002) | 2 lines r303 | sally | :14: (Tue, 29 Oct 2002) | 2 lines r98 | sally | :35: (Fri, 22 Feb 2002) | 2 lines 20 20

21 Rastreabilidade com o SVN
Usando o histório do merge através do -g $ svn log -v -r 390 -g r390 | user | :01: (Fri, 22 Nov 2002) | 1 line Changed paths: M /branches/my-calc-branch/button.c M /branches/my-calc-branch/README Final merge of trunk changes to my-calc-branch. r383 | sally | :19: (Thu, 21 Nov 2002) | 2 lines Merged via: r390 Fix inverse graphic error on button. r382 | sally | :57: (Wed, 20 Nov 2002) | 2 lines 21 21

22 Rastreabilidade com o SVN
Usando o comando svn blame para identificar alterações dentro do arquivo $ svn blame button.c 390 user retval = inverse_func(button, path); 390 user return retval; 390 user } $ svn blame button.c -g …G 383 sally retval = inverse_func(button, path); G 383 sally return retval; 390 user } 22 22

23 Tags Fotografia do projeto no tempo
Utiliza o mesmo conceito de copy utilizado na criação de branches $ svn copy \ \ -m "Tagging the 1.0 release of the 'calc' project." Committed revision 902. 23 23

24 Tags Crítica! usuário desavisado usuário mal intencionado
solução de contorno via script do administrador apesar disso, não se recomenda o script 24 24

25 Tags Complexas Disponibilização da working-copy para outros desenvolvedores $ ls my-working-copy/ $ svn copy my-working-copy \ \ -m "Tag my existing working copy state." Committed revision 940. 25 25

26 Manutenção dos branches
Organização dos diretórios do repositório /trunk /branches /tags Poderíamos então termos um diretório funcionando como uma prateleira? /shelf 26 26

27 Remoção de branches e tags
Branches podem ser removidos e recuperados remoção $ svn delete \ -m "Removing obsolete branch of calc project." Committed revision 375. restauração $ svn copy \ \ -m "Restore my-calc-branch." Committed revision 376. 27 27

28 Políticas de branches comuns
Release Branches desenvolvedores trabalhando no trunk o trunk é copiado para o “release branch” times trabalham em paralelo o branch é “tagged” e “released” 28 28

29 Políticas de branches comuns
Feature Branches um branch temporário é criado para trabalhar em mudanças complexas nascem, são integrados no trunk e morrem são úteis quando uma modificação necessita de commits instáveis (“quebrados”)‏ 29 29

30 Políticas de branches comuns
Vendor Branches é geralmente usado quando depende-se de customizações em bibliotecas de terceiros cria-se um diretório /vendor adiciona-se a lib a este diretório (/vendor/libxpto)‏ 30 30

31 Políticas de branches comuns
Vendor Branches mantém-se uma versão atual (/vendor/libxpto/current)‏ versões específicas (/vendor/libxpto/1.0)‏ 31 31

32 Políticas de branches comuns
Vendor Branches exemplo $ svn import /path/to/libcomplex-1.0 \ \ -m "importing initial 1.0 vendor drop" $ svn copy \ \ -m "tagging libcomplex-1.0" $ svn copy \ \ -m "bringing libcomplex-1.0 into the main branch" $ cd working-copies/calc $ svn merge ^/vendor/libcomplex/1.0 \ ^/vendor/libcomplex/current \ libcomplex … # resolve all the conflicts between their changes and our changes $ svn commit -m "merging libcomplex-1.1 into the main branch" 32 32

33 Capítulo 4, “Branching and Merging”, de Ben Collins-Sussman, Brian W
Capítulo 4, “Branching and Merging”, de Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato, “Version Control with Subversion” Grupo 5 André Ribeiro Coelho Rafael de Souza Santos


Carregar ppt "Capítulo 4, “Branching and Merging”, de Ben Collins-Sussman, Brian W"

Apresentações semelhantes


Anúncios Google