O Subversion é um sistema de controle de versão de código-fonte aberto gratuito e amplamente considerado como sucessor do CVS, o que quer dizer que os recursos apresentados pelo CVS normalmente também estão presentes no subversion. Ele é especialmente recomendável quando as vantagens do CVS são almejadas sem que seja necessário tolerar as desvantagens. Muitos desses recursos já foram apresentados brevemente na Seção 47.1.3, “subversion”.
A instalação de um banco de dados repositório em um servidor é um procedimento relativamente simples. O Subversion fornece uma ferramenta de administração dedicada para essa finalidade. Digite o comando a seguir para criar um novo repositório:
svnadmin create /path/to/repository
Outras opções podem ser relacionadas com svnadmin help. Em oposição ao CVS, o subversion não é baseado no RCS, mas sim no Banco de dados Berkeley. Não instale um repositório em sistemas de arquivos remotos, como NFS, AFS ou Windows SMB. O banco de dados requer mecanismos de bloqueio POSIX, não suportados por esses sistemas de arquivos.
O comando svnlook fornece informações sobre um repositório existente.
svnlook info /path/to/repository
É necessário configurar um servidor para permitir que usuários diferentes acessem o repositório. Use o servidor Web do Apache com o WebDAV para fazer isso, ou use o svnserve, , servidor do pacote do subversion. Quando o svnserve estiver em execução, o repositório poderá ser acessado com um URL com svn:// ou svn+ssh://. Usuários que podem se autenticar chamando svn podem ser definidos em /etc/svnserve.conf.
A decisão sobre o uso do Apache ou do svnserce depende de vários fatores. É recomendável pesquisar o manual do subversion. Mais informações sobre o assunto podem ser encontradas na Seção 47.5.3, “Para obter mais informações”.
Use o comando svn (similar ao cvs) para acessar um repositório do subversion. O conteúdo fornecido por um servidor configurado corretamente correspondente a determinado repositório pode ser acessado por qualquer cliente com um dos seguintes comandos:
svn list http://svn.example.com/path/to/project
ou
svn list svn://svn.example.com/path/to/project
Grave um projeto existente no diretório atual (registre a saída) com o comando svn checkout:
svn checkout http://svn.example.com/path/to/project nameofproject
O registro da saída cria um novo subdiretório nameofproject no cliente. Operações (adição, cópia, renomeação, exclusão) podem ser executadas em:
svn add file svn copy oldfile newfile svn move oldfile newfile svn delete file
Esses comandos também podem ser usados em diretórios. O subversion pode registrar adicionalmente propriedades de um arquivo ou diretório.
svn propset license GPL foo.txt
O exemplo anterior define o valor GPL para a propriedade license. Exiba propriedades com svn proplist:
svn proplist --verbose foo.txt Properties on 'foo.txt': license : GPL
Grave as mudanças no servidor com svn commit. Outro usuário pode incorporar suas mudanças em seu diretório de trabalho sincronizando com o servidor e usando svn update.
Diferentemente do CVS, o status de um diretório em operação no subversion pode ser exibido sem o acesso ao repositório com svn status. Mudanças locais são exibidas em cinco colunas, sendo a primeira a mais importante:
Nenhuma mudança.
O objeto é marcado para adição.
O objeto é marcado para exclusão.
O objeto foi modificado.
O objeto está em conflito.
O objeto foi ignorado.
O objeto não está sendo mantido por controle de versão.
O objeto é reportado como ausente. Este flag é exibido quando o objeto é apagado ou movido sem o comando svn.
O objeto estava sendo mantido como um arquivo, mas foi substituído por um diretório, ou ocorreu o oposto.
A segunda coluna mostra o status das propriedades. O significado de todas as outras colunas pode ser lido no manual do subversion.
Use o comando svn help para obter a descrição de um parâmetro de um comando:
svn help proplist proplist (plist, pl): List all properties on files, dirs, or revisions. usage: 1. proplist [PATH...] 2. proplist --revprop -r REV [URL] 1. Lists versioned props in working copy. 2. Lists unversioned remote props on repos revision. ...
O primeiro ponto de referência é a home page do projeto subversion, em http://subversion.tigris.org/. Um manual altamente recomendável pode ser encontrado no diretório file:///usr/share/doc/packages/subversion/html/book.html depois da instalação do pacote subversion-doc e também está disponível online em http://svnbook.red-bean.com/svnbook/index.html.