SVN no Desenvolvimento de Software
Upcoming SlideShare
Loading in...5
×
 

SVN no Desenvolvimento de Software

on

  • 644 views

Slides do minicurso "SVN no Desenvolvimento de Software" ministrado na "III Semana Acadêmica da FACOMP" no dia 8 de novembro de 2013.

Slides do minicurso "SVN no Desenvolvimento de Software" ministrado na "III Semana Acadêmica da FACOMP" no dia 8 de novembro de 2013.

Statistics

Views

Total Views
644
Views on SlideShare
644
Embed Views
0

Actions

Likes
1
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

SVN no Desenvolvimento de Software SVN no Desenvolvimento de Software Presentation Transcript

  • 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!