A.3. Usando o Subversion
Anterior | Apêndice A. Obtendo o FreeBSD | Próxima

## A.3. Usando o Subversion

### A.3.1. Introdução

Desde de julho de 2012, o FreeBSD usa o Subversion como o único sistema de controle de versão para armazenar todo o código-fonte do FreeBSD, a documentação e a coleção de ports.

### Nota:

O Subversion é geralmente uma ferramenta de desenvolvimento. Os usuários podem preferir usar o `freebsd-update` (Seção 23.2, “Atualização do FreeBSD”) para atualizar o sistema básico do FreeBSD, e o `portsnap` (Seção 4.5, “Usando a Coleção de Ports”) para atualizar a coleção de ports do FreeBSD.

Esta seção demonstra como instalar o Subversion em um sistema FreeBSD e usá-lo para criar uma cópia local de um repositório do FreeBSD. Informações adicionais sobre o uso de Subversion estão incluídas.

### A.3.2. Certificados Raiz SSL

A instalação do security/ca_root_nss permite que o Subversion verifique a identidade dos servidores de repositório HTTPS. Os certificados raiz SSL podem ser instalados a partir de um port:

    # cd /usr/ports/security/ca_root_nss
    # make install clean

ou como um pacote:

    # pkg install ca_root_nss

### A.3.3. Svnlite

Uma versão leve do Subversion já está instalada no FreeBSD como `svnlite`. A versão do port ou pacote do Subversion é necessária apenas se a API do Python ou do Perl for necessária, ou se uma versão posterior do Subversion for desejada.

A única diferença do uso normal do Subversion é que o nome do comando é `svnlite`.

### A.3.4. Instalação

Se o `svnlite` não estiver disponível ou a versão completa do Subversion for necessária, ele deverá ser instalado.

O Subversion pode ser instalado a partir da coleção de ports:

    # cd /usr/ports/devel/subversion
    # make install clean

O Subversion também pode ser instalado como um pacote:

    # pkg install subversion

### A.3.5. Executando o Subversion

Para obter uma cópia limpa do código-fonte em um diretório local, use `svn`. Os arquivos neste diretório são chamados de cópia de trabalho local.

### Atenção:

Mova ou exclua o diretório de destino existente antes de usar o `checkout` pela primeira vez.

O checkout em cima de um diretório não-`svn` existente pode causar conflitos entre os arquivos existentes e aqueles trazidos do repositório.

O Subversion usa URLs para designar um repositório, sob a forma de `protocol://hostname/path`. O primeiro componente do caminho é o repositório do FreeBSD para acessar. Existem três repositórios diferentes, `base` para o código-fonte do sistema básico do FreeBSD, `ports` para a coleção de ports, e `doc` para a documentação. Por exemplo, o URL `https://svn.FreeBSD.org/ports/head/` especifica a ramificação principal do repositório de ports, usando o protocolo `https`.

Um checkout de um determinado repositório é executado com um comando como este:

    # svn checkout https://svn.FreeBSD.org/repository/branch lwcdir

Onde:

- O `repository` é um dos repositórios do Projecto: `base`, `ports`, ou `doc`.

- A `branch` depende do repositório usado. O `ports` e o `doc` são normalmente atualizados na ramificação `head`, enquanto `base` mantém a última versão de -CURRENT em `head` e as respectivas versões mais recentes das ramificações -STABLE em `stable/9` (9.`x`) e `stable/10` (10.`x`).

- O `lwcdir` é o diretório de destino onde o conteúdo do ramo especificado deve ser colocado. Isso geralmente é `/usr/ports` para o `ports`, `/usr/src` para a `base`, e `/usr/doc` para o `doc`.

Este exemplo obtém a coleção de ports do repositório do FreeBSD usando o protocolo HTTPS, colocando a cópia de trabalho local em `/usr/ports`. Se o `/usr/ports` já estiver presente, mas não tiver sido criado pelo `svn`, lembre-se de renomeá-lo ou excluí-lo antes do checkout.

    # svn checkout https://svn.FreeBSD.org/ports/head /usr/ports

Como o checkout inicial deve fazer o download da ramificação completa do repositório remoto, isso pode demorar um pouco. Por favor, seja paciente.

Após o checkout inicial, a cópia de trabalho local pode ser atualizada executando:

    # svn update lwcdir

Para atualizar o `/usr/ports` criado no exemplo acima, use:

    # svn update /usr/ports

O update é muito mais rápido do que um checkout, transferindo apenas os arquivos que foram alterados.

Uma maneira alternativa de atualizar a cópia de trabalho local após o checkout é fornecida pelo `Makefile` existente em `/usr/ports`, `/usr/src`, e `/usr/doc`. Configure o `SVN_UPDATE` e use o destino `atualizar`. Por exemplo, para atualizar `/usr/src`:

    # cd /usr/src
    # make update SVN_UPDATE=yes

### A.3.6. Sites Espelho do Subversion

O repositório Subversion do FreeBSD é:

    svn.FreeBSD.org

Essa é uma rede de espelhos acessível publicamente a qual usa o GeoDNS para selecionar um servidor de backend apropriado. Para visualizar os repositórios Subversion do FreeBSD através de um navegador, use https://svnweb.FreeBSD.org/.

O HTTPS é o protocolo preferido, mas o pacote `security/ca_root_nss` precisará ser instalado para validar os certificados automaticamente.

### A.3.7. Para Maiores Informações

Para outras informações sobre o uso do Subversion, por favor veja o “Subversion Book”, intitulado Version Controle com Subversion, ou o Documentação do Subversion.

Anterior | Acima | Próxima
A.2. Sites de FTP | Principal | A.4. Usando o rsync

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.