svn > subversion
svn>
subversion
QUEM TEM
MEDODE MUDANÇA?
Na natureza nada se cria, nada se perde, tudo se transforma.“
Antoine Lavoisier
MUDANÇASSÃO INEVITÁVEIS
SOURCE CONTROL SYSTEMS
TIMETRAVEL
svn>
REPOSITÓRIO
ESTRUTURABÁSICA
/trunk
versão estávelpronto pra ser lançado em produção
/branch
trabalhar paralelamentedesenvolver novas funcionalidades
/tag
marco históricoum rótulo pra identificar facilmente algo
SVNCOMMANDS
obtendo arquivos do repositório
usado para obtermos os arquivos de umprojeto já existente ao iniciarmos nele
$ svn checkout
adicionando arquivos ao controle de versão
usado para adicionarmos novos arquivoscriados ao controle de versão do svn
$ svn add
os novos arquivos só são adicionados aorepositório remoto após o commit
obtendo as modificações do repositório
usado para atualizarmos os arquivoscom as modificações do repositório
$ svn update
removendo arquivos do controle de versão
usado para remover arquivos$ svn delete
os arquivos só são removidosdo repositório remoto após o commit
enviando as modificações para o repositório
usado para enviar ao repositórioas modificações realizadas nos arquivos
$ svn commit
faça um update antes do commit, assim você pode resolver os conflitos e revalidar a versão antes de commitar
renomeando arquivos do controle de versão
usado para renomear arquivos$ svn mv
os arquivos só serão renomeados norepositório remoto após o commit
DEMO
IMPLEMENTANDONOVAS FUNCIONALIDADES
criando uma branch
geramos uma nova linha de desenvolvimentoa partir da versão mais estável, ou seja, a trunk
$ svn copy
trabalhando com a branch
usamos o mesmo comando que vimos antespara obter os arquivos já existentes norepositório, só que dessa vez apontamospara a branch que estamos trabalhando
$ svn checkout
DEMO
CONFLITOS
causa comum
$ svn commit FILE revision 5
$ svn commit FILE revision 5
revision 6
$ svn: Out of date $ svn update$ svn: Conflicted!
o que fazer?
(...)
resolvendo conflitos comoum altruísta
revertemos as mudanças locais e atualizamos os arquivos com a versão do repositório
$ svn revert$ svn update
resolvendo conflitos comoum egoísta
ignoramos as mudanças vindas do repositório e mantemos as mudanças locais
$ cp FILE.mine FILE$ svn resolved FILE
resolvendo conflitos comoum adulto
verificamos as mudanças vindas do repositório com as mudanças locais
<<<<<<< .mineThis is fun stuff! =======This is a doc file >>>>>>> .r6
DEMO
FINALIZANDOO TRABALHO
merge
mesclamos as mudanças da branch na trunk$ svn merge --reintegrate
traga as mudanças da trunk para a branch,resolva os conflitos e depois faça o merge na trunk
DEMO
CRIANDO MARCOSNA HISTÓRIA
criando uma tag
gerarmos uma tag de uma release, snapshote etc
$ svn copy
DEMO
BOAS PRÁTICASSVN + VS
ignorar bin e obj
removemos os arquivos de build do controle de versão
controle de versão de código não trabalha bem com arquivos binários
atualizar o .csproj
ao adicionar novos arquivos devemos incluir o .csproj no nosso commit, assim, os arquivos adicionados ficam disponíveis para os demais membro do time trabalhando no projeto
ignorar o .csproj.user
esse arquivo armazena suas configurações da IDE do Visual Studio, por mais legal que elas possam ser pra você, gosto é gosto e não se discute
ignorar o *.suo
outro arquivo que armazena opções do usuário para a solução e não deve ser incluído no controle de versão
DEMO
RECOMENDAÇÕES
TortoiseSVN
extensão pro Windows
FREE!
http://tortoisesvn.net/
VisualSVN
plugin integrado ao Visual Studio
https://www.visualsvn.com/visualsvn/
Se quiser derrubar uma árvore na metade do tempo, passe o dobro
amolando o machado.“
Desconhecidomantenha atualizado seus plugins