SVN Subversion Principais Comandos

SVN Subversion Principais Comandos. Principais Comandos svn, aqui alguns comandos do Subversion. Para utilizado em ambiente Windows, é necessário que seja instalado o cliente Subversion em linha de comando. Na Bireme, é utilizado comumente o TortoiseSVN ao invés da linha de comando, quando se trabalha com Windows, o cliente por linha de comando precisa ser instalado separadamente.

SVN checkout

É utilizado para descarregar o código do projeto, mantendo o versionamento. Dessa forma, é possível manter o código atualizado, enviar novas atualizações, ver diferenças entre versões de arquivos, entre outras funcionalidades que podem ser encontradas no manual do Subversion.

No exemplo a seguir, é feito o checkout da versão do BVS-Site que está em desenvolvimento para uma pasta chamada bvs-trunk:

$ svn co svn://svn.reddes.bvsalud.org/bvs-site/bvs-site/trunk/ bvs-trunk

Revision keywords

HEAD A última (ou “mais recente”) revisão no repositório. (svn co svn://path -r HEAD)

BASE O número de revisão de um item em uma cópia de trabalho. Se o item tiver sido modificado localmente, a “versão BASE” refere-se à forma como o item estaria sem estas modificações locais. (svn log –revision BASE:HEAD)

COMMITED A revisão mais recente anterior, ou igual a, BASE, na qual o item foi modificado. (svn log –revision COMMITTED path)

PREV A revisão imediatamente anterior à última revisão na qual o item foi modificado. Tecnicamente, isto se resume a COMMITTED-1. (svn log –revision PREV path)

SVN update

É utilizado para atualizar o código fonte local com o código fonte existente no repositório do Subversion. O update pode ser realizado sobre arquivo ou diretórios. Caso feito sobre um diretório, serão atualizados também todos arquivos deste diretório e subdiretórios.

O seguinte comando atualiza o arquivo index.php em bvs-trunk/htdocs:

$ svn update bvs-trunk/htdocs/index.php

O seguinte comando atualiza toda a pasta do projeto:

$ svn update bvs-trunk

SVN add & del

São os comando usados para adicionar e excluir arquivos (respectivamente) no subversion.

$ svn add bvs-trunk/htdocs/info.php

ou

$ svn del bvs-trunk/htdocs/info.php

SVN commit

Quando se modifica arquivo e deseja-se que a moficação seja aplicada também no repositório, é utiliza o comando commit, que envia ao servidor todas as alterações ocorridas no código local. Caso feito sobre um diretório, serão enviados também todos arquivos deste diretório e subdiretórios que tenham alguma modificação, ou que tenha sido adicionado.

O seguinte comando envia o arquivo index.php em bvs-trunk/htdocs:

$ svn ci bvs-trunk/htdocs/index.php

O seguinte comando envia ao servidor todos os arquivos da pasta do projeto:

$ svn ci bvs-trunk -m “Uma mensagem para descrever este commit”

Pode ser preciso autenticação para para se enviar um arquivo para o repositório. Quando este for o caso, pode-se utilizar os parâmetros –username e –password. Assim, o comando acima ficaria da seguinte forma:

$ svn ci bvs-trunk --username=fabio --password=f4b1O -m "Descrição para do commit"

Para os que trabalham com o Trac, é possível ter a interação entre os tickets abertos e as mensagens escritas para o commit. Pode-se, por exemplo, fechar um ticket através de um commit. O exemplo a seguir fecha o ticket de número 3.

$ svn ci bvs-trunk -m "resolve *3"

SVN log

Para viasualizar o log de dos commits realizados asta usar os comandos:

$ svn log bvs-trunk/htdocs/index.php

SVN revert

Nem sempre se quer que as alterções feitas seja enviadas para o repositório. Existem casos que é desejado desfazer as alterações feitas localmente. Para isso se utiliza o comando revert, que como os anteriores, pode ser aplicado sobre arquivos ou pastas.

O seguinte comando reverte as alteraç?s do arquivo index.php em bvs-trunk/htdocs:

$ svn revert bvs-trunk/htdocs/index.php

O seguinte comando reverte as alterações de todos os arquivos da pasta do projeto:

$ svn revert --recursive bvs-trunk

Importante: Não é possível desfazer o revert. Depois de feito, todas as alterações são perdidas!
status

Lista todas as diferenças existentes entre o código fonte local e o existente no repositório. Maiores informações sobre o significado das abreviações presentes no resultado podem ser encontradas digitando o seguinte:

SVN help status

Mostra o estado do arquivo index.php em bvs-trunk/htdocs local, em relação ao servidor:

$ svn status bvs-trunk/htdocs/index.php

Lista o estado de todos arquivos e pastas locais em relação ao servidor:

$ svn status bvs-trunk

SVN diff

Exibe as diferenças dos arquivos modificados com os arquivos presente no repositório. Esta ferramenta pode ser usada para criar patches. Isto pode ser feito criando um arquivo contendo diferença de todos arquivos modificados no projeto, da seguinte forma:

$ svn diff htdocs/admin/editor.php > editor.patch

Após esse comando, vai ser gerado um arquivo com as diferenças entre o arquivo editor.php local e o editor.php do repositório. Para este caso, o conteúdo do arquivo gerado é o seguinte:

Index: htdocs/admin/editor/editor.php
===================================================================
--- htdocs/admin/editor/editor.php      (revisão 3110)
+++ htdocs/admin/editor/editor.php      (cópia de trabalho)
@@ -57,7 +57,7 @@
        

Este patch pode ser aplicado em outro local que também tenha o código fonte, de preferência versionado e sob mesma revisão, do BVS-Site. A aplicação pode ser feita da seguinte forma:

$ patch -p0 < editor.patch

Visualizar diferenças da copia local com uma revisão especifica:

$ svn diff htdocs/admin/editor.php --revision 10 > editor.patch

SVN propset

Este comando adiciona propriedades a arquivos e pastas versionados, para ajudar a gerenciar melhor os arquivos dentro da cópia local do código fonte.
svn:ignore

Diz ao Subversion não versionar arquivos com esta propriedade.

Faz com que nenhum arquivo adicionado em bases/site/rss seja versionado:

$ svn propset svn:ignore *
$ svn commit .

Retira arquivo bvs-site-conf.php do versionamento:

$ svn del bvs-trunk/htdocs/bvs-site-conf.php
$ svn propset svn:ignore bvs-trunk/htdocs/bvs-site-conf.php
$ svn commit bvs-trunk/htdocs

A propriedade é criada no escopo da pasta. Por isso faz-se commit da pasta e não do arquivo.
svn:mime-type

Esta propriedade é muito útil quando se usa o Trac. A maioria dos projetos da Bireme contém código e documentos escrito com o conjunto de caracteres ISO-8859-1. Quando estes documentos são vizualizados no Trac, acontecem alguns problema com acentos e caracteres especiais, pois o Trac assume que todo documento seja UTF-8 quando algo diferente não for especificado na propriedade svn:mime-type.

Diz ao SVN que o CHANGES.txt é um arquivo texto e com caracteres mapeados no ISO-8859-1.

$ svn propset svn:mime-type "text/plain;charset=iso-8859-1" bvs-trunk/CHANGES.txt

SVN info

Imprime informações dos arquivos locais.

$ svn info path

SVN import

Importa arquivos de um path local para o repositório.

$ svn import –m “message” local_path svn_path

SVN export

Exporta a arvore de diretórios.

$ svn export svn_path

Recupera a última versão do repositório sem os arquivos de controle de versão (.svn).

SVN list

Lista diretórios no repositório

$ svn list svn_path

Lista diretórios no repositorio (ls unix)

$ svn list --versobe svn_path

SVN blame

Mostra autor e revisão (annotate, praise e ann).

$ svn blame local_path

Mostra autor e revisão especificando a revisão.

$ svn blame --revision x local_path

SVN resolved

Remove os arquivos criados pelo repositório na existência de conflito.

svn resolved local_path

Outros sistemas de controle de versão:
Git (http://git-scm.com/) Linus Torvalds
Mercurial (http://www.selenic.com/mercurial/wiki/) Sun using for JDK
Bazaar (http://bazaar-vcs.org/)
Perforce (http://www.perforce.com/)
Monotone (http://www.venge.net/monotone/)
Visual SourceSafe (http://msdn.microsoft.com/en-us/vstudio/aa718670.aspx) Microsoft