SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Universidade Federal do Pará
III Semana Acadêmica da FACOMP
Centro Acadêmico de Ciência da Computação

Utilizando SVN no Desenvolvimento de Software

Manoel Afonso Filho
manoel.lima@icen.ufpa.br
8 de Novembro de 2013
Ementa
●

Introdução

●

Configuração do Projeto

●

Principais Comandos

●

Incorporação no Processo de Desenvolvimento

●

Branching, Merging, Tagging

●

Resolução de Conflitos

●

Configuração de um Servidor SVN

●

Outros Softwares de Controle de Versão
Introdução
●

O desenvolvimento de software necessita de
um rastreamento das mudanças feitas.
●
●

●

Quando foi alterado?

●

●

O que foi alterado?
Quem alterou?

Vários desenvolvedores trabalhando ao
mesmo tempo.
Documentação, arquivos de configuração,
código-fonte.
Introdução
●

●

Subversion é um sistema de controle de
versões bastante popular.
É um sistema centralizado.
●

●

●

Um servidor armazena os arquivos e permite o
trabalho colaborativo.

Armazena informações de diretórios e
arquivos.
Multiplataforma
Introdução
●

Alguns serviços de hospedagem SVN:
●

Google Code

●

Assembla

●

RiouxSVN
Introdução
●

Para sistemas Windows, podemos usar o
cliente TortoiseSVN.
http://tortoisesvn.net/downloads.html

●

Para sistemas Linux, podemos usar a versão
em linha de comando, embora existam vários
clientes gráficos.
sudo apt-get install subversion
Configuração do Projeto
●

●

●

●

Criação de um repositório local
Linux:
$mkdir -p ~/MinicursoSVN/repos
$svnadmin create ~/MinicursoSVN/repos/
Windows:
TortoiseSVN > Criar repositório aqui
A URL do nosso repositório local é:
file:///home/usuario/MinicursoSVN/repos/
Configuração do Projeto
●

Diretório trunk:
●

●

Diretório tags:
●

●

É onde as principais atividades de desenvolvimento ocorrem.
Geralmente é neste diretório em que fazemos o check-out.
Armazena snapshots do projeto. Exemplo: Qual código pode
ir para a release.

Diretório branches:
●

São as linhas de desenvolvimento. Exemplo: Criar uma
branch para fazer uma release. A branch foca na estabilidade
enquanto que a trunk continua a desenvolver novos
recursos.
Configuração do Projeto
●

Criação do diretório base para o projeto
$svn mkdir -m "Criação do diretório base."
file:///<URL_BASE>/Exemplo
Configuração do Projeto
●

Criação do diretório base para o projeto
$svn mkdir -m "Criação do diretório base."
file:///<URL_BASE>/Exemplo
$svn mkdir -m "Configuração Inicial"
file:///<URL_BASE>/Exemplo/trunk
Configuração do Projeto
●

Criação do diretório base para o projeto
$svn mkdir -m "Criação do diretório base."
file:///<URL_BASE>/Exemplo
$svn mkdir -m "Configuração Inicial"
file:///<URL_BASE>/Exemplo/trunk
$svn mkdir -m "Configuração Inicial"
file:///<URL_BASE>/Exemplo/tags
Configuração do Projeto
●

Criação do diretório base para o projeto
$svn mkdir -m "Criação do diretório base."
file:///<URL_BASE>/Exemplo
$svn mkdir -m "Configuração Inicial"
file:///<URL_BASE>/Exemplo/trunk
$svn mkdir -m "Configuração Inicial"
file:///<URL_BASE>/Exemplo/tags
$svn mkdir -m "Configuração Inicial"
file:///<URL_BASE>/Exemplo/branches
Configuração do Projeto
●

Criação do diretório base para o projeto
(TortoiseSVN)
●

TortoiseSVN > Repo-browser

●

Digitar a URL do repositório

●

Criar as pastas necessárias para o projeto
Configuração do Projeto
●

Importando para o repositório
$cd desenv/projeto-importar
$svn import -m "Import Inicial"
<URL_BASE>/Exemplo/trunk
Configuração do Projeto
●

Importando para o repositório (TortoiseSVN)
●

Clique direito no diretório que se quer importar

●

TortoiseSVN > Importar...

●

Digitar a <URL_BASE>/Exemplo/trunk

●

Digitar a mensagem
Principais Comandos
●

Check-out
●

●
●

●

Antes de alterar o código, é preciso obter uma
cópia dos arquivos do repositório.
Esse é o processo de check-out.
Os arquivos ficarão armazenados em um diretório
local chamado de cópia de trabalho.
Em geral, fazemos o check-out do trunk.

$svn checkout <URL_BASE>/projeto/trunk projeto
Principais Comandos
●

Commit (Check in)
●

●

Após termos feito as mudanças no código, faremos
o commit.
Disponibiliza as nossas mudanças para todos no
repositório.

$svn commit -m "Commit inicial"
Principais Comandos
●

Update
●

●

●

Quando há vários desenvolvedores no mesmo projeto,
todos estarão fazendo seus commits no repositório.
O comando update obtém essas mudanças para a
nossa cópia de trabalho.
Durante o update, o SVN informa o que está sendo
alterado na nossa cópia de trabalho.
–
–

Arquivos adicionados, removidos e atualizados
Arquivos cujo novo conteúdo foi incorporado à versão local

$svn update
Principais Comandos
●

Adicionando arquivos e diretórios
●

Novos arquivos/diretórios não são enviados
automaticamente para o repositório.

●

Precisamos adicioná-los ao controle de versão.

●

Serão enviados ao repositório no próximo commit.

$svn add <arquivos>
Principais Comandos
●

Removendo arquivos e diretórios
●
●

●

Similar a adicionar arquivos.
Se quisermos apagar um arquivo/diretório,
primeiro o marcamos para remoção.
No próximo commit a remoção é refletida no
servidor.

$svn delete <arquivos>
Principais Comandos
●

Reverter mudanças da cópia de trabalho
●

●

Restaura a cópia de trabalho para como ela estava
quando foi realizado o último check-out ou update.
Reverter não obtém as últimas alterações do
repositório; update faz isso.

$svn revert <aquivo>
$svn revert -R <diretório>
$svn revert -R . Projeto inteiro

Arquivos e diretórios
específicos
Incorporação no Processo de Desenvolvimento

●

Check-out de um projeto
Incorporação no Processo de Desenvolvimento

●

Check-out de um projeto
Incorporação no Processo de Desenvolvimento

●

Check-out de um projeto
Incorporação no Processo de Desenvolvimento

●

Check-out de um projeto
Incorporação no Processo de Desenvolvimento

●

Commit
Incorporação no Processo de Desenvolvimento

●

Ignorando arquivos e diretórios
Branching, Merging, Tagging
●

Criando uma branch
●

●

Os nomes das branchs podem conter qualquer
caractere que um diretório possa ter. Mas, em
geral, se usa nomes alfanuméricos.
Podemos usar uma branch com o nome RB
(Release Branch) seguido do número de versão.

$svn copy -m "Criando branch"
<URL_BASE>/trunk
<URL_BASE>/branches/RB_1.0
Branching, Merging, Tagging
●

Merging:
●

Serve para inserir as correções feitas em alguma
branch no trunk.

$svn merge -c 16 <BASE_URL>/trunk
$svn commit -m "Juntou r16 do trunk".
Branching, Merging, Tagging
●

Tagging:
●

●

Podemos utilizar as tags para saber quais partes de
código compõem uma release. Por isso, são apenas
leitura (read-only).
Não se deve fazer commits numa tag.

$svn update
$svn copy . <BASE_URL>/tags/REL_1.0.0 -m
"Criando tag R1.0.0"
Resolução de Conflitos
●

●

●

Ocorre quando duas pessoas alteram a mesma
parte do arquivo.
Conflitos devem ser raros pois indicam que
mais de uma pessoa está trabalhando na
mesma coisa.
Caso, ao fazer update ocorra um conflito, o
SVN nos dá várias opções de resolução.
Resolução de Conflitos
●

●

●

●

●

●

P: Postergar o conserto do conflito. Os arquivos são
salvos com os marcadores de conflitos (sequências de
<<< e >>>).
Df: Exibe um diff de todas as mudanças no arquivo.
E: Edita o arquivo em um editor. Manualmente encontra e
resolve os conflitos.
R: Marca como resolvido, aceitando todas as edições que
fizemos.
Mf: "My File". Ignora a versão do repositório e usa a nossa.
Tf: "Their File". Ignora as nossas mudanças e usa a do
repositório.
Configuração de um Servidor SVN
●

●

Em sistemas Linux, utiliza-se o servidor Apache
com os módulos do Subversion.
Em sistemas Windows há disponível o servidor
fornecido pela CollabNet. Disponível em:
http://www.collab.net/downloads/subversion

●

Também é possível utilizar hospedagem de
terceiros, como Google Code, RiouxSVN,
Assembla, etc.
●

Alguns são gratuitos, outros requerem que o
código-fonte seja aberto, etc.
Outros Softwares de Controle de Versão

●

Git:
●
●

●

●

Funciona localmente, por padrão
Git armazena estado, história e integridade do
código fonte, enquanto que SVN armazena apenas
estado.
Algumas operações são mais velozes no Git do que
no SVN.
Possui uma camada criptográfica para verificar a
integridade pelo repositório.
Outros Softwares de Controle de Versão

●

GNU Bazaar:
●

●
●

●

●

Pode ser usado por um único desenvolvedor
trabalhando em múltiplas branches de conteúdo
local, ou por equipes colaborando pela rede.
Multiplataforma.
Eficiente em grandes quantidades de
armazenamento e velocidade.
Integrado ao Launchpad (forncedor de pacotes
para o Ubuntu).
Extensível por meio de plugins.
Leitura Recomendada
●

Pragmatic Guide to Subversion. Mike Mason.
2010. Pragmatic Programmers.
OBRIGADO!

Weitere ähnliche Inhalte

Was ist angesagt?

Como fazer controle de versões de dados e modelos de Machine Learning usando...
 Como fazer controle de versões de dados e modelos de Machine Learning usando... Como fazer controle de versões de dados e modelos de Machine Learning usando...
Como fazer controle de versões de dados e modelos de Machine Learning usando...Alexandre Ray
 
CVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - BásicoCVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - BásicoMarden Neubert
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e GitIgor Steinmacher
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesLeandro Cavalcante
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVNLuciano Lima
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de GitMatheus Fidelis
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Mauro George
 
Curso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - AvançadoCurso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - AvançadoMarden Neubert
 

Was ist angesagt? (20)

Como fazer controle de versões de dados e modelos de Machine Learning usando...
 Como fazer controle de versões de dados e modelos de Machine Learning usando... Como fazer controle de versões de dados e modelos de Machine Learning usando...
Como fazer controle de versões de dados e modelos de Machine Learning usando...
 
CVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - BásicoCVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - Básico
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 
Git
GitGit
Git
 
Docker
DockerDocker
Docker
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Crud
CrudCrud
Crud
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVN
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de Git
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
 
Curso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - AvançadoCurso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - Avançado
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Curso de CVS - Lab 2
Curso de CVS - Lab 2Curso de CVS - Lab 2
Curso de CVS - Lab 2
 

Ähnlich wie SVN no Desenvolvimento de Software

Apresentação maven
Apresentação mavenApresentação maven
Apresentação mavenAndré Justi
 
