Instalação do Subversion (SVN) no CentOS via YUM

ambiente de execução

Versão do sistema: CentOS Linux release 7.3.1611 (Core) Versão do software: Subversion-1.7.14 Requisitos de hardware: Nenhum

Processo de instalação

1. Instalar o repositório YUM-EPEL

O pacote do Subversion é fornecido pelo repositório EPEL-YUM.

[root@localhost ~]# yum -y install epel-release.noarch
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache


2. Isntalar o Subversion

[root@localhost ~]# yum -y install subversion


3. Verificar a versão do Subversion

[root@localhost ~]# svnserve --version -q
1.7.14


4. Criar um novo repositório

Vamos criar um repositório chamado "test" para fins de teste.

[root@localhost ~]# mkdir -p /data/svn/test
[root@localhost ~]# svnadmin create /data/svn/test/


5. Configurar o repositório

[root@localhost ~]# vim /data/svn/test/conf/svnserve.conf
[general]
### Configurações gerais ###
anon-access = none
# Define acesso anônimo.
# read  - habilita acesso anônimo com permissão somente leitura.
# write - habilita acesso anônimo com permissão leitura e escrita.
# none  - desabilita acesso anônimo.
# Nota: ao ativar autenticação, recomenda-se definir como "none".
auth-access = write
# Configura acesso autenticado, exige nome de usuário e senha.
# read  - permite acesso autenticado com permissão somente leitura.
# write - permite acesso autenticado com permissão leitura e escrita.
# none  - desativa acesso autenticado.
password-db = passwd
# Especifica o caminho do arquivo de senhas dos usuários.
# Usado quando o acesso autenticado está ativado.
authz-db = authz
# Especifica o caminho do arquivo de controle de permissões.
# Usado quando o acesso autenticado está ativado.
realm = Meu Primeiro Repositório
# Define o nome do espaço de autenticação do repositório, único identificador.


6. Criar contas de usuário e senhas

[root@localhost ~]# vim /data/svn/test/conf/passwd
[users]
### Configuração de credenciais ###
# Formato: usuário = senha.
test01 = 123456
test02 = 123456
test03 = 123456

7. Configurar permissões de acesso aos usuários
[root@localhost ~]# vim /data/svn/test/conf/authz 
[groups]
### Definição de grupos de usuários ###
# Formato: grupo = usuário1, usuário2, usuário3,...
tests = test01,test02,test03

### Permissões por diretório ###
# Formato:
# [repositório:diretório]
# usuário = permissão
# @grupo = permissão
# * = permissão
# Permissões:
# vazio - sem acesso
# r  - somente leitura
# rw - leitura e escrita
[test:/]
test01 = r
# Usuário "test01" tem permissão de leitura no diretório "/".
@tests = rw
# Grupo "tests" tem permissão de leitura e escrita no diretório "/".
* =
# Todos os demais usuários não têm acesso ao diretório "/".


8. Iniciar o serviço do Subversion

A porta padrão do serviço Subversion é 3690.

[root@localhost ~]# svnserve -d -r /data/svn
[root@localhost ~]# netstat -lnupt |grep svnserve
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      12135/svnserve


9. Operações no cliente SVN

O cliente SVN é parte do mesmo software que o servidor, mas utiliza comandos diferentes.

9.1. Ignorar arquivos no cliente

Por padrão, o cliente SVN ignora alguns arquivos como ".so", ".lib". Para incluir esses arquivos, edite o arquivo de configuração do cliente.

[root@localhost ~]# vim /root/.subversion/config
[miscellany]
# global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo
global-ignores = 


9.2. Obter o repositório remoto localmente

Baixe o repositório remoto para uma pasta local. Esta pasta se tornará um repositório local, permitindo sincronizar mudanças com o repositório remoto.

Ao acessar pela primeira vez, será solicitado nome de usuário e senha. Você pode optar por salvar as credenciais para evitar digitação repetiad.

[root@localhost ~]# mkdir test
[root@localhost ~]# svn checkout svn://172.18.188.121/test test
Authentication realm: <svn://172.18.188.121:3690> Meu Primeiro Repositório
Password for 'root': 
Authentication realm: <svn://172.18.188.121:3690> Meu Primeiro Repositório
Username: test01
Password for 'test01': 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://172.18.188.121:3690> Meu Primeiro Repositório

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Path: test
URL: svn://172.18.188.121/test
Repository Root: svn://172.18.188.121/test
Repository UUID: 14645214-cae9-4e70-a9cd-d19f3063813f
Revision: 0
Node Kind: directory
Last Changed Rev: 0
Last Changed Date: 2019-03-10 11:31:07 +0800 (Sun, 10 Mar 2019)


9.3. Ver informações do repositório local

[root@localhost ~]# cd test/
[root@localhost test]# svn info


9.4. Adicionar um novo arquivo

[root@localhost test]# touch file01
[root@localhost test]# svn add file01
A         file01


9.5. Verificar o estado das mudanças locais

[root@localhost test]# svn status
A       file01


9.6. Enviar alterações para o repositório remoto

[root@localhost test]# svn commit -m 'Adicionando o arquivo file01'
# Opções:
#  -m    Adiciona uma mensagem descritiva.
Adding         file01
Transmitting file data .
Committed revision 1.


9.7. Listar arquivos no repositório remoto

Podemos ver que o arquivo foi adicionado ao repositório remoto.

[root@localhost test]# svn list svn://172.18.188.121/test
file01


9.8. Remover um arquivo

[root@localhost test]# rm -rf file01
[root@localhost test]# svn delete file01 
D         file01
[root@localhost test]# svn status
D       file01
[root@localhost test]# svn commit -m 'Removendo o arquivo'file01''
Deleting       file01
Committed revision 2.
[root@localhost test]# svn list svn://172.18.188.121/test


9.9. Atualizar o repositório local

Quando outros usuários modificarem arquivos no repositório remoto, atualize seu repositório local para manter consistência.

[root@localhost test]# svn update
Updating '.':
At revision 2.


9.10. Restaurar arquivo por reversão de versão

Se você remover acidentalmente um arquivo e fizer commit, pode restaurá-lo revertendo para a versão anterior.

[root@localhost test]# svn log -v -l 2
------------------------------------------------------------------------
r2 | test01 | 2019-03-10 15:27:54 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
   D /file01

Removendo o arquivo file01
------------------------------------------------------------------------
r1 | test01 | 2019-03-10 15:27:23 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
   A /file01

Adicionando o arquivo file01
------------------------------------------------------------------------
[root@localhost test]# svn update -r 1
Updating '.':
A    file01
Updated to revision 1.
[root@localhost test]# ls
file01


9.11. Restaurra arquivo por mesclagem de versões

Para manter o estado do arquivo antes da exclusão como versão mais recente, faça uma mesclagem entre as versões.

[root@localhost test]# svn log -v -l 2
------------------------------------------------------------------------
r2 | test01 | 2019-03-10 15:27:54 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
   D /file01

Removendo o arquivo file01
------------------------------------------------------------------------
r1 | test01 | 2019-03-10 15:27:23 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
   A /file01

Adicionando o arquivo file01
------------------------------------------------------------------------
[root@localhost test]# svn merge -r 2:1 .
[root@localhost test]# svn update
Updating '.':
At revision 2.
[root@localhost test]# ls
file01


9.12. Resolver conflitos de versão

Quando há mudanças em um arquivo local e o repositório remoto foi atualizado por outro usuário, ocorre um conflito. Resolva isso revertendo suas mudanças e atualizando novamente.

Reverter mudanças locais:

[root@localhost test]# svn revert .
Isso também pode ser aplicado a um arquivo específico:
[root@localhost test]# svn revert file01 
Reverted 'file01'


Tags: subversion svn CentOS yum version-control

Publicado em 10-9 14:12