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.

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>.