Subversion - SVNPrognus Software Livre Airton Bordin Junior
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
Subversion - SVN
• Sistema de controle de versão (2000);• Substituto do CVS
• algumas limitações.• Livre/open-source;
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
2
Quadro comparativoFuncionalidade CVS SVN
Commit atômico
Renomeações e cópias de arquivos e diretórios
Rastreamento de fusões (merge)
Permissões de repositório
Documentação disponível
Portabilidade
Open source
Interfaces gráficas
Suporta grande repositório
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
3
Subversion - SVN
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
4Comparação de performance de sistemas de controle de versão utilizando o software finalbuilder
Subversion - SVNProjeto Repositório
Apache Software Foundation http://svn.apache.org/repos/asf/
Debian http://svn.debian.org/
Zope http://svn.zope.org/
KDE http://websvn.kde.org/
Mono http://mono.myrealbox.com/
Conectiva Linux https://moin.conectiva.com.br/RepositorySystem
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
5
O repositório
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
6
Comandos básicosComando Atalho Ação Exemplo
checkout coFaz 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
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
7
Outros comandos
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
8
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
Cópias de trabalho x Repositório
• Para cada arquivo o SVN registra duas informações• Em qual revisão seu arquivo local é baseado• Data e hora da ultima vez que a cópia local foi atualizada a partir
do repositório
• Um arquivo local pode estar em um desses 4 estados:• Não-modificado e corrente• Localmente alterado e corrente• Não-modificado e desatualizado• Localmente modificado e desatualizado
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
9
Cópias de trabalho x Repositório
Estado commit update
Não-modificado e corrente Não faz nada Não faz nada
Localmente alterado e corrente
publicação das alterações Não faz nada
Não-modificado e desatualizado
Não faz nada Traz as últimas alterações para a cópia local
Localmente modificado e desatualizado
Erro out-of-date Tenta fundir as alterações
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
10
Ciclo básico de trabalho
• svn update• svn add • svn move• svn status• svn revert• svn commit• svn checkout• svn info• svn diff
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
11
Ciclo básico de trabalho
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
12
• Baixando uma cópia de trabalho da árvore de desenvolvimento
• Atualizando uma cópia já existente
• Obtendo informações sobre a cópia de trabalho
• Verificando o que foi alterado
Ciclo básico de trabalho
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
13
• Minhas alterações
• Alterações entre duas revisões
Ciclo básico de trabalho
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
14
• Verificando o log de alterações
• Enviando as modificações para o servidor
Códigos de status
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
15
Código Significado
U Arquivo de trabalho foi atualizado
G Alterações no repositório foram automaticamente incorporadas a cópia de trabalho (Merge)
M Arquivo de trabalho está modificado.
C O arquivo está em conflito com a versão do respositório
? O arquivo não está sob controle de versão
! O arquivo está sob controle de versão mas está ausente ou incompleto
A O arquivo será adicionado ao controle de versão (após commit)
A+ O arquivo será movido (após commit)
D O arquivo será deletado (após commit)
Resolução de conflitos• SVN exibe o código de status C durante o update;• Adiciona marcações de conflito no arquivo;• Strings especiais que delimitam os “lados” do conflito.
• <<<<<<< .mine• =======• >>>>>>> .rXXX
• Para cada conflito mantém 3 arquivos extras não-versionados;• Filename.mine;• Filename.rOldRev (revisão do arquivo no seu diretório);• Filename.rNewRev (revisão do repositório).
• Além do arquivo original, com as marcações;
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
16
Resolução de conflitos
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
17
Resolução de conflitos
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
18
Ramificações - Branch• Linha de desenvolvimento independente de outra linha;• Partilham um histórico em comum;• Sempre se inicia como cópia de outra coisa;
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
19
Ramificações - Branch
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
20
• Criando uma ramificação – Branch:
Ramificações - Branch
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
21
• As modificações são feitas de forma independente
Ramificações - Branch
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
22
• Aplicando alterações feitas em outra ramificação:
Ramificações - Branch
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
23
• Mesclando branchs:
Patch
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
24
Referências• http://dev.prognus.com.br/processo/wiki/Guias/HowTo/
UsandoSVN
• http://knaddison.com/technology/svn-status-code-cheat-sheet
• http://www.skill-guru.com/blog/2010/08/25/comparin-svn-and-cvs/
• http://www.dicasl.com.br/arquivo/criar_e_usar_um_servidor_svn.php
• http://code.google.com/p/svnbook-pt-br/downloads/list
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
25
11/0
4/23
Prog
nus
Soft
war
e Li
vre
airt
on@
prog
nus.
com
.br
26