Manutenção de repositório SVN no Linux
Tags: linux, svn, ptbr
Published: 2019-12-18 17:08:04

---
title: Manutenção de repositório SVN no Linux
published: true
date: 2019-05-17 13:23:18 UTC
tags: linux,svn,ptbr
canonical_url: https://www.paulocollares.com.br/infraestrutura/manutencao-de-repositorio-svn-no-linux/
---

Por mais que o GIT tenha dominado o mercado de controladores de versões, o SVN ainda é bastante usado, por isso, trouxe esse breve tutorial com as principais ações que podem ser feitas nesta ferramenta.

Para fim de demonstração, vou considerar que temos um projeto de nome ‘my-project’, hospedado em um repositório na rede local, no endereço ‘https://192.168.1.20/’ e vou trabalhar no meu diretório home, em /home/pcollares/.

Também vou considerar que a estrutura inicial já foi criada, como descrito abaixo:

```
my-project
├─ branches 
├─ tags
└─ trunk
```

## Checkout do repositório

Navegue até o diretório que deseja baixar o repositório:

```
$ cd /home/pcollares
```

Execute o comando para realizar o checkout:

```
$ svn co https://192.168.1.20/svn/my-project
```

## Criação de um novo Branche

Navegue até a raiz do repositório:

```
$ cd /home/pcollares/my-project
```

Rode o comando de criação do branche:

```
$ svn copy https://192.168.1.20/svn/my-project/trunk/ /home/pcollares/my-project/branches/[nome_do_branche]
```

Faça o commit da criação do Branche:

```
$ cd branches/[nome_do_branche]

$ svn commit -m "Criação do branche [nome_do_branche]
```

## Atualização de um Branche com as alterações do Trunk

Navegue até o branche:

```
$ cd /home/pcollares/my-project/branches/[nome_do_branche]
```

Atualize o branche:

```
$ svn update
```

Teste possíveis conflitos:

```
$ svn merge --dry-run https://192.168.1.20/svn/my-project/trunk
```

Rode efetivamente o merge com o Branche:

```
$ svn merge https://192.168.1.20/svn/my-project/trunk
```

Faça commit do Branche:

```
$ svn commit -m "Merge entre o trunk e o branche [nome_do_branche]"
```

## Reintegração de um Branche

Navegue até o trunk:

```
$ cd /home/pcollares/my-project/trunk/
```

Atualize o trunk:

```
$ svn update
```

Teste possíveis conflitos com o _–dry-run_:

```
$ svn merge --reintegrate --dry-run https://192.168.1.20/svn/my-project/branches/[nome_do_branche]
```

Rode efetivamente a reintegração o Trunk:

```
$ svn merge --reintegrate https://192.168.1.20/svn/my-project/branches/[nome_do_branche]
```

Resolva os possíveis conflitos.

Faça commit do trunk:

```
$ svn commit -m "Reintegração do Branche [nome_do_branche] com o Trunk"
```

Como esta linha de desenvolvimento se encerrou, remova este branche:

```
$ svn delete https://192.168.20.1/svn/my-project/branches/[nome_do_branche] -m "Remoção do branche [nome_do_branche] após a reintegração com o trunk"
```

Remova o diretório local do Branche:

```
$ rm -Rf /home/pcollares/my-project/branches/[nome_do_branche]
```

## Criação de uma Tag

Navegue até o diretório do projeto:

```
$ cd /home/pcollares/my-project/
```

Crie a nova tag a partir do trunk:

```
$ svn copy https://192.168.1.20/svn/my-project/trunk/ tags/[nome_da_tag]
```

Faça commit da criação da tag:

```
$ cd tags

$ svn commit -m "Fechamento da criação da tag [nome_da_tag]"
```

## Referências

[http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html](http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html)

[]’s