From Wikipedia:
Apache Subversion (often abbreviated SVN, after the command name svn) is a software versioning and revision control system distributed as free software under the Apache License.
Developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System (CVS).
The free software community has used Subversion widely: for example in projects such as Apache Software Foundation, Free Pascal, FreeBSD, GCC, Mono and SourceForge. Google Code also provides Subversion hosting for their free software projects. CodePlex offers access to Subversion as well as to other types of clients.
The corporate world has also started to adopt Subversion. A 2007 report by Forrester Research recognized Subversion as the sole leader in the Standalone Software Configuration Management (SCM) category and as a strong performer in the Software Configuration and Change Management (SCCM) category.
1 – Install Subversion
yum install mod_dav_svn subversion
Sample Output:
================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mod_dav_svn x86_64 1.7.14-6.el7 base 101 k subversion x86_64 1.7.14-6.el7 base 1.0 M Installing for dependencies: apr x86_64 1.4.8-3.el7 base 103 k apr-util x86_64 1.5.2-6.el7 base 92 k httpd x86_64 2.4.6-18.el7.centos updates 2.7 M httpd-tools x86_64 2.4.6-18.el7.centos updates 77 k mailcap noarch 2.1.41-2.el7 base 31 k neon x86_64 0.30.0-3.el7 base 165 k pakchois x86_64 0.4-10.el7 base 14 k subversion-libs x86_64 1.7.14-6.el7 base 921 k Transaction Summary ================================================================================
2 – Add this config file to apache
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/unixmensvn AuthType Basic AuthName "Subversion repositories" AuthUserFile /etc/svn-auth-users Require valid-user </Location>
3 – Create SVN users
[root@unixmen-centos7 ~]# htpasswd -cm /etc/svn-auth-users testuser1 New password: Re-type new password: Adding password for user testuser1 [root@unixmen-centos7 ~]#
4 – Create and configure SVN repository
mkdir /var/www/unixmensvn cd /var/www/unixmensvn svnadmin create repo chown -R apache.apache repo # If you still have issues with SELinux Security please apply this: chcon -R -t httpd_sys_content_t /var/www/unixmensvn/repo chcon -R -t httpd_sys_rw_content_t /var/www/unixmensvn/repo
5 – You can open the http and https on the file with this way
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
6 – Enable and start the http services
systemctl enable httpd.service systemctl restart httpd.service
7 – Secure your repository with adding this to conf/svnserve.conf
anon-access = none auth-access = authz
8 – Make trunk, branches and tags structure under repo
mkdir -p /tmp/svn-structure-template/{trunk,branches,tags} svn import -m "Initial repository" /tmp/svn-structure-template file:///var/www/unixmensvn/repo/ Adding /tmp/svn-structure-template/branches Adding /tmp/svn-structure-template/tags Adding /tmp/svn-structure-template/trunk Committed revision 1.
Done!!