Skip to content

Instantly share code, notes, and snippets.

@embs
Created June 3, 2012 19:11
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save embs/2864680 to your computer and use it in GitHub Desktop.
Save embs/2864680 to your computer and use it in GitHub Desktop.
Primeiros passos com o controlador de versão Apache Subversion

Getting Started With Subversion

O que é Subversion (SVN)?

Resposta curta: um controlador de versão.

Resposta longa: não é incomum haver projetos em que mais de um programador desenvolve código simultaneamente. Uma solução para a sincronização do desenvolvimento é a criação de um repositório de código remoto (armazenado em alguma máquina na Internet) para onde cada programador fará o upload do seu código e de onde cada programador poderá fazer o download da versão mais recente do projeto (isto é, baixar modificações realizadas por outros programadores). O, então, Apache SVN é uma ferramenta que auxilia nessa sincronização e permite que versões anteriores sejam restauradas - mitigando o risco de perder partes importantes do projeto.

Instalação

Configurando o ambiente de trabalho com o SVN

Quick Steps

  1. Cadastre-se em https://www.assembla.com
  2. Obtenha acesso a https://subversion.assembla.com/svn/cinbox/
  3. Execute svn checkout https://subversion.assembla.com/svn/cinbox/

Noção básica

No repositório local fica o código com o qual cada programador trabalha separadamente - isto é, seu workspace. As modificações realizadas no código que está no repositório local não são acessíveis para outros programadores até que seja feito o upload do código para o repositório remoto.

Adicionando novos arquivos

Depois de criado um novo arquivo, é necessário adicioná-lo ao SVN para que ele seja sincronizado. Isso pode ser feito com o seguinte comando: ####svn add <nome do arquivo> Uma vez adicionado, o arquivo está presente no repositório local mas só ficara disponível para outros programadores (através do repositório remoto) quando o seguinte comando for executado: ####svn commit -m <mensagem informativa> Mais uma vez, a mensagem informativa serve para avisar os outros programadores o que o seu upload (muitas vezes chamado commit) adiciona ao projeto.

Atualizando arquivos

Para modificar arquivos já existentes nos repositórios (tanto local quanto remoto) basta aplicar as mudanças desejadas e executar o comando ####svn update Do mesmo modo como ocorre com o comando svn add, o svn update só surte efeito no repositório remoto depois que se executa svn commit.

Deletando, copiando e removendo arquivos

Para remover um arquivo do projeto que está no repositório remoto não basta apenas deletá-lo no seu work space e fazer um commit. Caso isso seja feito, o arquivo será restaurado no repositório local depois que você sincronizá-lo com o repositório remoto (com o comando svn update, visto adiante). Para remover MESMO um arquivo, é necessário executar os seguintes comandos: ####svn delete <nome do arquivo> - remove o arquivo ####svn update - atualiza o repositório local ####svn commit - aplica as mudanças do repositório local ao repositório remoto Para copiar e mover arquivos é a mesma coisa - exceto pelo primeiro comando que seria, respectivamente ####svn cp <caminho para o arquivo> <caminho para cópia do arquivo> ou ####svn mv <caminho para o arquivo atual> <caminho para nova localização do arquivo>

Atualizando o repositório local

Antes de aplicar suas modificações ao repositório remoto (isto é, dar um svn commit) é importante ter em seu repositório local a versão mais recente dos arquivos no repositório remoto. Para pegar atualizações no repositório remoto execute o comando: ####svn update O comando acima faz com que o SVN mescle (merge) os arquivos remotos com os seus arquivos locais (se existir qualquer diferença entre eles). Às vezes, há modificações remotas que conflitam com suas modificações locais (no caso, por exemplo, de dois programadores terem alterado o mesmo arquivo). O SVN dá a oportunidade de resolver esses conflitos após a execução do svn update.

Resolvendo conflitos

Depois de um merge que acarreta conflitos ser executado, o programador deve abrir os arquivos problemáticos e editá-los para a versão que deve ser atualizada no repositório remoto - isto é, resolver os conflitos. Após a resolução, executa-se: ####svn resolve --accept working <nome do arquivo>

Consultando o status do repositório local

Com o comando ####svn status é possível averiguar quais modificações foram aplicadas no repositório local. A saída do comando gera um log explicativo com as seguintes legendas:

  • ? - indica um arquivo que não está sendo sincronizado (para sincronizar, use svn add)
  • C - indica um conflito que deve ser resolvido
  • M - indica um arquivo que foi modificado
  • A - indica arquivos adicionados
  • D - indica arquivos removidos Para visualizar mais precisamente quais modificações foram aplicadas no working space, utiliza-se o comando:

####svn diff

Clientes SVN

Para evitar a temida linha de comando (terminal / bash), você pode utilizar um cliente SVN e executar as ações expostas aqui. Lista de clientes SVN.

Considerações Finais

  1. Tudo fica mais fácil, eficiente e seguro quando se faz com (uma distribuição bacana do) Linux.
  2. Aceito sugestões de melhorias deste singelo texto.

Referências

  1. http://subversion.apache.org/
  2. http://www.jaredrichardson.net/articles/svn-cheat-sheet.html
  3. http://www.linuxplanet.com/linuxplanet/tutorials/6662/1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment