CentOS 8
Sponsored Link

Subversion : Remote Access to Repositories2020/03/27

 
Access to Repositories from remote Hosts.
[1] Start [svnserve] service on a Host that Subversion repository exists.
[root@dlp ~]#
vi /etc/sysconfig/svnserve
# specify the top directory which SVN repositories exist

# default is like follows but possible to change for your requirements

# Specify the repository location in -r parameter:
OPTIONS="-r /var/svn"
[root@dlp ~]#
systemctl enable --now svnserve

[2] If Firewalld is running, allow SVN service. SVN uses [3690/TCP].
[root@dlp ~]#
firewall-cmd --add-service=svn --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
[3] If SELinux is enabled, change policy.
On this example, SVN top directory is [/var/svn] but if you set another Path except [/var], you need to modify follows for your requirements.
[root@dlp ~]#
vi svn-server.te
# create new

module svn-server 1.0;

require {
        type svnserve_t;
        type var_t;
        class file { getattr open read };
        class capability { chown dac_override fsetid };
}

#============= svnserve_t ==============
allow svnserve_t self:capability { chown dac_override fsetid };
allow svnserve_t var_t:file { getattr open read };

[root@dlp ~]#
checkmodule -m -M -o svn-server.mod svn-server.te

checkmodule: loading policy configuration from svn-server.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 19) to svn-server.mod
[root@dlp ~]#
semodule_package --outfile svn-server.pp --module svn-server.mod

[root@dlp ~]#
semodule -i svn-server.pp

[4] Access to existing Subversion repository from another remote Host.
For example, Access to existing [/var/svn/repos/project] repository.
By the way, default access permission is read only, so it's impossible to execute [commit] or others like changing operation. For chaging operation from remote Host, set acess permission like the link.
# specify relative path name for SVN URI

# on this example

# SVN Top directory : [/var/svn]

# SVN repository directory : [/var/svn/repos/project]

# relative path : [repos/project]

# SVN URI : [svn://dlp.srv.world/repos/project]

[redhat@node01 ~]$
svn list svn://dlp.srv.world/repos/project

branches/
tags/
trunk/

[redhat@node01 ~]$
mkdir ./work

[redhat@node01 ~]$
svn checkout svn://dlp.srv.world/repos/project ./work

A    work/branches
A    work/tags
A    work/trunk
A    work/trunk/index.html
A    work/trunk/testfile.txt
A    work/trunk/testscript.py
A    work/trunk/testtool.sh
Checked out revision 4.

[redhat@node01 ~]$
ll work

total 0
drwxrwxr-x. 2 redhat redhat  6 Mar 23 22:37 branches
drwxrwxr-x. 2 redhat redhat  6 Mar 23 22:37 tags
drwxrwxr-x. 2 redhat redhat 84 Mar 23 22:37 trunk
[5] It's also possible to access via SSH without running [svnserve] service on Subversion Host.
[redhat@node01 ~]$
svn ls svn+ssh://cent@dlp.srv.world/var/svn/repos/project

cent@dlp.srv.world's password:
branches/
tags/
trunk/

[redhat@node01 ~]$
svn co svn+ssh://cent@dlp.srv.world/var/svn/repos/project ./work2

cent@dlp.srv.world's password:
A    work2/branches
A    work2/tags
A    work2/trunk
A    work2/trunk/index.html
A    work2/trunk/testfile.txt
A    work2/trunk/testscript.py
A    work2/trunk/testtool.sh
Checked out revision 4.
Matched Content