Académique Documents
Professionnel Documents
Culture Documents
Verso 1.0.0
Sumrio
I Sobre essa Apostila 2 4 9 18
19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 20 20 20 21 22 22 23 23 23 24 27 27 27 28 28 29 30 31
1 O que o Subversion 2 Plano de ensino 2.1 Objetivo . . . 2.2 Pblico Alvo . 2.3 Pr-requisitos 2.4 Descrio . . 2.5 Metodologia . 2.6 Programa . . 2.7 Avaliao . . 2.8 Bibliograa . . . . . . . . . . . . . . . . .
3 Conceitos bsicos de versionamento 3.1 O que o Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Histria do Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Conceitos bsicos de versionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Instalao do Subversion 4.1 Mtodos de instalao do Subversion 4.2 Compilao do cdigo-fonte . . . . . . 4.2.1 Obtendo o cdigo-fonte . . . . 4.2.2 Dependncias do Subversion . 4.2.3 Parmetros do script congure 4.2.4 Compilao e Instalao . . . 4.3 Distribuies derivadas do Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CDTC
Brasil/DF 34 34 35 36 37 37 37 38 38 38 40 42 42 43 43 44 45 45 46 47 47 49 49 50 52 53 53 55 55 56 56 56 57 58 58 60 60 60 60 61
5 Administrao do repositrio 5.1 O repositrio Subversion . . . . . . . . . . . . . . . . . . 5.2 Criao e congurao do repositrio . . . . . . . . . . 5.3 Manuteno do repositrio . . . . . . . . . . . . . . . . 5.3.1 svnlook . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 svnadmin . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Migrando um repositrio . . . . . . . . . . . . . . 5.3.4 Backup do repositrio . . . . . . . . . . . . . . . 5.4 Adio de projetos . . . . . . . . . . . . . . . . . . . . . 5.4.1 Escolhendo um layout de repositrio . . . . . . . 5.4.2 Criando o layout e importando os dados iniciais 6 Congurao do servidor 6.1 Viso geral . . . . . . . . . . . . . . . . . . . . . 6.2 svnserve, um servidor customizado . . . . . . . 6.2.1 Iniciando o servidor . . . . . . . . . . . . 6.2.2 Autenticao e autorizao integrada . . 6.2.3 Criando um arquivo e domnio users . . 6.2.4 Ajuste de controle de acesso . . . . . . . 6.3 httpd, o servidor web Apache . . . . . . . . . . . 6.3.1 Pr-requisitos . . . . . . . . . . . . . . . . 6.3.2 Congurao bsica do Apache . . . . . 6.3.3 Opes de autenticao . . . . . . . . . . 6.3.4 Autenticao HTTP Bsica . . . . . . . . 6.3.5 Controle de acesso por usurio (blanket) 6.3.6 Mltiplos meios de acesso ao repositrio 7 Utilizao do cliente em linha de comando 7.1 Comandos de obteno e ajuda . . . . 7.2 Manipulao da cpia local . . . . . . . 7.2.1 svn add . . . . . . . . . . . . . . 7.2.2 svn delete . . . . . . . . . . . . . 7.2.3 svn copy . . . . . . . . . . . . . 7.2.4 svn status . . . . . . . . . . . . . 7.2.5 svn diff . . . . . . . . . . . . . . 7.2.6 svn revert . . . . . . . . . . . . . 7.3 Interao com o repositrio . . . . . . . 8 Front-ends para o Subversion 8.1 RapidSVN . . . . . . . . . . 8.2 TortoiseSVN . . . . . . . . 8.3 WebSVN . . . . . . . . . . 8.4 Trac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parte I
CDTC
Brasil/DF
Contedo
O contedo dessa apostila fruto da compilao de diversos materiais livres publicados na internet, disponveis em diversos sites ou originalmente produzido no CDTC (http://www.cdtc.org.br.) O formato original deste material bem como sua atualizao est disponvel dentro da licena GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seo de mesmo nome, tendo inclusive uma verso traduzida (no ocial). A reviso e alterao vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro de 2006. Crticas e sugestes construtivas sero bem-vindas a qualquer hora.
Autores
A autoria deste de responsabilidade de Felipe Brant Scarel (fscarel@cdtc.org.br) . O texto original faz parte do projeto Centro de Difuso de Tecnologia e Conhecimento que vm sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informao) em conjunto com outros parceiros institucionais, e com as universidades federais brasileiras que tem produzido e utilizado Software Livre apoiando inclusive a comunidade Free Software junto a outras entidades no pas. Informaes adicionais podem ser obtidas atravs do email ouvidoria@cdtc.org.br, ou da home page da entidade, atravs da URL http://www.cdtc.org.br.
Garantias
O material contido nesta apostila isento de garantias e o seu uso de inteira responsabilidade do usurio/leitor. Os autores, bem como o ITI e seus parceiros, no se responsabilizam direta ou indiretamente por qualquer prejuzo oriundo da utilizao do material aqui contido.
Licena
Copyright 2006, Instituto Nacional de Tecnologia da Informao (cdtc@iti.gov.br) . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOSTILA. A copy of the license is included in the section entitled GNU Free Documentation License.
Parte II
Informaes Bsicas
CDTC
Brasil/DF
Sobre o CDTC
Objetivo Geral O Projeto CDTC visa a promoo e o desenvolvimento de aes que incentivem a disseminao de solues que utilizem padres abertos e no proprietrios de tecnologia, em proveito do desenvolvimento social, cultural, poltico, tecnolgico e econmico da sociedade brasileira. Objetivo Especco Auxiliar o Governo Federal na implantao do plano nacional de software no-proprietrio e de cdigo fonte aberto, identicando e mobilizando grupos de formadores de opinio dentre os servidores pblicos e agentes polticos da Unio Federal, estimulando e incentivando o mercado nacional a adotar novos modelos de negcio da tecnologia da informao e de novos negcios de comunicao com base em software no-proprietrio e de cdigo fonte aberto, oferecendo treinamento especco para tcnicos, prossionais de suporte e funcionrios pblicos usurios, criando grupos de funcionrios pblicos que iro treinar outros funcionrios pblicos e atuar como incentivadores e defensores dos produtos de software no proprietrios e cdigo fonte aberto, oferecendo contedo tcnico on-line para servios de suporte, ferramentas para desenvolvimento de produtos de software no proprietrios e do seu cdigo fonte livre, articulando redes de terceiros (dentro e fora do governo) fornecedoras de educao, pesquisa, desenvolvimento e teste de produtos de software livre.
Guia do aluno
Neste guia, voc ter reunidas uma srie de informaes importantes para que voc comece seu curso. So elas: Licenas para cpia de material disponvel; Os 10 mandamentos do aluno de Educao a Distncia; Como participar dos foruns e da wikipdia; Primeiros passos. muito importante que voc entre em contato com TODAS estas informaes, seguindo o roteiro acima.
Licena
Copyright 2006, Instituto Nacional de Tecnologia da Informao (cdtc@iti.gov.br). 6
CDTC
Brasil/DF
dada permisso para copiar, distribuir e/ou modicar este documento sob os termos da Licena de Documentao Livre GNU, Verso 1.1 ou qualquer verso posterior pblicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA APOSTILA. Uma cpia da licena est inclusa na seo entitulada "Licena de Documentao Livre GNU".
1. Acesso Internet: ter endereo eletrnico, um provedor e um equipamento adequado pr-requisito para a participao nos cursos a distncia; 2. Habilidade e disposio para operar programas: ter conhecimentos bsicos de Informtica necessrio para poder executar as tarefas; 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distncia conta muitos pontos, pois ir colaborar para o processo ensino-aprendizagem pessoal, dos colegas e dos professores; 4. Comportamentos compatveis com a etiqueta: mostrar-se interessado em conhecer seus colegas de turma respeitando-os e se fazendo ser respeitado pelos mesmos; 5. Organizao pessoal: planejar e organizar tudo fundamental para facilitar a sua reviso e a sua recuperao de materiais; 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigaes e realiz-las em tempo real; 7. Curiosidade e abertura para inovaes: aceitar novas idias e inovar sempre; 8. Flexibilidade e adaptao: requisitos necessrio mudana tecnolgica, aprendizagens e descobertas; 9. Objetividade em sua comunicao: comunicar-se de forma clara, breve e transparente ponto - chave na comunicao pela Internet; 10. Responsabilidade: ser responsvel por seu prprio aprendizado. O ambiente virtual no controla a sua dedicao, mas reete os resultados do seu esforo e da sua colaborao.
CDTC
Brasil/DF
todos participantes. Assim, se o monitor ou algum outro participante tiver uma informao que interesse ao grupo, favor post-la aqui. Porm, se o que voc deseja resolver alguma dvida ou discutir algum tpico especco do curso. recomendado que voc faa uso do Frum de dvidas gerais que lhe d recursos mais efetivos para esta prtica. . O frum de dvidas gerais tem por objetivo disponibilizar um meio fcil, rpido e interativo para solucionar suas dvidas e trocar experincias. As mensagens postadas nele so enviadas a todos participantes do curso. Assim, ca muito mais fcil obter respostas, j que todos podem ajudar. Se voc receber uma mensagem com algum tpico que saiba responder, no se preocupe com a formalizao ou a gramtica. Responda! E no se esquea de que antes de abrir um novo tpico recomendvel ver se a sua pergunta j foi feita por outro participante. A segunda forma se d pelas Wikis: . Uma wiki uma pgina web que pode ser editada colaborativamente, ou seja, qualquer participante pode inserir, editar, apagar textos. As verses antigas vo sendo arquivadas e podem ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um timo suporte a processos de aprendizagem colaborativa. A maior wiki na web o site "Wikipdia", uma experincia grandiosa de construo de uma enciclopdia de forma colaborativa, por pessoas de todas as partes do mundo. Acesse-a em portugus pelos links: Pgina principal da Wiki - http://pt.wikipedia.org/wiki/ Agradecemos antecipadamente a sua colaborao com a aprendizagem do grupo!
Primeiros Passos
Para uma melhor aprendizagem recomendvel que voc siga os seguintes passos: Ler o Plano de Ensino e entender a que seu curso se dispe a ensinar; Ler a Ambientao do Moodle para aprender a navegar neste ambiente e se utilizar das ferramentas bsicas do mesmo; Entrar nas lies seguindo a seqncia descrita no Plano de Ensino; Qualquer dvida, reporte ao Frum de Dvidas Gerais.
Perl do Tutor
Segue-se uma descrio do tutor ideal, baseada no feedback de alunos e de tutores. O tutor ideal um modelo de excelncia: consistente, justo e prossional nos respectivos valores e atitudes, incentiva mas honesto, imparcial, amvel, positivo, respeitador, aceita as idias dos estudantes, paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar. 8
CDTC
Brasil/DF
A classicao por um tutor desta natureza proporciona o melhor feedback possvel, crucial, e, para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem. Este tutor ou instrutor: fornece explicaes claras acerca do que ele espera e do estilo de classicao que ir utilizar; gosta que lhe faam perguntas adicionais; identica as nossas falhas, mas corrige-as amavelmente, diz um estudante, e explica porque motivo a classicao foi ou no foi atribuda; tece comentrios completos e construtivos, mas de forma agradvel (em contraste com um reparo de um estudante: os comentrios deixam-nos com uma sensao de crtica, de ameaa e de nervossismo) d uma ajuda complementar para encorajar um estudante em diculdade; esclarece pontos que no foram entendidos, ou corretamente aprendidos anteriormente; ajuda o estudante a alcanar os seus objetivos; exvel quando necessrio; mostra um interesse genuno em motivar os alunos (mesmo os principiantes e, por isso, talvez numa fase menos interessante para o tutor); escreve todas as correes de forma legvel e com um nvel de pormenorizao adequado; acima de tudo, devolve os trabalhos rapidamente;
Parte III
10
CDTC
Brasil/DF
(Traduzido pelo Joo S. O. Bueno atravs do CIPSGA em 2001) Esta uma traduo no ocial da Licena de Documentao Livre GNU em Portugus Brasileiro. Ela no publicada pela Free Software Foundation, e no se aplica legalmente a distribuio de textos que usem a GFDL - apenas o texto original em Ingls da GNU FDL faz isso. Entretanto, ns esperamos que esta traduo ajude falantes de portugus a entenderem melhor a GFDL. This is an unofcial translation of the GNU General Documentation License into Brazilian Portuguese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GFDLonly the original English text of the GFDL does that. However, we hope that this translation will help Portuguese speakers understand the GFDL better. Licena de Documentao Livre GNU Verso 1.1, Maro de 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA permitido a qualquer um copiar e distribuir cpias exatas deste documento de licena, mas no permitido alter-lo.
INTRODUO
O propsito desta Licena deixar um manual, livro-texto ou outro documento escrito "livre"no sentido de liberdade: assegurar a qualquer um a efetiva liberdade de copi-lo ou redistribui-lo, com ou sem modicaes, comercialmente ou no. Secundariamente, esta Licena mantm para o autor e editor uma forma de ter crdito por seu trabalho, sem ser considerado responsvel pelas modicaes feitas por terceiros. Esta Licena um tipo de "copyleft"("direitos revertidos"), o que signica que derivaes do documento precisam ser livres no mesmo sentido. Ela complementa a GNU Licena Pblica Geral (GNU GPL), que um copyleft para software livre. Ns zemos esta Licena para que seja usada em manuais de software livre, por que software livre precisa de documentao livre: um programa livre deve ser acompanhado de manuais que provenham as mesmas liberdades que o software possui. Mas esta Licena no est restrita a manuais de software; ela pode ser usada para qualquer trabalho em texto, independentemente do assunto ou se ele publicado como um livro impresso. Ns recomendamos esta Licena principalmente para trabalhos cujo propsito seja de introduo ou referncia.
APLICABILIDADE E DEFINIES
Esta Licena se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelo detentor dos direitos autorais dizendo que ele pode ser distribudo sob os termos desta Licena. O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do pblico um
11
CDTC
Brasil/DF
licenciado e referida como "voc". Uma "Verso Modicada"do Documento se refere a qualquer trabalho contendo o documento ou uma parte dele, quer copiada exatamente, quer com modicaes e/ou traduzida em outra lngua. Uma "Seo Secundria" um apndice ou uma seo inicial do Documento que trata exclusivamente da relao dos editores ou dos autores do Documento com o assunto geral do Documento (ou assuntos relacionados) e no contm nada que poderia ser includo diretamente nesse assunto geral (Por exemplo, se o Documento em parte um livro texto de matemtica, a Seo Secundria pode no explicar nada de matemtica). Essa relao poderia ser uma questo de ligao histrica com o assunto, ou matrias relacionadas, ou de posies legais, comerciais, loscas, ticas ou polticas relacionadas ao mesmo. As "Sees Invariantes"so certas Sees Secundrias cujos ttulos so designados, como sendo de Sees Invariantes, na nota que diz que o Documento publicado sob esta Licena. Os "Textos de Capa"so certos trechos curtos de texto que so listados, como Textos de Capa Frontal ou Textos da Quarta Capa, na nota que diz que o texto publicado sob esta Licena. Uma cpia "Transparente"do Documento signica uma cpia que pode ser lida automaticamente, representada num formato cuja especicao esteja disponvel ao pblico geral, cujos contedos possam ser vistos e editados diretamente e sem mecanismos especiais com editores de texto genricos ou (para imagens compostas de pixels) programas de pintura genricos ou (para desenhos) por algum editor de desenhos grandemente difundido, e que seja passvel de servir como entrada a formatadores de texto ou para traduo automtica para uma variedade de formatos que sirvam de entrada para formatadores de texto. Uma cpia feita em um formato de arquivo outrossim Transparente cuja constituio tenha sido projetada para atrapalhar ou desencorajar modicaes subsequentes pelos leitores no Transparente. Uma cpia que no "Transparente" chamada de "Opaca". Exemplos de formatos que podem ser usados para cpias Transparentes incluem ASCII simples sem marcaes, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XML usando uma DTD disponibilizada publicamente, e HTML simples, compatvel com os padres, e projetado para ser modicado por pessoas. Formatos opacos incluem PostScript, PDF, formatos proprietrios que podem ser lidos e editados apenas com processadores de texto proprietrios, SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edio no estejam disponveis para o pblico, e HTML gerado automaticamente por alguns editores de texto com nalidade apenas de sada. A "Pgina do Ttulo"signica, para um livro impresso, a pgina do ttulo propriamente dita, mais quaisquer pginas subsequentes quantas forem necessrias para conter, de forma legvel, o material que esta Licena requer que aparea na pgina do ttulo. Para trabalhos que no tenham uma pgina do ttulo, "Pgina do Ttulo"signica o texto prximo da apario mais proeminente do ttulo do trabalho, precedendo o incio do corpo do texto.
12
CDTC
Brasil/DF
13
CDTC
Brasil/DF
MODIFICAES
Voc pode copiar e distribuir uma Verso Modicada do Documento sob as condies das sees 2 e 3 acima, desde que voc publique a Verso Modicada estritamente sob esta Licena, com a Verso Modicada tomando o papel do Documento, de forma a licenciar a distribuio e modicao da Verso Modicada para quem quer que possua uma cpia da mesma. Alm disso, voc precisa fazer o seguinte na verso modicada: A. Usar na Pgina de Ttulo (e nas capas, se houver alguma) um ttulo distinto daquele do Documento, e daqueles de verses anteriores (que deveriam, se houvesse algum, estarem listados na seo "Histrico do Documento"). Voc pode usar o mesmo ttulo de uma verso anterior se o editor original daquela verso lhe der permisso; B. Listar na Pgina de Ttulo, como autores, uma ou mais das pessoas ou entidades responsveis pela autoria das modicaes na Verso Modicada, conjuntamente com pelo menos cinco dos autores principais do Documento (todos os seus autores principais, se ele tiver menos que cinco); C. Colocar na Pgina de Ttulo o nome do editor da Verso Modicada, como o editor; D. Preservar todas as notas de copyright do Documento; E. Adicionar uma nota de copyright apropriada para suas prprias modicaes adjacente s outras notas de copyright; F. Incluir, imediatamente depois das notas de copyright, uma nota de licena dando ao pblico o direito de usar a Verso Modicada sob os termos desta Licena, na forma mostrada no tpico abaixo; G. Preservar nessa nota de licena as listas completas das Sees Invariantes e os Textos de Capa requeridos dados na nota de licena do Documento; H. Incluir uma cpia inalterada desta Licena; I. Preservar a seo entitulada "Histrico", e seu ttulo, e adicionar mesma um item dizendo pelo menos o ttulo, ano, novos autores e editor da Verso Modicada como dados na Pgina de Ttulo. Se no houver uma sesso denominada "Histrico"no Documento, criar uma dizendo o ttulo, ano, autores, e editor do Documento como dados em sua Pgina de Ttulo, ento adicionar um item descrevendo a Verso Modicada, tal como descrito na sentena anterior; J. Preservar o endereo de rede, se algum, dado no Documento para acesso pblico a uma cpia Transparente do Documento, e da mesma forma, as localizaes de rede dadas no Documento para as verses anteriores em que ele foi baseado. Elas podem ser colocadas na seo "Histrico". Voc pode omitir uma localizao na rede para um trabalho que tenha sido publicado pelo menos quatro anos antes do Documento, ou se o editor original da verso a que ela se rera der sua permisso; K. Em qualquer seo entitulada "Agradecimentos"ou "Dedicatrias", preservar o ttulo da 14
CDTC
Brasil/DF
seo e preservar a seo em toda substncia e m de cada um dos agradecimentos de contribuidores e/ou dedicatrias dados; L. Preservar todas as Sees Invariantes do Documento, inalteradas em seus textos ou em seus ttulos. Nmeros de seo ou equivalentes no so considerados parte dos ttulos da seo; M. Apagar qualquer seo entitulada "Endossos". Tal sesso no pode ser includa na Verso Modicada; N. No reentitular qualquer seo existente com o ttulo "Endossos"ou com qualquer outro ttulo dado a uma Seo Invariante. Se a Verso Modicada incluir novas sees iniciais ou apndices que se qualiquem como Sees Secundrias e no contenham nenhum material copiado do Documento, voc pode optar por designar alguma ou todas aquelas sees como invariantes. Para fazer isso, adicione seus ttulos lista de Sees Invariantes na nota de licena da Verso Modicada. Esses ttulos precisam ser diferentes de qualquer outro ttulo de seo. Voc pode adicionar uma seo entitulada "Endossos", desde que ela no contenha qualquer coisa alm de endossos da sua Verso Modicada por vrias pessoas ou entidades - por exemplo, declaraes de revisores ou de que o texto foi aprovado por uma organizao como a denio ocial de um padro. Voc pode adicionar uma passagem de at cinco palavras como um Texto de Capa da Frente , e uma passagem de at 25 palavras como um Texto de Quarta Capa, ao nal da lista de Textos de Capa na Verso Modicada. Somente uma passagem de Texto da Capa da Frente e uma de Texto da Quarta Capa podem ser adicionados por (ou por acordos feitos por) qualquer entidade. Se o Documento j incluir um texto de capa para a mesma capa, adicionado previamente por voc ou por acordo feito com alguma entidade para a qual voc esteja agindo, voc no pode adicionar um outro; mas voc pode trocar o antigo, com permisso explcita do editor anterior que adicionou a passagem antiga. O(s) autor(es) e editor(es) do Documento no do permisso por esta Licena para que seus nomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquer Verso Modicada.
COMBINANDO DOCUMENTOS
Voc pode combinar o Documento com outros documentos publicados sob esta Licena, sob os termos denidos na seo 4 acima para verses modicadas, desde que voc inclua na combinao todas as Sees Invariantes de todos os documentos originais, sem modicaes, e liste todas elas como Sees Invariantes de seu trabalho combinado em sua nota de licena. O trabalho combinado precisa conter apenas uma cpia desta Licena, e Sees Invariantes Idnticas com multiplas ocorrncias podem ser substitudas por apenas uma cpia. Se houver mltiplas Sees Invariantes com o mesmo nome mas com contedos distintos, faa o ttulo de 15
CDTC
Brasil/DF
cada seo nico adicionando ao nal do mesmo, em parnteses, o nome do autor ou editor origianl daquela seo, se for conhecido, ou um nmero que seja nico. Faa o mesmo ajuste nos ttulos de seo na lista de Sees Invariantes nota de licena do trabalho combinado. Na combinao, voc precisa combinar quaisquer sees entituladas "Histrico"dos diversos documentos originais, formando uma seo entitulada "Histrico"; da mesma forma combine quaisquer sees entituladas "Agradecimentos", ou "Dedicatrias". Voc precisa apagar todas as sees entituladas como "Endosso".
COLETNEAS DE DOCUMENTOS
Voc pode fazer uma coletnea consitindo do Documento e outros documentos publicados sob esta Licena, e substituir as cpias individuais desta Licena nos vrios documentos com uma nica cpia incluida na coletnea, desde que voc siga as regras desta Licena para cpia exata de cada um dos Documentos em todos os outros aspectos. Voc pode extrair um nico documento de tal coletnea, e distribu-lo individualmente sob esta Licena, desde que voc insira uma cpia desta Licena no documento extrado, e siga esta Licena em todos os outros aspectos relacionados cpia exata daquele documento.
TRADUO
Traduo considerada como um tipo de modicao, ento voc pode distribuir tradues do Documento sob os termos da seo 4. A substituio de Sees Invariantes por tradues requer uma permisso especial dos detentores do copyright das mesmas, mas voc pode incluir tradues de algumas ou de todas as Sees Invariantes em adio s verses orignais dessas Sees Invariantes. Voc pode incluir uma traduo desta Licena desde que voc tambm inclua a verso original em Ingls desta Licena. No caso de discordncia entre a traduo e a
16
CDTC
Brasil/DF
TRMINO
Voc no pode copiar, modicar, sublicenciar, ou distribuir o Documento exceto como expressamente especicado sob esta Licena. Qualquer outra tentativa de copiar, modicar, sublicenciar, ou distribuir o Documento nula, e resultar automaticamente no trmino de seus direitos sob esta Licena. Entretanto, terceiros que tenham recebido cpias, ou direitos de voc sob esta Licena no tero suas licenas terminadas, tanto quanto esses terceiros permaneam em total acordo com esta Licena.
17
CDTC
Brasil/DF
tal como a GNU General Public License, para permitir o seu uso em software livre.
18
Parte IV
Subversion
19
Captulo 1
O que o Subversion
O Subversion um sistema de controle de verses livre capaz de gerenciar arquivos e diretrios ao longo do tempo. Em linhas gerais os arquivos so guardados em um repositrio central e servidos aos clientes, mesmo que isto se assemelhe a um servidor de arquivos a diferena fundamental do Subversion que ele guarda todas as modicaes feitas nos arquivos e diretrios ao longo do tempo, permitindo-nos recuperar verses antigas dos dados ou simplesmente vericar o histrico destes. Por este motivo, comum pensar nos sistemas de versionamento como "mquinas do tempo". O curso possui nfase na distribuio Debian GNU/Linux, detalhando diferenas de instalao e congurao em outros sistemas operacionais, caso existam. A durao do curso de uma semana. Para comear voc deve ler o Guia do Aluno e o Plano de Ensino a seguir.
20
Captulo 2
Plano de ensino
2.1 Objetivo
Qualicar tcnicos, administradores de sistemas e interessados em geral na instalao, congurao e utilizao do sistema de controle de verses Subversion.
2.3 Pr-requisitos
Os alunos devero ser, necessariamente, indicados por empresas pblicas e ter conhecimento bsico em manipulao de linha de comando UNIX.
2.4 Descrio
O curso sobre Subversion ser realizado na modalidade Educao a Distncia e utilizar a plataforma Moodle como ferramenta de aprendizagem. Ele ter a durao de uma semana. O material didtico estar disponvel on-line de acordo com as datas pr-estabelecidas em cada lio. A verso utilizada para o Subversion ser a 1.4.0
2.5 Metodologia
O curso est dividido da seguinte maneira:
21
CDTC
Centro de Difuso de Tecnologia e Conhecimento Atividade Lio 1 Lio 2 Lio 3 Lio 4 Lio 5 Lio 6 Avaliao Descrio Conceitos bsicos de versionamento; Instalao do Subversion; Administrao do repositrio; Congurao do servidor; Utilizao do cliente em linha de comando; Front-ends para o Subversion; Avaliao nal.
Brasil/DF
Todo o material est no formato de lies, e estar disponvel ao longo do curso. As lies podero ser acessadas quantas vezes forem necessrias. Aconselhamos a leitura da "Ambientao do Moodle", para que voc conhea o produto de Ensino a Distncia, evitando diculdades advindas do "desconhecimento"sobre o mesmo. Ao nal de cada lio haver questes acerca do tema estudado, no intuito de avaliar parcialmente a aprendizagem do aluno. Leia atentamente a lio e pratique os exemplos apresentados, preparando-se assim para as referidas questes. Os instrutores estaro a sua disposio ao longo de todo curso. Qualquer dvida deve ser disponibilizada no frum ou enviada por e-mail. Diariamente os monitores daro respostas e esclarecimentos.
2.6 Programa
Lio 1: O que o Subversion; Histria do Subversion; Conceitos bsicos de versionamento. Lio 2: Mtodos de instalao do Subversion; Compilao do cdigo-fonte; Distribuies derivadas do Debian. Lio 3: O repositrio Subversion; Criao e congurao do repositrio; Manuteno do repositrio. Adio de projetos Lio 4: Viso geral; svnserve, um servidor customizado; httpd, o servidor web Apache; 22
CDTC
Brasil/DF
Mltiplos meios de acesso ao repositrio. Lio 5: Comandos de obteno e ajuda; Manipulao da cpia local; Interao com o repositrio; Lio 6: RapidSVN; TortoiseSVN; WebSVN; Trac.
2.7 Avaliao
Toda a avaliao ser feita on-line. Aspectos a serem considerados na avaliao: Iniciativa e autonomia no processo de aprendizagem e de produo de conhecimento; Capacidade de pesquisa e abordagem criativa na soluo de problemas apresentados. Instrumentos de avaliao: Avaliao semanal Para a aprovao o participante dever obter nota maior ou igual a 6,0 na avaliao nal. Para isso, sua participao ser importante em todas as atividades propostas.
2.8 Bibliograa
Site ocial: http://subversion.tigris.org/ Trac Project: http://trac.edgewall.org/ SVN Book: http://svnbook.red-bean.com/ Tutorial Subversion PATUX: http://ninho.patux.cic.unb.br/wiki/Subversion Boa parte das lies 3, 4 e 5, e pequenas partes das demais lies so uma traduo livre de trechos do SVN Book (link acima) por Ben Collins-Sussman, Brian W. Fitzpatrick e C. Michael Pilato. O autor deste curso agradece a estes, sem os quais no seria possvel ter uma ferramenta de versionamento to verstil como o Subversion.
23
Captulo 3
24
CDTC
Brasil/DF
compartilhem seu cdigo e construam softwares em conjunto. Porm, dada a sua idade e infreqentes atualizaes, o CVS est se tornando ultrapassado, e muitos recursos modernos dos sistemas de controle de verses no podem nele ser encontrados. Assim, no incio de 2000, a CollabNet (http://www.collab.net) comeou a buscar programadores para desenvolver um substituto ao CVS que pudesse implementar o que ele apresenta de melhor, mas sem copiar suas falhas mais evidentes. Eles ento buscaram Karl Fogel (tambm um dos autores do livro do Subversion), que j vinha discutindo idias semelhantes com seu amigo Jim Blandy. Este ltimo inclusive j havia tido no apenas a idia do nome "Subversion"bem como feito o layout bsico de um repositrio Subversion. Chamado pela CollabNet, Karl imediatamente foi trabalhar no projeto e Jim fez com que sua companhia, a conhecida Red Hat (que produz uma distribuio GNU/Linux homnima), praticamente o doasse ao projeto. Fortalecidos ainda pela contratao de Ben Collins-Sussman eles iniciaram a codicao, e, aps catorze meses, mais precisamente em 31 de Agosto de 2001 o Subversion passou a versionar seu prprio cdigo e tornou-se uma realidade. Mais frente, veremos os conceitos fundamentais que permeiam um sistema de controle de verses.
CDTC
Brasil/DF
"Lock-Modify-Unlock": Muitos sistemas de versionamento utilizam esta soluo, que consiste basicamente em um sistema parecido com o aluguel de livros em uma biblioteca: um usurio tranca o arquivo para edio, e enquanto ele faz suas modicaes os demais no podem acessar o arquivo para escrita; se tentarem faz-lo, o servidor ir negar a requisio. Logo aps o primeiro usurio encerrar sua edio ele ir destrancar o arquivo e agora sim os demais podero acess-lo. Os problemas desta soluo logo aparecem, pois ela muito restritiva: se o primeiro usurio por exemplo sair de frias e esquecer o arquivo trancado, os demais tero que esperar at que ele volte ou contatar um administrador do sistema para destranc-lo, o que no desejvel. Outro fator: suponhamos que dois usurio queiram editar o mesmo arquivo; isto no ser um problema se um deles quiser editar o comeo do arquivo e o outro quiser editar o nal deste, e neste caso a soluo tornaria o processo burocrtico. Finalmente esta soluo cria um falso senso de segurana pois se dois usurios trancarem arquivos diferentes, porm dependentes entre si, eles podero modic-los de forma a torn-los incompatveis. Neste caso o sistema no pde impedir que tal fato prejudicial ocorresse. "Copy-Modify-Merge": O Subversion CVS e outros sistemas de versionamento preferem utilizar esta soluo como uma alternativa ao trancamento dos arquivos. Neste modelo, cada usurio contata o repositrio e copia para si a chamada "working copy", que uma cpia el da estrutura de arquivos e diretrios do servidor, e tambm conhecida como Cpia Local. Esses usurios trabalham em suas cpias particulares em paralelo, e ao nal suas modicaes so unidas em uma verso resultante. Na maioria das vezes o repositrio cuida do trabalho de fazer a unio ocorrer corretamente, mas em ltima instncia um ser humano deve cuidar desse processo. Na prtica, suponhamos que dois usurios obtivessem working copies para si e comeassem a edit-las. Se um deles submeter suas modicaes primeiro, quando o outro tentar mandar suas alteraes o repositrio lhe retornar um erro de "out-of-date"(arquivo antigo). Neste caso, o usurio receber uma cpia do arquivo novo e dever comparar esta nova verso com a sua, alterada localmente. H uma boa chance de que as modicaes no sejam conitantes, e ele ento poder unir suas modicaes com as de seu colaborador, manualmente, e submeter uma nova verso, com ambas as contribuies. Mas e se as alteraes forem conitantes? Como o prprio nome indica, nesse caso temos um "conict"(conito), e este dever ser resolvido pelo usurio (uma vez que o programa no capaz de tomar as decises inteligentemente). Aps resolver o conito preexistente, possivelmente aps uma conversa com o outro usurio, ele poder ento mandar a verso nal e funcional ao repositrio. O modelo utilizado pelo Subversion pode parecer catico, mas quando o observamos mais de perto percebemos que ele funciona de forma transparente: conitos so infreqentes, e, quando 26
CDTC
Brasil/DF
ocorrem, so resolvidos rapidamente. Obviamente, esses fatores dependem de uma comunidade de colaboradores comunicativa e responsiva o que em geral a realidade de boa parte dos projetos de software livre.
27
Captulo 4
Instalao do Subversion
4.1 Mtodos de instalao do Subversion
Temos nossa disposio uma variedade de mtodos de instalao do Subversion, que podem variar quanto sua disponibilidade dependendo do sistema operacional ou distribuio GNU/Linux que est sendo utilizada. importante notar que diferentes mtodos de instalao podero prover verses diferentes do software: neste curso, por exemplo, utilizaremos a verso 1.4.0 que o pacote mais atualizado disponvel no repositrio testing do Debian at esta data. No entanto, se voc optar por instalar diretamente a partir do cdigo-fonte, possvel obter uma verso to nova quanto a mais recente disponvel no repositrio do Subversion, que at esta data a reviso 22235, como pode ser visto em http://svn.collab.net/repos/svn/trunk/, o repositrio ocial do Subversion. Podemos diferenciar os mtodos de instalao basicamente entre aqueles que utilizam pacotes pr-compilados, efetuando diretamente a instalao, e os que primeiramente procedem a compilao do cdigo-fonte do software e posteriormente instalam os binrios gerados pela referida compilao. Entre os mtodos que sero estudados e que se utilizam de pacotes pr-compilados temos as Distribuies derivadas do Debian, que utilizam pacotes nativos s distribuies (.deb), e para instal-los simplesmente os descompactam e movem os arquivos para os lugares apropriados.
CDTC
Brasil/DF
CDTC
Brasil/DF
pacote no mesmo diretrio em que for descompactado o cdigo-fonte, o processo de instalao cuidar para que essas dependncias sejam instaladas. Alternativamente, voc pode instalar as dependncias utilizando o gerenciador de pacotes de sua distribuio ou sistema operacional. Dentre as dependncias adicionais, temos uma srie de bibliotecas, linguagens de programao e programas que podem ser instalados de acordo com as extenses do Subversion que desejamos utilizar. Determine quais dessas extenses sero necessrias (vide tambm Parmetros do script congure, abaixo) e instale as dependncias correspondentes. Consulte o documento INSTALL para mais informaes acerca dessas dependncias opcionais.
fscarel@debian3:~/svn$ tar -xjf subversion-1.4.2.tar.bz2 fscarel@debian3:~/svn$ ls subversion-1.4.2 subversion-1.4.2.tar.bz2 fscarel@debian3:~/svn$ cd subversion-1.4.2 fscarel@debian3:~/svn/subversion-1.4.2$
Lembre-se de descompactar neste mesmo diretrio o pacote de dependncias citado no tpico Dependncias do Subversion, caso tenha escolhido instal-las dessa maneira. Listando-se o contedo desse diretrio, vemos que, de fato, existe o script congure l dentro:
fscarel@debian3:~/svn/subversion-1.4.2$ ls aclocal.m4 build ChangeLog.CVS configure COPYING gen-make.opts INSTALL packages tools www autogen.sh build.conf CHANGES configure.in dist.sh gen-make.py Makefile.in README TRANSLATING BUGS build-outputs.mk COMMITTERS contrib doc HACKING notes subversion win-tests.py fscarel@debian3:~/svn/subversion-1.4.2$
O script congure, como se poderia imaginar, congura o Subversion para se adaptar a uma gama de diferentes sistemas com os quais ele compatvel. Dessa forma, ele detecta se todas as dependncias esto satisfeitas, determina os diretrios de instalao, ativa e/ou desativa caractersticas opcionais do pacote, dentre outras coisas. Para descobrir todos os possveis parmetros que podem ser especicados, podemos list-los:
CDTC
Brasil/DF
Installation directories: --prefix=PREFIX Define o diretrio de instalao de arquivos independentes de arquitetura --exec-prefix=EPREFIX Define o diretrio de instalao de arquivos dependentes de arquitetura Optional Features: --disable-FEATURE retira FEATURE (mesmo efeito que --enable-FEATURE=no) --enable-FEATURE[=ARG] inclui FEATURE [ARG=yes] Optional Packages: --without-PACKAGE no utilizar PACKAGE (mesmo efeito que --with-PACKAGE=no) --with-PACKAGE[=ARG] utilizar PACKAGE [ARG=yes] Some influential environment variables: CC comandos para o compilador C CFLAGS flags para o compilador C LDFLAGS flags para o linker, por exemplo -L<lib dir> se as bibliotecas esto em um diretrio no-padro <lib dir>
Determine os parmetros a serem passados ao script congure pertinentes sua instalao, habilitando as extenses desejadas e denindo os diretrios de instalao. Cuidado apenas com os comando e ags passados ao compilador C: otimizaes excessivas podem ser nocivas ao funcionamento do software! Vale ressaltar aqui a importncia de escolher apropriadamente os parmetros a serem passados para o congure: caso deseje operar um servidor Subversion atravs do Apache, utilizando WebDAV, voc dever especicar neste passo os diretrios nos quais se encontram o Apache, a APR, dentre outros. O tpico Mtodos de acesso ao repositrio da Lio 3 detalha as diferenas entre o servidor standalone svnserve e o acesso ao repositrio atravs de mdulos WebDAV pelo Apache. Talvez seja interessante ler esses tpicos antes de proceder com a instalao do Subversion.
31
CDTC
Brasil/DF
fscarel@debian3:~$ apt-cache search subversion baz-load-dirs - Import upstream archives into baz cedar-backup2 - local and remote backups to CD-R/CD-RW media cedar-backup2-doc - local and remote backups to CD-R/CD-RW media (documentation) chora2 - code repository viewing component for horde framework config-manager - manage directories with Arch, CVS, HTTP, FTP and/or Subversion cvs2svn - Convert a cvs repository to a subversion repository darcs-load-dirs - Import upstream archives into darcs devscripts - Scripts to make the life of a Debian Package maintainer easier esvn - frontend for the Subversion revision system written in Qt esvn-doc - documentation for esvn fldiff - A graphical diff program flow-tools - collects and processes NetFlow data flow-tools-dev - development files for flow-tools gforge-plugin-scmsvn - subversion plugin for GForge git-load-dirs - Import upstream archives into git git-svn - content addressable filesystem (svn interoperability) ikiwiki - a wiki compiler kdesdk-kio-plugins - subversion ioslave for KDE kdesvn - subversion client with tight KDE integration kdesvn-kio-plugins - subversion I/O slaves for KDE latex-svninfo - latex support for Subversion libapache2-svn - Subversion server modules for Apache libsvn-dev - Development files for Subversion libraries libsvn-doc - Developer documentation for libsvn libsvn-java - Java bindings for Subversion libsvn-javahl - Java bindings for Subversion (dummy package) libsvn-mirror-perl - A subversion repository mirroring tool libsvn-notify-perl - Subversion activity notification libsvn-perl - Perl bindings for Subversion libsvn-ruby - Ruby bindings for Subversion (dummy package) libsvn-ruby1.8 - Ruby bindings for Subversion libsvn-simple-perl - A simple interface for writing a delta editor libsvn1 - Shared libraries used by Subversion libsvncpp-dev - Subversion C++ library (development files)
32
CDTC
Brasil/DF
libsvncpp0c2a - Subversion C++ shared library libsvnqt-dev - Qt wrapper library for subversion (development files) libsvnqt3 - Qt wrapper library for subversion libvcp-dest-svk-perl - perl VCP::Dest::svk - svk destination driver python-subversion - Python bindings for Subversion python-svn - A(nother) Python interface to Subversion rapidsvn - A GUI client for subversion subcommander - Graphical client for subversion subcommander-doc - User guide for subcommander subversion - Advanced version control system subversion-tools - Assorted tools related to Subversion svk - A Distributed Version Control System svk-load-dirs - Import upstream archives into svk svn-arch-mirror - one-way mirroring from Subversion to Arch revision control svn-buildpackage - helper programs to maintain Debian packages with Subversion svn-workbench - A Workbench for Subversion svnmailer - an extensible subversion commit notification tool tailor - migrate changesets between version control systems texlive-latex-extra - TeX Live: LaTeX supplementary packages tkcvs - A graphical front-end to CVS and Subversion tkdiff - graphical side by side "diff" utility tla-load-dirs - Import upstream archives into tla/arch vcs-tree - Version Control System Tree Walker viewcvs - view CVS Repositories via HTTP websvn - interface for subversion repositories written in PHP libsvn0 - Shared libraries used by Subversion libapr0 - the Apache Portable Runtime fscarel@debian3:~$
Como podemos ver o nome do pacote correspondente ao Subversion, como poderamos esperar, subversion acompanhado de uma srie de bibliotecas e programas relacionados. Sabendo disso, basta-nos agora instalar, como usurio root, o pacote utilizando o comando apt-get:
debian3:~# apt-get install subversion Reading package lists... Done Building dependency tree... Done Suggested packages: subversion-tools db4.4-util The following NEW packages will be installed subversion 0 upgraded, 1 newly installed, 0 to remove and 193 not upgraded. Need to get 0B/1013kB of archives. After unpacking 3330kB of additional disk space will be used. Selecting previously deselected package subversion. (Reading database ... 118549 files and directories currently installed.) Unpacking subversion (from .../subversion_1.4.0-5_i386.deb) ... Setting up subversion (1.4.0-5) ... debian3:~#
33
CDTC
Brasil/DF
Pronto, agora j temos o Subversion instalado atravs do gerenciador de pacotes apt-get. Vale lembrar que ele gerencia dependncias automaticamente e as instala, sem necessidade de interveno manual. Foi bem fcil tambm, no ? Vale lembrar que os exemplos acima foram testados na distribuio Debian GNU/Linux, porm poderiam ser executados da mesma maneira em qualquer outra distribuio compatvel com o Debian, como o Ubuntu Linux, Kurumin ou Knoppix, dentre outras.
34
Captulo 5
Administrao do repositrio
5.1 O repositrio Subversion
O repositrio Subversion a base de dados central dos dados versionados de todos os projetos existentes em um servidor. Embora seja extremamante importante que o administrador aprenda como se deve administrar esse repositrio, ainda mais importante que todos os conceitos subjacentes a ele sejam compreendidos, e esse assunto que cobriremos neste tpico. Conceitualmente, o repositrio Subversion uma seqncia de rvores de diretrios, sendo cada uma dessas rvores uma "fotograa"de como o repositrio era em algum ponto de seu histrico. Essas "fotograas"so resultados de aes por parte dos usurios do repositrio e so conhecidas como revises. importante observar que o Subversion trabalha com o conceito de transao: quando um usurio envia seus dados ao repositrio, o Subversion cria uma rvore de diretrios contendo as diferenas entre os dados enviados pelo usurio e aqueles da reviso mais recente. Posteriormente, o Subversion promove essa rvore de transao a uma nova rvore de reviso, numerando-a de acordo. Caso algo d errado durante essa transao, ela destruda e o usurio informado deste fato, mantendo o repositrio e seus dados ntegros. Existem duas opes possveis para armazenar os dados de um repositrio Subversion: um destes tipos armazena os dados em uma base de dados Berkeley DB e o outro armazena estes dados em arquivos comuns, utilizando o sistema de arquivos nativo do sistema operacional. Estas opes so referenciadas, respectivamente, como amazenamentos BerkeleyDB e FSFS. Quando da criao de um repositrio, responsabilidade do administrador escolher qual destes mtodos de armazenamento ser utilizado em seu repositrio. Cada um destes possui vantagens e desvantagens distintas, no sendo nenhum deles "ocial"em algum sentido. importante notar que independente do mtodo de armazenamento escolhido, aplicaes e bibliotecas podero acessar o repositrio Subversion sem problemas, j que o meio de armazenamento tratado apenas pelo prprio Subversion, existindo uma API intermediria de acesso a estes. Abaixo apresentamos uma tabela (basicamente uma traduo da tabela de comparao entre
35
CDTC
Brasil/DF
mtodos de armazenamento disponvel no SVN Book, neste link: http://svnbook.red-bean.com/nightly/en/svn.reposadmin.html#svn.reposadmin.basics que compara os repositrios BerkeleyDB e FSFS. Para maiores detalhes, leia a seo Repository Data Stores do SVN Book, com link disponvel na bibliograa do Plano de Ensino.
$ svnadmin create --fs-type fsfs /caminho/para/repositorio $ svnadmin create --fs-type bdb /caminho/para/repositorio
Aps o comando "svnadmin create", voc ter ento um novo repositrio Subversion no diretrio designado. Listemos o contedo desse diretrio: 36
CDTC
Brasil/DF
37
CDTC
Brasil/DF
5.3.1 svnlook
A ferramenta "svnlook" provida juntamente com o Subversion e utilizada com o intuito de examinar as diversas revises e transaes em um repositrio, sem no entanto alter-lo: uma ferramenta "somente leitura", por assim dizer. Esta ferramenta tipicamente utilizada pelos scripts hook do repositrio para reportar mudanas a serem efetuadas (pre-commit) ou que terminaram de ser efetivadas (post-commit) no repositrio. Um administrador pode utilizar essa ferramenta para ns de diagnstico.
5.3.2 svnadmin
O programa "svnadmin" o melhor amigo do administrador do repositrio. Alm de prover a funo de criao de repositrios Subversion (funo j vista no tpico anterior), ele tambm possui a capacidade de efetuar diversas operaes de manuteno nesses repositrios.
CDTC
Brasil/DF
39
CDTC
Brasil/DF
H alguns fatores a serem considerados em relao ao setup de repositrios Subversion. Assumamos que, como um administrador do repositrio voc ser responsvel pelo suporte de diversos projetos. A primeira deciso a ser tomada se existir um nico repositrio para todos os projetos, ou se cada projeto ter seu repositrio, ou ainda uma combinao dessas solues. Existem benefcios ao se utilizar um nico repositrio para mltiplos projetos e o mais bvio deles que no existe duplicao de manuteno: um nico conjunto de scripts hook, um repositrio a se fazer backup, um pool para se fazer dump e load quando uma nova verso do Subversion for lanada, e assim por diante. Alm disso, voc pode mover dados entre projetos facilmente e sem perda de informao de versionamento. O problema de usar um nico repositrio que diferentes projetos podem ter diferentes listas de email para commits ou diferentes requerimentos de autenticao e autorizao. Alm disso, lembre-se que o Subversion utiliza nmeros de reviso globais para o repositrio. Algumas pessoas no gostam que, mesmo no tendo existido modicaes em seus projetos recentemente, o nmero de reviso suba constantemente porque outros projetos esto ativamente adicionando novas revises. Uma aproximao intermediria pode ser feita tambm. Por exemplo, projetos podem ser agrupados pelo nvel de interrelao entre si. Voc pode ter alguns repositrios com um nmero de projetos dentro de cada um. Desta maneira, projetos que tm chance de compartilhar dados podero faz-lo facilmente e medida que novas revises forem adicionadas ao repositrio, os desenvolvedores sabero que essas novas revises esto minimamente relacionadas com todos que utilizam o repositrio. Aps decidir como organizar seus projetos com respeito aos repositrios, voc provavelmente desejar pensar na hierarquia de diretrios dentro desses repositrios. Como o Subversion utiliza cpias comuns de diretrios para branching e tagging (captulo 4 do SVN Book "Branching and Merging": http://svnbook.red-bean.com/nightly/en/svn.branchmerge.html), recomendado que se escolha uma localizao mais prxima possvel da raiz do repositrio, criando abaixo deste trs subdiretrios: trunk, o diretrio que contm o projeto principal de desenvolvimento; branches, que contm desvios do projeto principal, desenvolvidos parte; tags, que contm branches que nunca so modicados (verses estveis, por exemplo). Vejamos um exemplo prtico de como caria organizado um repositrio:
/ calculadora/ trunk/ tags/ branches/ calendario/ trunk/ tags/ branches/ planilha/ trunk/ tags/
40
CDTC
Brasil/DF
branches/
Note que no importa onde est localizada a raiz de cada projeto dentro do repositrio. Se voc tem apenas um projeto por repositrio, o local bvio para se colocar a raiz de cada projeto a raiz de seu respectivo repositrio. Se voc tem mltiplos projetos, voc pode querer coloclos dentro de grupos no repositrio, talvez agrupando-os por similaridade de objetivos ou cdigo compartilhado por cada um deles. Vejamos um exemplo desse layout:
/ utilidades/ calculadora/ trunk/ tags/ branches/ calendario/ trunk/ tags/ branches/ escritorio/ planilha/ trunk/ tags/ branches/
Crie o layout de seu repositrio da forma que melhor lhe convir. O Subversion no espera ou fora um layout especco e um diretrio _apenas_ um diretrio. No m das contas, voc deve escolher um layout que melhor atenda as necessidades dos que trabalham nos projetos de seu repositrio.
$ $ $ $ $ $ $ $ $ $ $
mkdir temp cd temp mkdir calculadora mkdir calculadora/trunk mkdir calculadora/branches mkdir calculadora/tags mkdir planilha mkdir planilha/trunk mkdir planilha/branches mkdir planilha/tags svn import . file:///caminho/do/repositorio --message "Import inicial de Layout"
41
CDTC
Brasil/DF
Adding calculadora Adding calculadora/trunk Adding calculadora/branches Adding calculadora/tags Adding planilha Adding planilha/trunk Adding planilha/branches Adding planilha/tags Committed revision 1. $ cd .. $ rm -rf temp $
Voc pode vericar os resultados do import com o comando "svn list":
$ svn list --verbose file:///caminho/do/repositorio 1 joao May 08 21:48 calculadora/ 1 joao May 08 21:48 planilha/ $
Uma vez que voc tenha o layout em seu lugar, voc pode comear a efetivamente importar os dados de projeto em seu repositrio, se esses dados j existirem. Mais uma vez, h mais de uma maneira de faz-lo. Voc poderia fazer o checkout de uma cpia local do repositrio, mover os dados para essa cpia local e ento usar "svn add"e "svn commit"para enviar os dados. Mas esse um assunto da prxima lio, por isso, vamos parar por aqui.
42
Captulo 6
Congurao do servidor
6.1 Viso geral
Um repositrio Subversion pode ser acessado simultaneamente por clientes na mesma mquina em que ele reside utilizando o mtodo le:///. A congurao tpica do Subversion, porm, envolve uma nica mquina servidora sendo acessada por clientes em computadores de todo o escritrio, ou, quem sabe, espalhados ao redor do mundo. O Subversion foi planejado para utilizar uma camada de rede abstrata. Isto quer dizer que um repositrio pode ser acessado por qualquer tipo de processo servidor, e a API cliente de "acesso ao repositrio"permite aos programadores escrever plugins que conversem utilizando variados protocolos de rede. Em teoria, portanto, o Subversion pode utilizar um nmero innito de implementaes de rede. Na prtica, porm, existem apenas dois servidores at o momento. O Apache um servidor web extremamente popular: utilizando o mdulo mod_dav_svn, o Apache pode acessar um repositrio e torn-lo disponvel para clientes atravs do protocolo WebDAV/DeltaV, uma extenso ao HTTP. No outro extremo est o svnserve: um programa servidor independente e pequeno que utiliza um protocolo customizado para comunicao. Note que o Subversion, por ser um projeto de software livre, no recomenda nenhum dos dois servidores como sendo "ocial"ou "primrio". Nenhuma das duas implementaes de rede melhor ou pior que a outra; cada servidor tem suas vantagens e desvantagens. De fato, possvel operar diferentes servidores em paralelo, cada qual acessando os repositrios sua maneira, e sem prejudicar as funes do outro. Podemos ver uma comparao entre os dois servidores na tabela a seguir:
43
CDTC
Brasil/DF
Apache + mod_dav_svn Autenticao bsica HTTP(S), certicados X.509, LDAP, NTLM, ou quaisquer outros mecanismos disponveis para o Apache httpd arquivo users privativo
via SSL opcional parcialmente utilizvel por outros clientes WebDAV suporte built-in limitado, ou atravs de ferramentas 3rd-party razoavelmente mais lento razoavelmente complexo
arquivo users privativo, ou contas de sistema existentes (SSH) controle por usurio de leitura/escrita, ou controle de escrita (mas no leitura) por diretrio utilizando um hook pre-commit via tunelamento SSH opcional no interopervel atravs de ferramentas 3rd-party razoavelmente mais rpido bastante simples
CDTC
Brasil/DF
45
CDTC
Brasil/DF
Como voc j deve ter desconado, o arquivo svnserve.conf de um repositrio o mecanismo central de controle de autenticao e autorizao. O arquivo tem o seguinte formato: sees so identicadas por colchetes - [], comentrios so iniciados por cerquilha - #, e cada seo contm variveis que podem ser ajustadas - varivel = valor.
[general] password-db = userfile realm = dominio exemplo # usuarios anonimos podem apenas ler do repositorio anon-access = read
46
CDTC
Brasil/DF
[general] password-db = userfile realm = dominio exemplo # usuarios anonimos nao sao autorizados anon-access = none # usuarios autenticados podem ler e escrever auth-access = write
Observe que o svnserve suporta apenas controle de acesso por usurio. Um usurio pode ou no ter acesso universal de leitura e escrita, acesso universal de leitura ou nenhum acesso. No h controle detalhado sobre diretrios especcos do repositrio, o que, para muitos projetos, suciente e adequado. No entanto, se voc necessita de controle de acesso por diretrio, ser necessrio utilizar o mod_authz_svn do Apache (a ser visto no tpico seguinte), ou utilizar um hook pre-commit para controlar acesso de escrita. O controle de acesso via tunelamento bem semelhante ao descrito anteriormente, mas, dada a especicidade do tema, deixamos aqui o link do SVN Book que explica esse tpico em maior detalhe aos alunos interessados nesse tipo de congurao: http://svnbook.red-bean.com/nightly/en/svn.servercong.svnserve.html
47
CDTC
Brasil/DF
Na medida em que voc for fazendo modicaes sua congurao do Apache, provvel que algum erro seja cometido durante esse processo. Se voc no est familiarizado com o subsistema de logs do Apache, necessrio tomar conhecimento do mesmo. No arquivo httpd.conf h diretivas que especicam as localizaes dos logs de acesso e erro gerados pelo Apache (diretivas CustomLog e ErrorLog, respectivamente). O mod_dav_svn do Subversion utiliza essa interface de log tambm. interessante observar o contedo desses arquivos sempre que aparecer um problema, pois eles podem revelar a fonte deste erro.
6.3.1 Pr-requisitos
Para colocar seu repositrio em rede com HTTP, voc precisa basicamente de quatro componentes disponveis em dois pacotes. Voc vai precisar do Apache httpd 2.0 ou superior, o mdulo mod_dav que o acompanha, o prprio Subversion e a interface de acesso ao sistema de arquivos mod_dav_svn distribudo com o Subversion. Com todos esses componentes, o processo de congurao do servidor to simples quanto: inicializar o httpd 2.0 ou superior e o mdulo mod_dav; instalar o plugin mod_dav_svn ao mod_dav, que utiliza as bibliotecas do Subversion para acessar o repositrio; congurar o arquivo httpd.conf para exportar o repositrio. Voc pode cumprir os dois primeiros tens tanto pela compilao do httpd e do Subversion por cdigo-fonte, ou instalando pacotes pr-compilados disponveis em seu sistema. Para as informaes mais recentes de como compilar o Subversion para uso com o servidor web Apache, bem como compilar o prprio Apache com esse propsito, veja o arquivo INSTALL na raiz do pacote fonte do Subversion.
48
CDTC
Brasil/DF
frente no arquivo, voc dever agora informar o Apache onde se encontra o repositrio (ou repositrios) Subversion. A diretiva Location tem uma notao parecida com XML, iniciando com uma tag de abertura, e nalizando com uma tag de fechamento, com vrias outras diretivas de congurao entre as tags. O propsito da diretiva Location instruir o Apache a fazer algo especial quando est lidando com requisies direcionadas para uma dada URL. No caso do Subversion, voc quer que o Apache apenas repasse requisies naquela URL para que a camada DAV a trate. Voc pode instruir o Apache para delegar todas as URLs iniciando com /repos/ para um provedor DAV cujo repositrio reside em /caminho/para/repositorio usando a seguinte sintaxe:
<Location /svn> DAV svn # qualquer URL "/svn/foo" ir para /usr/local/svn/foo SVNParentPath /usr/local/svn </Location>
Usando a sintaxe acima, o Apache ir delegar o atendimento de URLs comeadas por /svn/ para o provedor DAV do Subversion, que ir ento assumir que qualquer item no diretrio especicado em SVNParentPath na verdade um repositrio Subversion. Esta uma sintaxe particularmente conveniente porque, ao contrrio da diretiva SVNPath, no necessrio reiniciar o Apache quando se cria novos repositrios. Tenha a certeza de que, quando denir um novo Location, ele no conita com outros Locations exportados. Por exemplo, se seu DocumentRoot principal /www, no exporte um repositrio Subversion em <Location /www/repos>. Se uma requisio chegar para a URI /www/repos/foo.c, o Apache no saber se deve buscar um arquivo /repos/foo.c no DocumentRoot, ou se deve delegar para o mod_dav_svn o retorno de foo.c a partir do repositrio Subversion. Neste ponto, voc deve considerar cuidadosamente a questo de permisses. Se voc j trabalha com o Apache h algum tempo como seu servidor web, j deve provavelmente ter um conjunto de pgina web, scripts e ans. Esses tens j foram congurados com um conjunto de permisses que os permite trabalhar com o Apache, ou melhor, que permitem que o Apache trabalhe com esses arquivos. Quando utilizando o Apache como um servidor Subversion, tambm se deve ajustar corretamente as permisses para leitura e escrita em seu repositrio Subversion. Voc dever determinar um sistema de permisses que satisfaa as exigncias do Subversion, mas sem atrapalhar qualquer instalao de pgina web ou script prvia. Isto pode signicar 49
CDTC
Brasil/DF
mudana nas permisses de seu repositrio Subversion para que sejam compatveis com os outros elementos servidos pelo Apache, ou poderia signicar utilizar as diretivas User e Group no httpd.conf para especicar que o Apache deve rodar como o usurio e grupo donos de seu repositrio Subversion. No h uma maneira nica de ajustar corretamente essas permisses e cada administrador ter diferentes razes para ajust-las de determinada maneira. Tenha em mente apenas que problemas relacionados a permisses esto provavelmente entre os mais comuns enganos quando h congurao de um repositrio Subversion juntamente com o Apache.
$ ### Na primeira execuo, utilize a opo -c para criar o arquivo $ ### Utilize a opo -m para aplicar encriptao MD5 senha, um \ procedimento mais seguro $ htpasswd -cm /etc/svn-auth-file joao New password: ***** Re-type new password: ***** Adding password for user joao $ htpasswd -m /etc/svn-auth-file maria New password: ******* Re-type new password: ******* Adding password for user maria $
50
CDTC
Brasil/DF
Agora, voc precisa adicionar mais algumas diretivas no bloco Location de seu httpd.conf para informar o Apache sobre o que ele deve fazer com seu novo arquivo de senhas. A diretiva AuthType especica o tipo de sistema de autenticao a ser usado. Nesse caso, iremos especicar o sistema Basic. AuthName um nome escolhido pelo administrador que indica o domnio de autenticao, mostrado em uma caixa de dilogo pop-up de login/senha, na maioria dos browsers. Finalmente, a diretiva AuthUserFile especica o caminho at o arquivo de senhas criado com o comando htpasswd previamente. Aps adicionar essas trs diretivas, o bloco <Location> deve estar parecido com:
<Location /svn> DAV svn SVNParentPath /usr/local/svn AuthType Basic AuthName "Repositorio Subversion" AuthUserFile /etc/svn-auth-file </Location>
Este bloco <Location> no est completo, e no far nada de til (ainda). Ele est meramente dizendo ao Apache que, sempre que for requerida autorizao, ele dever exigir um nome de usurio e senha do cliente Subversion. Esto faltando diretivas que digam ao Apache quais tipos de requisies vindas de um cliente requerem autorizao. Sempre que a autorizao for requerida, o Apache ir demandar tambm autenticao. O procedimento mais simples a fazer proteger todas as requisies. A adio "Require valid-user"diz ao Apache que todas as requisies exigem um usurio autenticado:
<Location /svn> DAV svn SVNParentPath /usr/local/svn AuthType Basic AuthName "Repositorio Subversion" AuthUserFile /etc/svn-auth-file Require valid-user </Location>
No prximo tpico iremos ver mais detalhes sobre a diretiva Require e outras maneiras de ajustar polticas de autorizao. Um alerta: na autenticao HTTP Basic as senhas atravessam a rede em um formato muito prximo de texto puro, de forma extremamente insegura. Se voc est preocupado com captura de senhas, pode ser uma boa idia utilizar alguma forma de encriptao SSL, para que os clientes se autentiquem atravs de https:// ao invs de http://; minimamente, voc pode congurar o Apache para utilizar um certicado de servidor auto-assinado. Consulte a documentao do Apache e OpenSSL para informaes sobre como faz-lo.
51
CDTC
Brasil/DF
Voc pode restringir acesso a todas as operaes no repositrio adicionando a diretiva "Require valid-user"ao bloco <Location>. Usando nosso exemplo anterior, isto signicaria que apenas clientes que disseram ser "Joo"ou "Maria"e informaram a senha correta para seu respectivo usurio, seriam autorizados a fazer qualquer ao com o repositrio Subversion:
<Location /svn> DAV svn SVNParentPath /usr/local/svn # como autenticar um usuario AuthType Basic AuthName "Repositorio Subversion" AuthUserFile /etc/svn-auth-file # apenas usuarios autenticados podem acessar o repositorio Require valid-user </Location>
Algumas vezes no necessrio exercer um controle to estrito. Por exemplo, o prprio repositrio do Subversion em http://svn.collab.net/repos/svn permite acesso somente-leitura para qualquer usurio (como efetuar checkout de uma cpia local ou navegar no repositrio utilizando um browser), mas restringe todas as operaes de escrita somente para usurios autenticados. Para fazer este tipo de restrio seletiva, voc pode usar as diretivas de congurao Limit e LimitExcept. Assim como a diretiva Location, esses blocos tm tags de incio e trmino, e voc iria coloc-las dentro do bloco <Location>. Os paramtros presentes nas diretivas Limit e LimitExcept so tipos de requisies HTTP afetadas por aquele bloco. Por exemplo, se voc quisesse proibir qualquer acesso ao repositrio exceto as operaes somente de leitura, voc usaria a diretiva LimitExcept, passando as requisies GET, PROPFIND, OPTIONS e REPORT como parmetros. Assim, a diretiva previamente mencionada "Require valid-user"seria colocada dentro do bloco <LimitExcept> ao invs do bloco <Location>:
<Location /svn> DAV svn SVNParentPath /usr/local/svn # como autenticar um usuario AuthType Basic AuthName "Repositorio Subversion" AuthUserFile /etc/svn-auth-file # para quaisquer operacoes alm dessas, exigir um usurio autenticado <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Estes so apenas alguns exemplos simples. Para mais detalhes sobre o controle de acesso do Apache e a diretiva Require, consulte a seo de segurana dos tutoriais do Apache em 52
CDTC
Brasil/DF
http://httpd.apache.org/docs-2.0/misc/tutorials.html. Para mais informaes sobre conguraes com encriptao SSL e controle de acesso por diretrio, consulte o SVN Book, seo 6 "Server Conguration", que contm exemplos sobre esses tipos de congurao mais especcas e que no so abordadas por este texto.
53
Captulo 7
$ svn help
O comando acima mostraria todos os complementos possveis ao "svn"e poderamos ento descobrir qual comando o mais apropriado para o nosso problema. Supondo agora que gostaramos de obter uma working copy da pasta "exemplo"do repositrio "teste", digitaramos ento o seguinte comando:
CDTC
Brasil/DF
55
CDTC
Brasil/DF
Este comando dever ser executado sob o diretrio em que se encontra a working copy, obviamente. Ele ir buscar no servidor as modicaes ocorridas em relao verso local e aplic-las de imediato. A esta altura voc deve ter notado as letras que apareceram nos ltimos comando, A e U. Mas o que elas querem dizer? Vamos ver a seguir:
U - o arquivo foi "Updated" (atualizado) a partir do servidor; A - o arquivo ou diretrio foi "Added" (adicionado) sua working copy; D - o arquivo ou diretrio foi "Deleted" (deletado) da sua working copy; R - o arquivo ou diretrio foi "Replaced" (substitudo) em sua working copy, ou seja, um elemento foi deletado e posteriormente outro com o mesmo nome foi adicionado; embora tenham o mesmo nome o repositrio consegue perceb-los como arquivos diferentes; G - o arquivo no servidor recebeu alteraes, mas sua cpia local tinha as suas modificaes; ou as alteraes no interceptavam ou eram idnticas s suas, ento o Subversion conseguiu coloc-las em estado de "merGed" (unio) sem problemas; C - o arquivo recebeu alteraes "Conflicting" (conflitantes) com as suas, ou seja, na mesma seo do arquivo; trataremos deste caso mais adiante.
56
CDTC
Brasil/DF
$ svn status M bar.c ? foo.o ! qq_dir I .screenrc A + moved_dir M + moved_dir/README D outros/teste.c A outros/calc/soma.h C outros/calc/divide.c R xyz.c S outros/game
Temos acima um possvel exemplo de sada do comando "svn status"que nos ajudar a explicar os status mais importantes a serem compreendidos. Na primeira coluna, temos:
A - o arquivo/diretrio foi agendado para adio no repositrio; C - o arquivo est em estado de conflito e ser necessrio resolv-lo antes de mandar as alteraes ao servidor;
57
CDTC
Brasil/DF
D - o arquivo/diretrio foi agendado para deleo no repositrio; M - o contedo do arquivo foi modificado; R - o arquivo foi agendado para substituio no repositrio, com o mesmo nome de um que foi deletado; ? - o arquivo em questo no est sob controle de verso (possivelmente foi criado e no foi utilizado o "svn add"); ! - o arquivo no est presente por algum motivo, possivelmente tendo sido deletado sem o uso de um comando Subversion; I - o arquivo foi configurado para ser ignorado pelo sistema de controle de verses.
Na coluna seguinte poderemos ver um "+"ou no, indicando que um arquivo foi agendado para adio no repositrio com a preservao de seu histrico. Isso provavelmente nos dir que ele proveniente de uma cpia com o "svn copy"(A+), ou, alm de ter sido copiado tambm foi modicado localmente (M+). A ltima coluna nos dir se um arquivo ou diretrio foi deslocado do caminho do restante de sua working copy, com o comando "svn switch", para um branch ou tag. Para a referncia completa dos possveis outputs do "svn status"consulte o manual ocial do Subversion. Adicionando o switch -u"ou --show-updates"ao "svn status", juntamente com a opo -v"ou --verbose"(para maior detalhamento), ele ir contatar o servidor e comparar suas modicaes com as revises que l se encontram e ir informar sobre arquivos antigos (out-of-date):
$ svn status --show-updates --verbose M * 44 23 fbscarel README M 44 20 sidney bar.c * 44 35 capim outros/teste.c Status against revision: 46
Os asteriscos acima nos indicam que caso fosse utilizado o "svn update"neste ponto os arquivos "README"e "teste.c"receberiam modicaes. Isto quer dizer que nossa reviso local est desatualizada e devemos fazer um update para receber as modicaes nestes arquivos e conferir se estas conitam com a verso local.
CDTC
Brasil/DF
+++ teste.c (working copy) @@ -1,7 +1,12 @@ +#include +#include +#include + +#include int main(void) { - printf("Oi galera\n"); + printf("Oi de novo galera\n"); return 0; }
As modicaes so mostradas em formato diff unicado, sendo as linhas adicionadas mostradas com um "+"antes e as deletadas mostradas com um -". interessante notar que podemos facilmente produzir um patch (arquivo incluindo apenas as modicaes em um arquivo) com o auxlio do svn diff, como no exemplo abaixo:
59
CDTC
Brasil/DF
simples, processo automatizado pelo Subversion. Mas ainda resta uma dvida: e se nossas modicaes no resultarem em um conito simples, no qual nossa alterao intercepta diretamente a de um colaborador? Vejamos a sada de um svn update que causar esse problema:
$ svn commit -m "Algumas modificacoes simples no arquivo teste.c" Sending teste.c Transmitting file data . Committed revision 47.
O comando acima submeter nossas modicaes locais ao repositrio e a mensagem passada atravs do switch --message"ou -m"ser a mensagem de log do commit. importantssimo que essa mensagem descreva precisamente o que foi modicado, assim car muito mais fcil recuperar o repositrio aps um engano, alm de ajudar o usurio a utilizar o sistema com mais ecincia. Essa mensagem pode ser ainda passada atravs de um arquivo, com o switch --le". 60
Captulo 8
8.2 TortoiseSVN
Plataformas: Windows; URL: http://tortoisesvn.tigris.org/; O TortoiseSVN um cliente para o Subversion de fcil utilizao, implementado como uma extenso do Windows Shell, o Windows Explorer. Assim sendo, no congura um programa em separado assim como o RapidSVN. Apresenta as facilidades de ser integrado diretamente no gerenciador de arquivos, bastando alguns cliques para acessar menus altamente intuitivos, tornando a experincia bastante acessvel a usurio menos experientes. Tambm licenciado sob a GPL e hospedado na tigris.org. Uma excelente alternativa para os usurios Windows.
8.3 WebSVN
Plataformas: Multiplataforma; 61
CDTC
Brasil/DF
URL: http://websvn.tigris.org/; O WebSVN no propriamente um cliente para o Subversion, mas um visualizador web. utilizado em muitos sites e portais para disponibilizar um acesso rpido aos repositrios. Tem a capacidade de mostrar os arquivos, diferenas entre arquivos, dentre algumas outras caractersticas. A interface amigvel e altamente customizvel, porm limitada em relao aos demais clientes. Roda sobre o Apache, sendo escrito em PHP e apresentando, portanto, grande portabilidade. , tambm, licenciado sob a GPL e hospedado na tigris.org. No propriamente uma escolha para o usurio, mas uma boa ferramenta de visualizao. No substitui um cliente grco ou a linha de comando.
8.4 Trac
Plataformas: Multiplataforma; URL: http://trac.edgewall.org/; O Trac um sistema de gerenciamento de defeitos e wiki integrado para projetos de desenvolvimento de software. Ele utiliza uma aproximao minimalista em relao a seu objetivo, ajudando desenvolvedores a produzir software, e, ao mesmo tempo, no colocar-se como um empecilho ao uxo do trabalho, sem interferir nos processos e polticas estabelecidos de uma equipe de desenvolvimento. O Trac prov uma interface para o Subversion (visualizao de cdigo fonte, revises, etc.), um wiki integrado e ainda facilidades de report de bugs e defeitos em software. escrito em Python, e por esse motivo bastante portvel, podendo ser executado em conjunto com o Apache ou em um servidor independente. Licenciado sob a licena BSD modicada, sendo assim totalmente livre.
62