390 likes | 666 Views
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?.
E N D
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 minora@cefetrn.br
Subversion Introdução minora@cefetrn.br
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
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
Subversion Arquitetura minora@cefetrn.br
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
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
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
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
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
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
Subversion Principais comandos minora@cefetrn.br
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
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
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
Subversion Fluxo de trabalho minora@cefetrn.br
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
Repositório Subversion Fluxo otimista minora@cefetrn.br
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
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
Repositório Subversion Fluxo pessimista minora@cefetrn.br
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
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
Subversion Status das cópais de trabalho minora@cefetrn.br
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
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
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
Subversion Caso 1: Utilizando o cliente svn minora@cefetrn.br
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
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
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
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
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
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
Subversion Boas práticas e bibliografia minora@cefetrn.br
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
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
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