Configurando Subversion

O subversion (SVN) é um ótimo controlador de versões, não só para programação, mas para imagens, vídeos, arquivos texto, binários e todo tipo de arquivo digital que for preciso um versionamento.

[ Hits: 185.954 ]

Por: Ricardo Brito do Nascimento em 28/05/2008 | Blog: http://brito.blog.incolume.com.br


Gerenciando projetos e arquivos no svn



11. Importar um projeto para o svn

Algumas vezes já temos um projeto em algum canto de nossa máquina. Importe-o para o svn usando a linha de comando abaixo:

# svn import /tmp/projeto http://servidor/svn/projeto

O comando acima importará todos os arquivos do diretório /tmp/projeto para o repositório projeto em http://servidor/svn/

Uma outra maneira de executar o procedimento acima é acessar o diretório e então importá-lo para o svn:

# cd /tmp/projeto
# svn import http://servidor/svn/projeto


12. Baixar um projeto do svn

Quando for preciso efetuar modificações em um projeto que já está no svn, antes é preciso fazer o checkout, ou seja, efetuar o download dos arquivos correspondentes ao projeto.

Efetuando o checkout:

# svn co http://servidor/svn/projeto

13. Efetivar alterações em um projeto do svn

Depois de concluídas as modificações necessárias precisamos colocar a nova revisão do projeto no svn, para isso precisamos efetuar um commit (check in).

De dentro do diretório principal do projeto efetue o commit:

# svn commit
ou
# svn ci

14. Listar arquivos de um projeto

Depois de efetuar várias mudanças em um projeto baixado do svn, é importante poder listar o seu conteúdo e saber quais arquivos estão armazenados e quais não estão no seu respectivo repositório no svn.

Para isso, execute o seguinte comando no diretório principal do projeto:

# svn list

15. Adicionar arquivos a um projeto

No decorrer de um projeto novos arquivos surgem e precisam ser adicionados no repositório svn.

Para efetuar essa operação pode-se usar o seguinte comando:

# svn add projeto.c

Quando o commit for efetuado, o arquivo projeto.c será adicionado à árvore correspondente do projeto em que estava trabalhando.

Remover arquivos de um projeto:

A medida que arquivos vão sendo incluso no projetos, há a necessidade de excluir alguns.

Use o seguinte comando para efetuar tal operação:

# svn rm projeto.c

É possível remover um projeto inteiro do svn, para isto basta executar:

# svn rm http://servidor/svn/projeto

Quando o commit for efetuado, o arquivo projeto.c será removido da árvore onde ele era armazenado e na nova revisão ele não fará mais parte do projeto.

16. Verificar as alterações antes de efetuar um commit

Na maioria das vezes é interessante, antes de efetuar o commit, verificar quais são as modificações.

Para isso usamos o svn diff. Porém, se existirem muitas modificações, é preciso jogar a saída do comando para um editor de texto, sendo no Linux, assim, possível analisar todo o diff gerado.

Executando apenas o svn diff:

# svn diff

Jogando a saída para um editor de texto, no caso o vim (Sistemas Operacionais Unix Like):

# svn diff | vim -

Lembrando que o comando acima mostra as diferenças do diretório onde foi executado e o seu correspondente no svn. Para verificar todas as modificações de um projeto, basta executá-lo na raiz principal dele.

17. Verificar o log de um projeto

Muitas vezes esquecemos o que fizemos, por isso, ao efetuar um commit o svn sempre pede uma mensagem para ser adicionada ao log do projeto.

Para verificar os logs de um determinado projeto: efetue o checkout dele, acesse o diretório onde ele foi baixado e execute o seguinte comando:

# svn log

18. Obter ajuda dos próprios comandos

Para verificar os comandos disponíveis use:

# svn help

Uma série de comandos, possíveis, será listada. Para obter informações sobre um comando em específico use:

# svn comando --help

20. Obter Status

# svn st

Legenda:
  • U - o arquivo foi "Updated" (atualizado) a partir do servidor;
  • A - o arquivo ou diretório foi "Added" (adicionado) à sua working copy;
  • D - o arquivo ou diretório foi "Deleted" (deletado) da sua working copy;
  • R - o arquivo ou diretório foi "Replaced" (substituído) em sua working copy, ou seja, um elemento foi deletado e posteriormente outro com o mesmo nome foi adicionado; embora tenham o mesmo nome o repositório consegue percebê-los como arquivos diferentes;
  • G - o arquivo no servidor recebeu alterações, mas sua cópia local tinha as suas modificações; ou as alterações não interceptavam ou eram idênticas às suas, então o Subversion conseguiu colocá-las em estado de "merGed" (união) sem problemas;
  • C - o arquivo recebeu alterações "Conflicting" (conflitantes) com as suas, ou seja, na mesma seção do arquivo; trataremos deste caso mais adiante.

Página anterior     Próxima página

