1 / 39

Introdução ao Subversion

Introdução ao Subversion. Repositório de diretórios e arquivos. Roteiro. Introdução Arquitetura do subversion Principais comandos Fluxo de trabalho Boas práticas e bibliografia. Subversion. Introdução. O que é subversion?.

bud
Download Presentation

Introdução ao Subversion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introdução ao Subversion Repositório de diretórios e arquivos

  2. Roteiro • Introdução • Arquitetura do subversion • Principais comandos • Fluxo de trabalho • Boas práticas e bibliografia minora@cefetrn.br

  3. Subversion Introdução minora@cefetrn.br

  4. O que é subversion? • Subversion é uma ferramenta de repositório de diretórios e arquivos (binários ou texto) que permite guardar o histórico das mudanças • Repositório – guardar e recuperar • Histórico – define quem fez, quando e o que fez minora@cefetrn.br

  5. Qual a sua finalidade? • Permitir aos desenvolvedores sincronizar o seu trabalho (código fonte, documentos, diagramas...)‏ • Rastrear as mudanças ao longo do tempo • Permitir diversos “braços” da mesma versão • Braços são trabalhos em paralelos minora@cefetrn.br

  6. Subversion Arquitetura minora@cefetrn.br

  7. Como funciona? (1) Client Interface Repository Interface FSFS Apache mod_dav GUIclient apps Repository access mod_dav_svn DAV Internet (Any TCP/IP Network) Client Library svnserve SVN Commandline client apps Subversion Repository Local Working Copy Management Library Berkley DB Fonte: SubTrain minora@cefetrn.br

  8. Como funciona? (2) • Servidor Subversion • Armazena os arquivos e diretórios • Normalmente códigos fontes, arquivos de configurações, bibliotecas, documentos de projeto • Permite ver o histórico por arquivo • Usuário e data de modificação, observação sobre a mudança e – principalmente – o conteúdo • Não permite edição direta do arquivo • Normalmente o repositório esta associado a um URL • Pode ser acessado via HTTP(S), SVN e Arquivo compartilhado na rede • Quando utilizando a internet, acesso normal via HTTPS ou SVN+SSH minora@cefetrn.br

  9. Como funciona? (3) • Cliente Subversion • Recupera arquivos e diretórios do servidor, criando uma cópia local • Como mantém uma cópia local • As mudanças são realizadas em modo desconectado do servidor • As mudanças são locais, não no servidor • Para modificar a cópia do servidor é necessário enviar (commit) as alterações minora@cefetrn.br

  10. Quais são os clientes subversion? • Navegador HTML (unicamente pelo Apache+DAV) • Eclipse IDE • Subclipse, Subversive • Linux/UNIX • RapidSVN – Tigris client • eSvn – Qt client • kdesvn – KDE client • ViewCVS – web front-end • Windows • TortoiseSVN – Windows explorer integration • Ankhsvn - Visual Studio integration minora@cefetrn.br

  11. Organização interna do repositório Versionamento por módulos Versionamento pelo projeto Root Root trunk Project 1 Project 1 trunk tags Project 2 branches tags Project 1 Project 2 Project 2 trunk branches tags Project 1 branches Project 2 minora@cefetrn.br

  12. O que são thrunk, tags e branches? Root Project 1 Principal linha de desenvolvimento trunk tags Releases branches Preparação de releases, correção de bug Project 2 trunk tags branches minora@cefetrn.br

  13. Subversion Principais comandos minora@cefetrn.br

  14. Principais comandos • Importar arquivos/diretórios para o repositório • Baixar arquivos/diretórios do repositório • Novos – checkout • Antigos – update • Verificar mudanças de arquivos/diretórios • Notificar resolução de conflito de modificações • Enviar mudanças locais para o repositório • Adicionar, apagar e mover arquivos/diretórios • Reverter mudanças a partir do histórico • Bloquear/desbloquear arquivos • Ver histórico de mudanças minora@cefetrn.br

  15. Verificação de mudanças pode retornar • A representação visual depende do cliente • Contudo os principais estados são • O arquivo/diretório será adicionado no repositório (só existe localmente) • O arquivo está com conflito • A versão local foi modificada • Mas existe uma versão mais nova no repositório que a última versão local recuperada • O arquivo/diretório será apagado no repositório • O arquivo/diretório foi apagado localmente mas existe no repositório enquanto não for notificado • O conteúdo do arquivo no repositório foi modificado • O arquivo/diretório será renomeado no repositório • O arquivo/diretório não está sendo controlado pelo subversion • O arquivo/diretório foi configurado para ser ignorado pelo subversion minora@cefetrn.br

  16. Algumas considerações sobre bloqueio de arquivo • A solicitação de bloqueio retornará com erro se o arquivo já estiver bloqueado • Dependendo do cliente utilizado • A modificação do conteúdo do arquivo é bloqueada automaticamente • Ou a modificação pode ser realizada contudo o envio das modificações retornará erro minora@cefetrn.br

  17. Subversion Fluxo de trabalho minora@cefetrn.br

  18. Fluxo de trabalho • Existe 2 tipos de fluxos de trabalho • O fluxo otimista • Otimista porque parte do pressuposto que apenas um desenvolvedor está modificando um determinado arquivo • Quando acontece de mais de uma modificação simultânea, existe a necessidade de intervenção humana para juntar as modificações e depois colocar no repositório • O fluxo pessimista • Aceita a possibilidade que mais de um desenvolvedor irá tentar modificar um mesmo arquivo • Para evitar o acesso simultâneo, trabalha com o bloqueio e desbloqueio do arquivo minora@cefetrn.br

  19. Repositório Subversion Fluxo otimista minora@cefetrn.br

  20. Resumindo as atividades (1) • Baixar atualizações • Se projeto novo, deve ser realizado um checkout • Se projeto existente, realizar um update • Realizar modificações • Considerando código fonte, desenvolver e testar • Só considerar modificação terminada quando teste realizado com sucesso • Verificar novas atualizações • Verificar se existe novas atualizações • Caso exista, baixa as novas atualizações minora@cefetrn.br

  21. Resumindo as atividades (2) • Resolve as diferenças, caso exista • Através de algum editor, junta as modificações • O subversion cria para você a estrutura • Arquivo.extensao – seu arquivo • Arquivo.extensao.mime – seu arquivo mais as últimas modificações (utiliza tags no arquivo) • Arquivo.extensao.rVersaoAntiga • Arquivo.extensao.rVersaoNova • Notifica ao repositório que resolveu as diferenças • Envia as modificações • Envia para o repositório as modificações do arquivo minora@cefetrn.br

  22. Repositório Subversion Fluxo pessimista minora@cefetrn.br

  23. Resumindo as atividades (1) • Baixar atualizações • Se projeto novo, deve ser realizado um checkout • Se projeto existente, realizar um update • Bloqueia arquivo • Notifica bloqueio de arquivo no repositório • Realizar modificações • Considerando código fonte, desenvolver e testar • Só considerar modificação terminada quando teste foi realizado com sucesso • Envia modificações • Além de enviar modificações para o repositório, notifica que o arquivo está liberado minora@cefetrn.br

  24. Um lembrete para o fluxo pessimista • Quando terminar o horário de trabalho e não obtiver sucesso na execução dos testes • Deverá ser liberado (desbloqueado) o arquivo no repositório minora@cefetrn.br

  25. Subversion Status das cópais de trabalho minora@cefetrn.br

  26. Cópias de Trabalho • As cópias de trabalho podem estar em 4 (estados) distintos • Não-modificado e Atualizado • Modficado e Atualizado • Não-modificado e Desatualizado • Modificado e Desatualizado Revisão 10 Revisão 11 Revisão 12 minora@cefetrn.br

  27. Cópias de Trabalho Desatualizadas Cliente 1 Cópia não-modificada e desatualizada Cliente 2 Cópia modificada e desatualizada commit Não altera o repositório update Atualiza a cópia de trabalho para a versão mais nova Revisão 11 Revisão 11 commit É indicado um erro, o arquivo deve ser atualizado primeiro update Deverá ser feita uma junção (merge) entre a cópia e a versão atual do servidor Revisão 10 Revisão 11 Revisão 12 minora@cefetrn.br

  28. Cópias de Trabalho Atualizadas Cliente 1 Cópia não-modificada e atualizada Cliente 2 Cópia modificada e atualizada commit e update Não alteram o repositório nem a cópia local update Não altera a cópia local commit adiciona a alteração, gerando uma nova revisão Revisão 10 Revisão 11 Revisão 12 Revisão 13 minora@cefetrn.br

  29. Subversion Caso 1: Utilizando o cliente svn minora@cefetrn.br

  30. Criando o repositório • Utilizando o comando svnadmin no servidor • svnadmin é uma ferramenta administrativa • Configuração • Monitoramento • Manutenção do repositório. • svnadmin acessa diretamente o repositório • Deve ser executado na máquina que possui o repositório Repositorio_svn minora@cefetrn.br

  31. Adição de conteúdo ao repositório • Utilizando o comando svnimport no cliente • É uma maneira rápida de copiar um conteúdo (arquivos e diretórios) no repositório, criando diretórios intermediários quando necessário. • Este comando não requer cópias de trabalho, e seus arquivos são commitados no repositório. • É indicado quando se tem um diretório que se deseja controlar sua versão. minora@cefetrn.br

  32. Adição de conteúdo ao repositório • É importante ressaltar que, após o import o diretório não se transforma em uma área de trabalho (working copy) com as cópias de trabalho. É necessário fazer um checkout. Root projetocpp trunk src minora@cefetrn.br

  33. Realizando o checkout • Cria uma cópia de trabalho no cliente • Pode ser executado através do comando svn checkout • Admite alguns parâmetros, dentro os quais o que indica uma revisão específica que se deseja recuperar Root projetocpp trunk src Cópia de trabalho minora@cefetrn.br

  34. Edição, verificação do status • Após a edição das cópias de trabalho é algumas vezes desejável recuperar o status de cada arquivo, é possível observar através do comando svn status • Verificando as diferenças entre a cópia de trabalho e o repositório minora@cefetrn.br

  35. Atualização do repositório • Através do comando svn commit são enviadas as alterações feitas nas cópias de trabalho • Verificando o status minora@cefetrn.br

  36. Subversion Boas práticas e bibliografia minora@cefetrn.br

  37. Boas práticas (1) • Não envie um único arquivo quando sua mudança (intenção) reflete em mais de um arquivo • Em projetos novos, envie o diretório completo a partir (raiz) • Tenha certeza que suas mudanças refletem um propósito simples, como resolver um erro em específico, adicionar uma determinada nova característica • Mensagens de registro de mudança devem descrever a modificação do ponto de vista técnico minora@cefetrn.br

  38. Boas práticas (2) • Se utilizando uma ferramenta de planejamento e gerência, marque o identificador do Ticket/Issue/Bug • Não escreva mensagens como • Linha 4 removida • Inserido a linha 10 no arquivo … • Equipes organizadas mantém políticas de mensagens de registro no repositório minora@cefetrn.br

  39. Bibliografia • Subversion Home Page • http://subversion.tigris.org/ • Version Control with Subversion • http://svnbook.org/ • SubTrain – SVN User Training • http://www.polarion.org/index.php?page=overview&project=subtrain minora@cefetrn.br

More Related