gerência de configuração: subversionleomurta/courses/2009.1/gc/aula8.pdf · leonardo murta...
TRANSCRIPT
![Page 2: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/2.jpg)
Agenda
• Introdução
• Controle de concorrência
• Repositório
• Espaço de trabalho
• Junção
• Propriedades
Leonardo Murta Gerência de Configuração: Subversion 2
![Page 3: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/3.jpg)
Histórico
• Projeto iniciado em 2000
– Iniciativa da CollabNet
– Open-Source
• Intuito de substituir o CVS
– Similar no uso
– Melhor na implementação
• Auto controlado desde agosto de 2001
Leonardo Murta Gerência de Configuração: Subversion 3
![Page 4: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/4.jpg)
Características
• Versionamento de diretórios
• Copia, renomeação e movimentação com histórico
• Check-ins atômicos
• Versionamento de meta-dados
• Acesso via http/https
• Uso extensivo de deltas– Delta de binários
– Delta bidirecional na comunicação cliente/servidor
Leonardo Murta Gerência de Configuração: Subversion 4
![Page 5: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/5.jpg)
Arquitetura
Leonardo Murta Gerência de Configuração: Subversion 5
![Page 6: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/6.jpg)
Problema da concorrência
Leonardo Murta Gerência de Configuração: Subversion 6
![Page 7: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/7.jpg)
Política pessimista
Leonardo Murta Gerência de Configuração: Subversion 7
![Page 8: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/8.jpg)
Política pessimista
• Problemas administrativos– Bloqueios esquecidos podem atrasar o andamento do projeto
• Problemas de serialização desnecessária– Em alguns casos, as modificações atuam sobre partes
independentes dos arquivos bloqueados
• Falsa sensação de segurança– Dependências semânticas podem cruzar a fronteira de arquivos
• Bloqueios são necessários– Quando se trata de arquivos que não podem ser combinados
Leonardo Murta Gerência de Configuração: Subversion 8
![Page 9: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/9.jpg)
Política otimista (1/2)
Leonardo Murta Gerência de Configuração: Subversion 9
![Page 10: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/10.jpg)
Política otimista (2/2)
Leonardo Murta Gerência de Configuração: Subversion 10
![Page 11: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/11.jpg)
Controle de concorrência no Subversion
• Política pessimista e otimista em conjunto• Qualquer artefato pode ser sujeito a bloqueio• Artefatos podem ser demarcados com “necessita de
bloqueio”• Artefatos bloqueados por um desenvolvedor podem ser
editados por outros– O commit dos outros somente ocorrerá depois do término do
bloqueio– Os outros deverão fazer merge
• Artefatos bloqueados podem ser “roubados”– Bloqueio apóia à comunicação– Bloqueio não engessa o processo
Leonardo Murta Gerência de Configuração: Subversion 11
![Page 12: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/12.jpg)
Repositório
• Sistema de arquivos versionado– Check-in equivale a uma foto do sistema de arquivos num dado
momento
• Versionamento global– Número de versão dado por commit
– Identificador implícito de conjunto de modificações
• Algoritmo “Bubble up”– Economia de espaço
– Velocidade na atualização
– Controle do histórico
Leonardo Murta Gerência de Configuração: Subversion 12
![Page 13: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/13.jpg)
Sistema de arquivo convencional
Leonardo Murta Gerência de Configuração: Subversion 13
Dim
ensã
o E
SPA
ÇO
![Page 14: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/14.jpg)
Sistema de arquivo versionado
Leonardo Murta Gerência de Configuração: Subversion 14
Dim
ensã
o E
SPA
ÇO
Dimensão TEMPO
![Page 15: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/15.jpg)
Versionamento global
• O repositório é mais que um conjunto de arquivos independentes
– Mudança de versionamento de arquivos para versionamento do repositório
– Versão N é o estado do repositório depois do commit N
– “Versão 5 do arquivo X” passa a ser lido como “arquivo X na versão 5 do repositório”
Leonardo Murta Gerência de Configuração: Subversion 15
![Page 16: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/16.jpg)
Versionamento global
Leonardo Murta Gerência de Configuração: Subversion 16
Repositório (versão 1)
Arquivo1 (versão 1)Arquivo2 (versão 1)Arquivo3 (versão 1)
Repositório (versão 2)
Arquivo1 (versão 2)Arquivo2 (versão 1)Arquivo3 (versão 1)
Repositório (versão 0)
1º commit
2º commit
Repositório (versão 3)
Arquivo1 (versão 2)Arquivo2 (versão 3)Arquivo3 (versão 1)Arquivo4 (versão 3)
Repositório (versão 4)
Arquivo1 (versão 4)Arquivo2 (versão 3)Arquivo3 (versão 4)Arquivo4 (versão 3)
4º commit3º commit
Arquivo1Versão 1Versão 2Versão 4
Arquivo2Versão 1Versão 3
Arquivo3Versão 1Versão 4
Arquivo4Versão 3
Relatório por arquivo
![Page 17: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/17.jpg)
Versionamento global
Leonardo Murta Gerência de Configuração: Subversion 17
Repositório (versão 1)
Arquivo1 (versão 1)Arquivo2 (versão 1)Arquivo3 (versão 1)
Repositório (versão 2)
Arquivo1 (versão 2)Arquivo2 (versão 1)Arquivo3 (versão 1)
Repositório (versão 0)
1º commit
2º commit
Repositório (versão 3)
Arquivo1 (versão 2)Arquivo2 (versão 3)Arquivo3 (versão 1)Arquivo4 (versão 3)
Repositório (versão 4)
Arquivo1 (versão 4)Arquivo2 (versão 3)Arquivo3 (versão 4)Arquivo4 (versão 3)
4º commit3º commit
1º commitArquivo1 adicionadoArquivo2 adicionadoArquivo3 adicionado
2º commitArquivo1 modificado
3º commitArquivo2 modificadoArquivo4 adicionado
Relatório por commit
4º commitArquivo1 modificadoArquivo3 modificado
![Page 18: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/18.jpg)
Comando log
• Fornece um relatório sobre as versões do repositório– Por arquivo– Por commit
• Exibe, para cada versão– Identificação (número da modificação)– Quem (autor)– Quando (data)– Onde (caminhos)– Como (ação nos caminhos)– O que (mensagem)– Por que (número da solicitação de modificação)
Leonardo Murta Gerência de Configuração: Subversion 18
![Page 19: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/19.jpg)
Comando log
Leonardo Murta Gerência de Configuração: Subversion 19
Exemplo
Sintaxe
svn log [svn log [-q] [-v] [-r VERSÃO] [URL]
svn log
r92 | ronaldo | 2007r91 | paulacibele | 2007r90 | paulacibele | 2007r51 | marinho | 2006r47 | alexrd | 2006r37 | mlopes | 2005r31 | alexrd | 2005...
svn log -q https://reuse.cos.ufrj.br/svn/brecho/trunk/build.xml
r92 | ronaldo | 2007-04-01 17:28:55 -0300 (dom, 01 abr 2007)r91 | paulacibele | 2007-03-19 12:53:47 -0300 (seg, 19 mar 2007)r90 | paulacibele | 2007-03-19 12:44:20 -0300 (seg, 19 mar 2007)r51 | marinho | 2006-01-18 19:03:39 -0200 (qua, 18 jan 2006)r47 | alexrd | 2006-01-07 10:44:46 -0200 (sáb, 07 jan 2006)r37 | mlopes | 2005-09-27 00:46:04 -0300 (ter, 27 set 2005)r31 | alexrd | 2005-09-12 11:15:33 -0300 (seg, 12 set 2005)...
![Page 20: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/20.jpg)
Comando log
Leonardo Murta Gerência de Configuração: Subversion 20
Exemplo
Sintaxe
svn log [svn log [-q] [-v] [-r VERSÃO] [URL]
svn log
r92 | ronaldo | 2007Caminhos mudados:
Issue #234: Troca do algoritmo de sugestão de categorias
svn log -v -r 92 https://reuse.cos.ufrj.br/svn/brecho
r92 | ronaldo | 2007-04-01 17:28:55 -0300 (dom, 01 abr 2007) | 1 lineCaminhos mudados:
M /trunk/build.xmlM /trunk/src/br/ufrj/cos/reuse/biblioteca/category/CategoryUtil.javaA /trunk/src/br/ufrj/cos/reuse/biblioteca/category/Suggestions.javaM /trunk/src/br/ufrj/cos/reuse/biblioteca/category/dao/HibernateCategoryDAO.java
Issue #234: Troca do algoritmo de sugestão de categorias
![Page 21: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/21.jpg)
Nomes padrões para versões
• HEAD– Versão mais recente do recurso no repositório
• BASE– Versão do recurso no espaço de trabalho
• COMMITTED– Versão mais recente, anterior ou igual a BASE, em que
o recurso foi modificado
• PREV– COMMITTED - 1
Leonardo Murta Gerência de Configuração: Subversion 21
![Page 22: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/22.jpg)
Algoritmo “Bubble up”
• Mecanismo interno do Subversion para controle do repositório– Entender esse mecanismo ajuda a entender o funcionamento
do Subversion
• Para um dado commit as ações são– Aplicadas nas folhas– Propagadas para os diretórios pais
• Arquivos e diretórios não afetados pelas modificações são preservados
• Algoritmo utilizado para armazenamento– Reverse delta
Leonardo Murta Gerência de Configuração: Subversion 22
![Page 23: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/23.jpg)
Repositório inicial
Leonardo Murta Gerência de Configuração: Subversion 23
Repositório
1
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
![Page 24: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/24.jpg)
Commit: modificação em um único arquivo
Leonardo Murta Gerência de Configuração: Subversion 24
Repositório
1
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3 Arquivo 3
![Page 25: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/25.jpg)
Propagação para o diretório pai
Leonardo Murta Gerência de Configuração: Subversion 25
Repositório
1
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 2
Arquivo 3
![Page 26: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/26.jpg)
Criação da nova versão
Leonardo Murta Gerência de Configuração: Subversion 26
Repositório
1 2
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 2
Arquivo 3
![Page 27: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/27.jpg)
Commit: adição de um novo arquivo
Leonardo Murta Gerência de Configuração: Subversion 27
Repositório
1 2
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 2
Arquivo 3
Arquivo 4
![Page 28: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/28.jpg)
Propagação para o diretório pai
Leonardo Murta Gerência de Configuração: Subversion 28
Repositório
1 2
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 2
Arquivo 3
Diretório 1
Arquivo 4
![Page 29: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/29.jpg)
Criação da nova versão
Leonardo Murta Gerência de Configuração: Subversion 29
Repositório
1 2
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 2
Arquivo 3
3
Diretório 1
Arquivo 4
![Page 30: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/30.jpg)
Cópia “barata”
• O projeto interno do Subversion visa prover cópias “baratas” de diretório– Os dados não são duplicados
– Conceito semelhante a hard-link do unix
– Somente quando há mudanças, o link é quebrado
– Tempo constante gasto para cópias
• Mecanismo utilizado para– Etiquetas (tags)
– Ramos (branches)
Leonardo Murta Gerência de Configuração: Subversion 30
![Page 31: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/31.jpg)
Versão atual do repositório
Leonardo Murta Gerência de Configuração: Subversion 31
Repositório
5
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 3
Arquivo 4
![Page 32: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/32.jpg)
Diretório 2 copiado para dentro do Diretório 1 com outro nome
Leonardo Murta Gerência de Configuração: Subversion 32
Repositório
5
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 3
Arquivo 4
Diretório 2’
![Page 33: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/33.jpg)
Conteúdo idêntico ao original
Leonardo Murta Gerência de Configuração: Subversion 33
Repositório
5
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 3
Arquivo 4
Diretório 2’
![Page 34: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/34.jpg)
Propagação para o diretório pai
Leonardo Murta Gerência de Configuração: Subversion 34
Repositório
5
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 1
Diretório 3
Arquivo 4
Diretório 2’
![Page 35: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/35.jpg)
Criação da nova versão
Leonardo Murta Gerência de Configuração: Subversion 35
Repositório
5 6
Diretório 1
Arquivo 1
Diretório 2
Arquivo 2
Arquivo 3
Diretório 1
Diretório 3
Arquivo 4
Diretório 2’
![Page 36: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/36.jpg)
Layout do repositório
• Layout é uma convenção– Permite mais de um projeto por repositório
– Ajuda a organizar cada projeto
• Layout sugerido– Um diretório por projeto na raiz do repositório
• Layout para cada projeto– Um diretório para o ramo principal: trunk
– Um diretório para os ramos: branches
– Um diretório para as etiquetas: tags
Leonardo Murta Gerência de Configuração: Subversion 36
![Page 37: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/37.jpg)
Layout do repositóriohttps://svn.ic.uff.br/
proj1/trunk/branches/tags/
dissertacoes/fulano/
trunk/branches/tags/
beltrano/trunk/branches/tags/
...
Leonardo Murta Gerência de Configuração: Subversion 37
![Page 38: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/38.jpg)
Etiquetas e Ramos
• Etiquetas (tags)– Cópias “baratas” do trunk para o diretório tags
– Troca de nome pelo nome da etiqueta
– Por convenção, nenhuma edição é feita sobre esse diretório copiado
• Ramos (branches)– Cópias “baratas” do trunk para o diretório branches
– Troca de nome pelo nome do ramo
– Edição no diretório copiado
Leonardo Murta Gerência de Configuração: Subversion 38
![Page 39: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/39.jpg)
Comando copy
• Copia um arquivo ou diretório com histórico entre caminhos no repositório ou espaço de trabalho
• Casos típicos– URL URL: cópia executada atomicamente no servidor,
utilizada usualmente para criar etiquetas e ramos– Diretório local diretório local: cópia feita no cliente e adição
(com histórico) agendada para o próximo commit
Leonardo Murta Gerência de Configuração: Subversion 39
![Page 40: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/40.jpg)
Comando copy
Leonardo Murta Gerência de Configuração: Subversion 40
Exemplo
Sintaxe
svnsvn copy ORIGEM DESTINO [-m MENSAGEM]
svn
svn
svn
svn copy dir1 dir2/novo_dir_1
svn copy https://svn.ic.uff.br/proj1/trunkhttps://svn.ic.uff.br/proj1/branches/1.0.x-m “Criação do ramo 1.0.x”
svn copy https://svn.ic.uff.br/proj1/branches/1.0.xhttps://svn.ic.uff.br/proj1/tags/1.0.1-m “Criação da etiqueta 1.0.1”
![Page 41: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/41.jpg)
Espaço de trabalho
• Diretório comum no sistema de arquivos local
• Guarda uma cópia limpa do checkout (.svn) – Permite algumas operações off-line
– Permite transmissão de diffs para o servidor
• Área isolada das modificações de outros desenvolvedores– Suas modificações podem ser publicadas com commit
– Modificações de outros podem ser incorporadas com update
• Um usuário pode ter vários espaços de trabalho para um mesmo projeto
Leonardo Murta Gerência de Configuração: Subversion 41
![Page 42: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/42.jpg)
Comando check-out
• Constrói um espaço de trabalho a partir de uma versão do repositório (ou parte dela)
Leonardo Murta Gerência de Configuração: Subversion 42
![Page 43: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/43.jpg)
Comando check-out
Leonardo Murta Gerência de Configuração: Subversion 43
Exemplo
Sintaxe
svn checkout [svn checkout [-r VERSÃO] URL [CAMINHO]
svn
svn
svn
svn checkout https://svn.ic.uff.br/proj1/trunk
svn checkout -r 15 https://svn.ic.uff.br/proj1/trunk
svn checkout https://svn.ic.uff.br/proj1/tags/1.0.3 rel1.0.3
![Page 44: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/44.jpg)
Comando commit
• Envia modificações do espaço de trabalho para o repositório– Detecta automaticamente o que mudou
– Libera todos os bloqueios
– Aplica a modificação de forma atômica no repositório
• Pode não conseguir enviar caso algum outro usuário tenha dado commit– Necessário um update
Leonardo Murta Gerência de Configuração: Subversion 44
![Page 45: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/45.jpg)
Comando commit
Leonardo Murta Gerência de Configuração: Subversion 45
Exemplo
Sintaxe
svn commit [svn commit [-m MENSAGEM] [CAMINHO]
svn
svn
svn commit -m “Adição da versão 1.4.5 do modelo”
svn commit -m “Issue #34: Correção de erro de digitação” src
![Page 46: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/46.jpg)
Comando update
• Atualiza o espaço de trabalho com as últimas modificações existentes no repositório
• Pode encontrar conflitos durante a atualização– É importante verificar cada um dos arquivos atualizados
• Ações sobre o espaço de trabalho– Adição de arquivos (A)– Remoção de arquivos (D)– Atualização de arquivos (U)– Arquivos com conflito (C)– Arquivos combinados (G)
Leonardo Murta Gerência de Configuração: Subversion 46
![Page 47: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/47.jpg)
Comando update
Leonardo Murta Gerência de Configuração: Subversion 47
Exemplo
Sintaxe
svn update [svn update [-r VERSÃO] [CAMINHO]
svn
svn
svn
svn update
svn update -r 12
svn update dir1
![Page 48: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/48.jpg)
Comportamento dos comandos
Arquivo
modificado
localmente
Arquivo
modificado no
repositório
Comando
commit
Commando update
Não Não Nenhuma
ação
Nenhuma ação
Não Sim Nenhuma
ação
Versão local substituída
pela versão do repositório
Sim Não Publica a
versão local
no repositório
Nenhuma ação
Sim Sim Falha,
avisando que
o arquivo está
desatualizado
Versão local combinada
com a versão do repositório
Gerência de Configuração: Subversion 48Leonardo Murta
![Page 49: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/49.jpg)
Ciclo básico de trabalho
Leonardo Murta Gerência de Configuração: Subversion 49
Construção do espaço de trabalho
svn checkoutsvn updatesvn switch
Implementação
svn addsvn deletesvn copysvn movesvn lock
svn blamesvn log
Verificação
svn statussvn diff
svn revert
Integração
svn updatesvn resolvedsvn commit
![Page 50: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/50.jpg)
Junção de ramos
• Deve ser feita em um espaço de trabalho limpo
– Check-out do destino da junção
• Deve ser entendida como diff & apply
• Diff é dependente de ordem
– Diff(A, B): ações necessárias para transformar o caminho A no caminho B
• O diff pode atuar tanto no espaço quanto no tempo
– Espaço: diff entre dois diretórios (copiados de um lugar comum)
– Tempo: diff entre duas versões de um mesmo diretório
Leonardo Murta Gerência de Configuração: Subversion 50
![Page 51: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/51.jpg)
Merge no tempo
• Normalmente usado para ramos
Leonardo Murta Gerência de Configuração: Subversion 51
Espaço de trabalho
apply: ∆1
∆1 = diff(v4, v10)
trunk
1 2
3
6 8 11
124 5 7 109
13 14 15
branches/1.0.x
![Page 52: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/52.jpg)
Merge no espaço
• Normalmente usado para etiquetas
Leonardo Murta Gerência de Configuração: Subversion 52
1.0.0 1.0.1
Espaço de trabalho
apply: ∆1
∆1 = diff(1.0.0, 1.0.1)
trunk
branches/1.0.x
tags
1 2
3 4
6 8 11
125 7 109
13 14 15
![Page 53: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/53.jpg)
Comando merge
• Aplica a diferença entre dois caminhos no espaço de trabalho
• svn merge A B– Calcula as ações que precisam ser feitas para transformar o
caminho A no B– Aplica essas ações no espaço de trabalho
Leonardo Murta Gerência de Configuração: Subversion 53
![Page 54: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/54.jpg)
Comando merge
Leonardo Murta Gerência de Configuração: Subversion 54
Exemplo
Sintaxesvnsvnsvn merge [-c VERSÃO | -r VERSÃO1:VERSÃO2] CAMINHOsvn merge CAMINHO1 CAMINHO2
svn
svn
svn
svn
svn merge -c 23 https://svn.ic.uff.br/proj1/branches/1.0.x
svn merge -c -23 https://svn.ic.uff.br/proj1/branches/1.0.x
svn merge -r 23:29 https://svn.ic.uff.br/proj1/branches/1.0.x
svn merge https://svn.ic.uff.br/proj1/tags/1.0.1https://svn.ic.uff.br/proj1/tags/1.0.2
![Page 55: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/55.jpg)
Sincronização
Leonardo Murta Gerência de Configuração: Subversion 55
∆1 = diff(2, 10)
trunk
4 5 7 109
svn
Espaço de trabalho =
svn
Espaço de trabalho =
svn checkout https://svn.ic.uff.br/proj1/branches/sm15
Espaço de trabalho = branches/sm15
svn merge -r 2:11 https://svn.ic.uff.br/proj1/trunk
Espaço de trabalho = branches/sm15 + (v11 - v2) = branches/sm15 + ((v2 + ∆2) - v2) = branches/sm15 + ∆2
branches/sm15
1
3
6 8 112
∆2 = diff(2, 11)
![Page 56: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/56.jpg)
Sincronização
Leonardo Murta Gerência de Configuração: Subversion 56
∆1 = diff(2, 10)
trunk
4 5 7 9
svn
Espaço de trabalho =
svn
Espaço de trabalho =
svn checkout https://svn.ic.uff.br/proj1/trunk
Espaço de trabalho = trunk
svn merge https://svn.ic.uff.br/proj1/trunkhttps://svn.ic.uff.br/proj1/branches/sm15
Espaço de trabalho = trunk + (v12 - v11) = trunk + ((v2 + ∆1 + ∆2) - (v2 + ∆2)) = trunk + ∆1
branches/sm15
1
3
6 8 112
∆2 = diff(2, 11)
∆2
1210
![Page 57: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/57.jpg)
Sincronização
Leonardo Murta Gerência de Configuração: Subversion 57
∆1 = diff(2, 10)
trunk
4 5 7 9branches/sm15
1
3
6 82
∆2 = diff(2, 11)
∆2
∆1
1210
1311
![Page 58: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/58.jpg)
Ciclo básico de junção
Leonardo Murta Gerência de Configuração: Subversion 58
Construção do espaço de trabalho
svn checkoutsvn updatesvn switch
Junção
svn mergesvn blame
svn log
Verificação
svn statussvn diff
svn revert
Integração
svn updatesvn resolvedsvn commit
![Page 59: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/59.jpg)
Propriedades
• Cada diretório ou arquivo pode ter metadados anexados a ele
– Tuplas <nome, valor>
– Versionados
• Algumas propriedades built-in
– svn:mime-type: tipo do arquivo
– svn:ignore: elementos que não devem ser versionados em um diretório
– svn:needs-lock: indica que o arquivo precisa de política de controle de concorrência pessimista
Leonardo Murta Gerência de Configuração: Subversion 59
![Page 60: Gerência de Configuração: Subversionleomurta/courses/2009.1/gc/aula8.pdf · Leonardo Murta Gerência de Configuração: Subversion 11. Repositório •Sistema de arquivos versionado](https://reader034.vdocuments.mx/reader034/viewer/2022052010/6020c9731b282f6bb27e653e/html5/thumbnails/60.jpg)
Referências
• http://svnbook.red-bean.com/en/1.4
• http://subversion.tigris.org/design.html
Leonardo Murta Gerência de Configuração: Subversion 60