61
Gerência de Configuração: Subversion Leonardo Gresta Paulino Murta [email protected]

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

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 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

Gerência de Configuração: Subversion

Leonardo Gresta Paulino Murta

[email protected]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 61: 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

Gerência de Configuração: Subversion

Leonardo Gresta Paulino Murta

[email protected]