Páginas do artigo
   1. Como criar e usar um servidor Subversion (SVN) passo a passo
   2. Customizando o servidor SVN
   3. Configurando o apache para conexões http com svn
   4. Gerenciando projetos e arquivos no svn
   5. Dicas adicionais e bibliografia
Outros artigos deste autor

Formatando exibição de datas no Linux

Conexão com chaves assimétricas sem uso de senha em servidor sshd

Proteção utilizando fail2ban contra ataques do tipo

Configurando proxy no shell

Vim com corretor ortográfico em pt_BR/es_ES/en_US

Leitura recomendada

QTParted - Particionador gráfico, simples e fácil

Software livre na educação de crianças

Máquinas virtuais

Cacti: Gerenciamento de redes com os plugins Weathermap e Monitor no Debian Etch Linux

ALSA

  
Comentários
[1] Comentário enviado por joaomc em 29/05/2008 - 09:10h

Uma boa pedida para quem quiser instalar um servidor Subversion no Windows é usar o Collabnet Subversion Server, que já vem empacotado com tudo o que precisa. Funciona muito bem.
Eu gosto muito de usar o Git-SVN para interagir com repositórios SVN. Vale a pena aprender.

[2] Comentário enviado por Bruno Faria em 29/05/2008 - 14:11h

Olá,
muito bom o artigo, ótimo mesmo.
Porém, qual seria a diferença entre CVS e SVN?

[3] Comentário enviado por gjr_rj em 29/05/2008 - 18:57h

Gostei do artigo, bom mesmo !

[4] Comentário enviado por leobragatti em 30/05/2008 - 12:00h

cara, excelente artigo
ja implementei aqui e vou começar a fazer os trabalho de faculdade com os caras da faculdade usando isso :)

Muito obrigado pelo artigo
abraços

[5] Comentário enviado por joaomc em 02/06/2008 - 09:33h

@brunoh,

O SVN foi basicamente construído para substituir o CVS. Entre as vantagens, podemos citar os commits atômicos com changesets (conjuntos de mudanças): As alterações feitas no repositório são enviadas em bloco. No CVS, as alterações são feitas por arquivo. Assim, tem-se um histórico mais claro e limpo das modificações.

[6] Comentário enviado por gokden em 13/10/2008 - 18:36h

pessoal... eu uso o openSUSE 11
e ocorre este erro aqui..

httpd2: Syntax error on line 180 of /etc/apache2/httpd.conf: Syntax error on line 102 of /etc/apache2/default-server.conf: Syntax error on line 2 of /etc/apache2/conf.d/subversion.conf: Cannot load /srv/www/modules/mod_dav_svn.so into server: /srv/www/modules/mod_dav_svn.so: cannot open shared object file: No such file or directory

alguem sabe o pq ??
me parece que ele não encontrou o mod_dav_svn.so =D
alguem jah teve este problema ??

[7] Comentário enviado por guiteodasilva em 15/10/2008 - 16:56h

Fala ai galera,
Seguite instalei o subversion no meu servidor (ubuntu 8.04) e depois o subclipse no eclipse da minha máquina pessoal(ubuntu 8.04).
Conecto tranquilo no repositorio consigo dar commit,update, checkout.

Os aquivos transferidos para o repositorio no servidor pela interface do eclipse aparecem tranquilo tranquilo consigo abrir e tudo mais. So que, quando entro no servidor e entro no repositorio e mando listar os arquivo, os mesmos não se encontram la. executo o locate e nada também. Ja tentei de tudo, me ajudem!!!

Valew.

[8] Comentário enviado por gokden em 04/11/2008 - 15:56h

oi denovo gente...
alguem sabe se tem algum jeito onde eu possa dar privilégios separadas de usuário para usuário ?
exemplo:
o user a pode vizualizar o arquivo a
o user b pode vizualizar o arquivo b
mas o user a nao ve o arquivo b nem o user b ve o arquivo a =D

deu pra intende ??

grato....

[9] Comentário enviado por parrera em 09/11/2009 - 10:45h

Bom demais este tutorial, mas o seguinte, uso o svnserve como meu servidor que roda em uma máquina que usa OpenSUSE 11.1, seguinte, na minha rede interna o svn está funcionando normalmente, mas agora gostaria de compartilhar nosso repositorio com uma outra rede, tem como fazer isso usando o svnserve ou é preciso usar o apache?
Obs: Quero que outra rede passe a comunicar com nosso repositorio, para cliente usamos o tortoiseSVN(windows), tem como isso usando o svnserve? Existe algum tutorial para isso?Alguma dica?Obrigado à todos

[10] Comentário enviado por klebervirgilio em 22/01/2010 - 13:07h

M diga, como fica as trunk/branches/ tags????

[11] Comentário enviado por esardenberg em 16/03/2012 - 15:21h

Amigos

Preciso renomear o nome de um repositorio já em utilização. Somente renomeio a pasta criada?

Obrigado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts