Comandos do Linux e Unix: Sistema; Processos; Sistema de Arquivos; Rede; SSH SCP; VPN com SSH; RSYNC; SUDO; Arquivos Encriptados; Partições Encriptadas; Certificados SSL; CVS; SVN; Comando Úteis; Instalar Software; Converter Mídia; Impressão; Banco de Dados; Quota de Disco; Shells; Scripting; Programação

Comando SVN Linux

Subversion (SVN)http://subversion.tigris.org/ é um sistema de controle de versão projetado para ser o sucessor do CVS (Concurrent Versions System). O conceito é similar ao CVS, mas muitas deficiências foram melhoradas. Veja também o SVN bookhttp://svnbook.red-bean.com/en/1.4/.

configuração do servidor setup

A iniciação do repositório é bastante simples (aqui por exemplo /home/svn/ deve existe):

# svnadmin create --fs-type fsfs /home/svn/project1

Agora o acesso ao repositório torna-se possível com:

  • file:// Acesso direto ao sistema de arquivo com o cliente svn. Isso requer permissões locais no sistema de arquivo.
  • svn:// ou svn+ssh:// acesso remoto com o servidor svnserve (também pelo SSH). Isso requer permissões locais no sistema de arquivo (porta padrão: 2690/tcp).
  • http:// Acesso remoto com o webdav utilizando o apache. usuários locais não são necessário para esse método.

Utilizando o sistema de arquivo local, não é possível importar e então verificar um projeto existente. diferente do CVS, não é necessário dar cd dentro do diretório do projeto, simplesmente dê o path completo:

# svn import /project1/ file:///home/svn/project1/trunk -m 'Initial import'
    # svn checkout file:///home/svn/project1

O novo diretório “trunk” é somente uma convenção, isso não exigido.

Acesso remoto com ssh

Nenhuma configuração especial é exigida para acessar o repositório via ssh, simplesmente substitua file:// com svn+ssh/hostname. Por exemplo:

# svn checkout svn+ssh://hostname/home/svn/project1

Assim com o acesso ao arquivo local, todo usuário precisa de um acesso ssh para o servidor (com uma conta local) e também acesso a leitura/escrita. Esse método pode ser adequado para um grupo pequeno. Todos os usuários poderia pertencer a um grupo de subversão que pertence ao repositório, por exemplo:

# groupadd subversion
    # groupmod -A user1 subversion
    # chown -R root:subversion /home/svn
    # chmod -R 770 /home/svn

Acesso remoto com o http (apache)

Acesso remoto pelo http (https) é a única boa solução para um grupo de usuários grande. Esse método utiliza a autenticação apache, não as contas local. Essa é uma configuração típica do apache, porém pequena:

LoadModule dav_module         modules/mod_dav.so
    LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module   modules/mod_authz_svn.so    # Somente para controle de acesso
<Location /svn>
      DAV svn
      # qualquer URL "/svn/foo" será mapeado para um repositório /home/svn/foo
      SVNParentPath /home/svn
      AuthType Basic
      AuthName "Subversion repository"
      AuthzSVNAccessFile /etc/apache2/svn.acl
      AuthUserFile /etc/apache2/svn-passwd
      Require valid-user
    </Location>

O servidor apache precisa de total acesso ao repositório:

# chown -R www:www /home/svn

Criar um usuário com o htpasswd2:

# htpasswd -c /etc/svn-passwd user1  # -c cria o arquivo

Exemplo de controle de acesso svn.acl

# Acesso padrão é somente leitura. "* =" seria sem acesso padrão
    [/]
    * = r
    [groups]
    project1-developers = joe, jack, jane
    # Da acesso de escrita aos desenvolvedores
    [project1:]
    @project1-developers = rw

Comandos SVN e uso

Veja também o Subversion Quick Reference Cardhttp://www.cs.put.poznan.pl/csobaniec/Papers/svn-refcard.pdf. Tortoise SVNhttp://tortoisesvn.tigris.org é uma interface de janela agradável.

Importar

um novo projeto, que é um diretório com alguns arquivos, é importado para dentro do repositório com o comando import. Import também é utilizado para adicionar um diretório com seu conteúdo para um projeto existente.

# svn help import                                # obtém ajuda para qualquer comando
        # Adiciona um novo diretório (com conteúdo) para dentro do diretório src no project1
    # svn import /project1/newdir http://host.url/svn/project1/trunk/src -m 'add newdir'

Typical SVN commands

# svn co http://host.url/svn/project1/trunk      # Verifica a versão mais recente
        # Etiquetas (Tags) e ramos (branches) são gerados ao copiar
    # svn mkdir http://host.url/svn/project1/tags/   # Cria o diretório tags
    # svn copy -m "Tag rc1 rel." http://host.url/svn/project1/trunk \
                                 http://host.url/svn/project1/tags/1.0rc1
    # svn status [--verbose]                         # Verifica status de arquivos dentro do diretório de trabalho
    # svn add src/file.h src/file.cpp                # Adiciona dois arquivos
    # svn commit -m 'Added new class file'           # Gera as alterações com uma mensagem
    # svn ls http://host.url/svn/project1/tags/      # Lista todas as tags
    # svn move foo.c bar.c                           # Move (renomeia) arquivos
    # svn delete some_old_file                       # Exclui arquivos

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *