SVN - Configuração de ambiente

Instalação SVN

Subversion é uma ferramenta popular de controle de versão de código aberto. É de código aberto e está disponível gratuitamente na Internet. Ele vem por padrão com a maioria das distribuições GNU / Linux, então pode já estar instalado em seu sistema. Para verificar se ele está instalado ou não, use o seguinte comando.

[jerry@CentOS ~]$ svn --version

Se o cliente Subversion não estiver instalado, o comando relatará o erro, caso contrário, exibirá a versão do software instalado.

[jerry@CentOS ~]$ svn --version
-bash: svn: command not found

Se você estiver usando GNU / Linux baseado em RPM, use yumcomando para instalação. Após a instalação bem-sucedida, execute osvn --version comando.

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install subversion

[jerry@CentOS ~]$ svn --version
svn, version 1.6.11 (r934486)
compiled Jun 23 2012, 00:44:03

E se você estiver usando GNU / Linux baseado em Debian, use apt comando para instalação.

[jerry@Ubuntu]$ sudo apt-get update
[sudo] password for jerry:

[jerry@Ubuntu]$ sudo apt-get install subversion

[jerry@Ubuntu]$ svn --version
svn, version 1.7.5 (r1336830)
compiled Jun 21 2013, 22:11:49

Configuração do Apache

Vimos como instalar o cliente Subversion no GNU / Linux. Vamos ver como criar um novo repositório e permitir o acesso aos usuários.

No servidor, temos que instalar Apache httpd módulo e svnadmin ferramenta.

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install mod_dav_svn subversion

o mod_dav_svn pacote permite o acesso a um repositório usando HTTP, via servidor Apache httpd e subversion pacote instala a ferramenta svnadmin.

O subversion lê sua configuração de /etc/httpd/conf.d/subversion.confArquivo. Depois de adicionar a configuração,subversion.conf arquivo tem a seguinte aparência:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/svn-users
   Require valid-user
</Location>

Vamos criar usuários do Subversion e conceder-lhes acesso ao repositório. O comando htpasswd é usado para criar e atualizar os arquivos de texto simples que são usados ​​para armazenar nomes de usuário e senhas para autenticação básica de usuários HTTP. A opção '-c' cria um arquivo de senha ; se o arquivo de senha já existir, ele será sobrescrito. É por isso que use a opção '-c' apenas na primeira vez. A opção '-m' ativa a criptografia MD5 para senhas.

Configuração do usuário

Deixe-nos criar usuário tom.

[root@CentOS ~]# htpasswd -cm /etc/svn-users tom
New password: 
Re-type new password: 
Adding password for user tom

Deixe-nos criar usuário jerry

[root@CentOS ~]# htpasswd -m /etc/svn-users jerry
New password: 
Re-type new password: 
Adding password for user jerry
[root@CentOS ~]#

Crie o diretório-pai do Subversion para armazenar todo o trabalho (consulte /etc/httpd/conf.d/subversion.conf ).

[root@CentOS ~]# mkdir /var/www/svn
[root@CentOS ~]# cd /var/www/svn/

Configuração do Repositório

Crie um repositório de projeto denominado project_repo . O comando svnadmin criará um novo repositório e alguns outros diretórios dentro dele para armazenar os metadados.

[root@CentOS svn]# svnadmin create project_repo

[root@CentOS svn]# ls -l project_repo
total 24
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 conf
drwxr-sr-x. 6 root root 4096 Aug  4 22:30 db
-r--r--r--. 1 root root    2 Aug  4 22:30 format
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 hooks
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 locks
-rw-r--r--. 1 root root  229 Aug  4 22:30 README.txt

Vamos mudar a propriedade do usuário e do grupo do repositório.

[root@CentOS svn]# chown -R apache.apache project_repo/

Verifique se o SELinux está habilitado ou não usando a ferramenta de status SELinux.

[root@CentOS svn]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

Para nosso servidor, o SELinux está habilitado, então temos que mudar o contexto de segurança do SELinux.

[root@CentOS svn]# chcon -R -t httpd_sys_content_t /var/www/svn/project_repo/

Para permitir confirmações por HTTP, execute o seguinte comando.

[root@CentOS svn]# chcon -R -t httpd_sys_rw_content_t /var/www/svn/project_repo/

Reinicie o servidor Apache e terminaremos a configuração do servidor Apache.

[root@CentOS svn]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: apr_sockaddr_info_get() failed for CentOS
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@CentOS svn]# service httpd status
httpd (pid  1372) is running...
[root@CentOS svn]#

Configuramos o servidor Apache com sucesso, agora vamos configurar o repositório. Para fornecer acesso ao repositório apenas para usuários autênticos e para usar o arquivo de autorização padrão; acrescente as seguintes linhas ao arquivo project_repo / conf / svnserve.conf .

anon-access = none
authz-db = authz

Convencionalmente, todo projeto Subversion tem trunk, tags, e branches diretórios diretamente sob o diretório raiz do projeto.

O tronco é um diretório onde todo o desenvolvimento principal acontece e geralmente é verificado pelos desenvolvedores para trabalhar no projeto.

O diretório de tags é usado para armazenar instantâneos nomeados do projeto. Ao criar uma versão de produção, a equipe marcará o código que vai para a versão.

O diretório branches é usado quando você deseja seguir diferentes linhas de desenvolvimento.

Vamos criar a estrutura de diretório trunk, tags e branches no repositório do projeto.

[root@CentOS svn]# mkdir /tmp/svn-template
[root@CentOS svn]# mkdir /tmp/svn-template/trunk
[root@CentOS svn]# mkdir /tmp/svn-template/branches
[root@CentOS svn]# mkdir /tmp/svn-template/tags

Agora importe os diretórios de /tmp/svn-template para o repositório.

[root@CentOS svn]# svn import -m 'Create trunk, branches, tags directory structure' /tmp/svn-template/ 
Adding         /tmp/svn-template/trunk
Adding         /tmp/svn-template/branches
Adding         /tmp/svn-template/tags
Committed revision 1.
[root@CentOS svn]#

Isso está feito! Criamos com sucesso o repositório e permitimos o acesso aTom e Jerry. A partir de agora, eles podem realizar todas as operações com suporte para o repositório.