[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de VersãoMarco Rosner
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoFabricio Nogueira
 
MiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIEMiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIECloves da Rocha
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Tchelinux
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de ConfiguraçãoWagner Zaparoli
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
CVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - AdministraçãoCVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - AdministraçãoMarden Neubert
 
Aula 4 gerência de configuração de software1
Aula 4   gerência de configuração de software1Aula 4   gerência de configuração de software1
Aula 4 gerência de configuração de software1Tiago Vizoto
 
Controle de versão
Controle de versãoControle de versão
Controle de versãoZé Pereira
 
SVN com TortoiseSVN
SVN com TortoiseSVNSVN com TortoiseSVN
SVN com TortoiseSVNPaulo Remoli
 

Ähnlich wie SVN no Desenvolvimento de Software (20)

Dojo - SVN
Dojo - SVNDojo - SVN
Dojo - SVN
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básico
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Controle de versões com o Subversion
Controle de versões com o SubversionControle de versões com o Subversion
Controle de versões com o Subversion
 
Svn - grupo de estudos sol7
Svn - grupo de estudos sol7Svn - grupo de estudos sol7
Svn - grupo de estudos sol7
 
“Revision Control Systems: Subversion (SVN)” por Tiago Rodrigues
“Revision Control Systems: Subversion (SVN)” por Tiago Rodrigues“Revision Control Systems: Subversion (SVN)” por Tiago Rodrigues
“Revision Control Systems: Subversion (SVN)” por Tiago Rodrigues
 
MiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIEMiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIE
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
Svn e processos de controle de código
Svn e processos de controle de códigoSvn e processos de controle de código
Svn e processos de controle de código
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
CVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - AdministraçãoCVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - Administração
 
Aula 4 gerência de configuração de software1
Aula 4   gerência de configuração de software1Aula 4   gerência de configuração de software1
Aula 4 gerência de configuração de software1
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
Controle de versão
Controle de versãoControle de versão
Controle de versão
 
SVN com TortoiseSVN
SVN com TortoiseSVNSVN com TortoiseSVN
SVN com TortoiseSVN
 

SVN no Desenvolvimento de Software

  • 1. Universidade Federal do Pará III Semana Acadêmica da FACOMP Centro Acadêmico de Ciência da Computação Utilizando SVN no Desenvolvimento de Software Manoel Afonso Filho manoel.lima@icen.ufpa.br 8 de Novembro de 2013
  • 2. Ementa ● Introdução ● Configuração do Projeto ● Principais Comandos ● Incorporação no Processo de Desenvolvimento ● Branching, Merging, Tagging ● Resolução de Conflitos ● Configuração de um Servidor SVN ● Outros Softwares de Controle de Versão
  • 3. Introdução ● O desenvolvimento de software necessita de um rastreamento das mudanças feitas. ● ● ● Quando foi alterado? ● ● O que foi alterado? Quem alterou? Vários desenvolvedores trabalhando ao mesmo tempo. Documentação, arquivos de configuração, código-fonte.
  • 4. Introdução ● ● Subversion é um sistema de controle de versões bastante popular. É um sistema centralizado. ● ● ● Um servidor armazena os arquivos e permite o trabalho colaborativo. Armazena informações de diretórios e arquivos. Multiplataforma
  • 5. Introdução ● Alguns serviços de hospedagem SVN: ● Google Code ● Assembla ● RiouxSVN
  • 6. Introdução ● Para sistemas Windows, podemos usar o cliente TortoiseSVN. http://tortoisesvn.net/downloads.html ● Para sistemas Linux, podemos usar a versão em linha de comando, embora existam vários clientes gráficos. sudo apt-get install subversion
  • 7. Configuração do Projeto ● ● ● ● Criação de um repositório local Linux: $mkdir -p ~/MinicursoSVN/repos $svnadmin create ~/MinicursoSVN/repos/ Windows: TortoiseSVN > Criar repositório aqui A URL do nosso repositório local é: file:///home/usuario/MinicursoSVN/repos/
  • 8. Configuração do Projeto ● Diretório trunk: ● ● Diretório tags: ● ● É onde as principais atividades de desenvolvimento ocorrem. Geralmente é neste diretório em que fazemos o check-out. Armazena snapshots do projeto. Exemplo: Qual código pode ir para a release. Diretório branches: ● São as linhas de desenvolvimento. Exemplo: Criar uma branch para fazer uma release. A branch foca na estabilidade enquanto que a trunk continua a desenvolver novos recursos.
  • 9. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo
  • 10. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/trunk
  • 11. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/trunk $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/tags
  • 12. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/trunk $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/tags $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/branches
  • 13. Configuração do Projeto ● Criação do diretório base para o projeto (TortoiseSVN) ● TortoiseSVN > Repo-browser ● Digitar a URL do repositório ● Criar as pastas necessárias para o projeto
  • 14. Configuração do Projeto ● Importando para o repositório $cd desenv/projeto-importar $svn import -m "Import Inicial" <URL_BASE>/Exemplo/trunk
  • 15. Configuração do Projeto ● Importando para o repositório (TortoiseSVN) ● Clique direito no diretório que se quer importar ● TortoiseSVN > Importar... ● Digitar a <URL_BASE>/Exemplo/trunk ● Digitar a mensagem
  • 16. Principais Comandos ● Check-out ● ● ● ● Antes de alterar o código, é preciso obter uma cópia dos arquivos do repositório. Esse é o processo de check-out. Os arquivos ficarão armazenados em um diretório local chamado de cópia de trabalho. Em geral, fazemos o check-out do trunk. $svn checkout <URL_BASE>/projeto/trunk projeto
  • 17. Principais Comandos ● Commit (Check in) ● ● Após termos feito as mudanças no código, faremos o commit. Disponibiliza as nossas mudanças para todos no repositório. $svn commit -m "Commit inicial"
  • 18. Principais Comandos ● Update ● ● ● Quando há vários desenvolvedores no mesmo projeto, todos estarão fazendo seus commits no repositório. O comando update obtém essas mudanças para a nossa cópia de trabalho. Durante o update, o SVN informa o que está sendo alterado na nossa cópia de trabalho. – – Arquivos adicionados, removidos e atualizados Arquivos cujo novo conteúdo foi incorporado à versão local $svn update
  • 19. Principais Comandos ● Adicionando arquivos e diretórios ● Novos arquivos/diretórios não são enviados automaticamente para o repositório. ● Precisamos adicioná-los ao controle de versão. ● Serão enviados ao repositório no próximo commit. $svn add <arquivos>
  • 20. Principais Comandos ● Removendo arquivos e diretórios ● ● ● Similar a adicionar arquivos. Se quisermos apagar um arquivo/diretório, primeiro o marcamos para remoção. No próximo commit a remoção é refletida no servidor. $svn delete <arquivos>
  • 21. Principais Comandos ● Reverter mudanças da cópia de trabalho ● ● Restaura a cópia de trabalho para como ela estava quando foi realizado o último check-out ou update. Reverter não obtém as últimas alterações do repositório; update faz isso. $svn revert <aquivo> $svn revert -R <diretório> $svn revert -R . Projeto inteiro Arquivos e diretórios específicos
  • 22. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  • 23. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  • 24. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  • 25. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  • 26. Incorporação no Processo de Desenvolvimento ● Commit
  • 27. Incorporação no Processo de Desenvolvimento ● Ignorando arquivos e diretórios
  • 28. Branching, Merging, Tagging ● Criando uma branch ● ● Os nomes das branchs podem conter qualquer caractere que um diretório possa ter. Mas, em geral, se usa nomes alfanuméricos. Podemos usar uma branch com o nome RB (Release Branch) seguido do número de versão. $svn copy -m "Criando branch" <URL_BASE>/trunk <URL_BASE>/branches/RB_1.0
  • 29. Branching, Merging, Tagging ● Merging: ● Serve para inserir as correções feitas em alguma branch no trunk. $svn merge -c 16 <BASE_URL>/trunk $svn commit -m "Juntou r16 do trunk".
  • 30. Branching, Merging, Tagging ● Tagging: ● ● Podemos utilizar as tags para saber quais partes de código compõem uma release. Por isso, são apenas leitura (read-only). Não se deve fazer commits numa tag. $svn update $svn copy . <BASE_URL>/tags/REL_1.0.0 -m "Criando tag R1.0.0"
  • 31. Resolução de Conflitos ● ● ● Ocorre quando duas pessoas alteram a mesma parte do arquivo. Conflitos devem ser raros pois indicam que mais de uma pessoa está trabalhando na mesma coisa. Caso, ao fazer update ocorra um conflito, o SVN nos dá várias opções de resolução.
  • 32. Resolução de Conflitos ● ● ● ● ● ● P: Postergar o conserto do conflito. Os arquivos são salvos com os marcadores de conflitos (sequências de <<< e >>>). Df: Exibe um diff de todas as mudanças no arquivo. E: Edita o arquivo em um editor. Manualmente encontra e resolve os conflitos. R: Marca como resolvido, aceitando todas as edições que fizemos. Mf: "My File". Ignora a versão do repositório e usa a nossa. Tf: "Their File". Ignora as nossas mudanças e usa a do repositório.
  • 33. Configuração de um Servidor SVN ● ● Em sistemas Linux, utiliza-se o servidor Apache com os módulos do Subversion. Em sistemas Windows há disponível o servidor fornecido pela CollabNet. Disponível em: http://www.collab.net/downloads/subversion ● Também é possível utilizar hospedagem de terceiros, como Google Code, RiouxSVN, Assembla, etc. ● Alguns são gratuitos, outros requerem que o código-fonte seja aberto, etc.
  • 34. Outros Softwares de Controle de Versão ● Git: ● ● ● ● Funciona localmente, por padrão Git armazena estado, história e integridade do código fonte, enquanto que SVN armazena apenas estado. Algumas operações são mais velozes no Git do que no SVN. Possui uma camada criptográfica para verificar a integridade pelo repositório.
  • 35. Outros Softwares de Controle de Versão ● GNU Bazaar: ● ● ● ● ● Pode ser usado por um único desenvolvedor trabalhando em múltiplas branches de conteúdo local, ou por equipes colaborando pela rede. Multiplataforma. Eficiente em grandes quantidades de armazenamento e velocidade. Integrado ao Launchpad (forncedor de pacotes para o Ubuntu). Extensível por meio de plugins.
  • 36. Leitura Recomendada ● Pragmatic Guide to Subversion. Mike Mason. 2010. Pragmatic Programmers.