Projekt

Allgemein

Profil

Setup svn » Historie » Revision 3

Revision 2 (Jeremias Keihsler, 12.01.2017 14:17) → Revision 3/9 (Jeremias Keihsler, 12.01.2017 14:29)

h1. Install SVN-Server 

 h2. Requirements 

 To install svn you will need the following: 
 * a installed and supported operating system (e.g. CentOS 7.x) 
 * root-access 
 * a fast internet connection 

 h2. Preliminary note 

 most of this is taken from  
 * [[http://www.if-not-true-then-false.com/2010/install-svn-subversion-server-on-fedora-centos-red-hat-rhel/]] 
 * [[http://www.petefreitag.com/item/665.cfm]] 

 * setup rules-file [[http://www.startupcto.com/server-tech/subversion/locking-a-branch-in-svn]] 
 * @ssh+svn@ may be taken from [[http://www.startupcto.com/server-tech/subversion/setting-up-svn]] 
 This procedure is for a vanilla OS, if @Apache@ is already installed and configured you may have to rethink the configuration. 

 h2. Install 

 <pre><code class="bash"> 
 yum install mod_dav_svn subversion 
 </code></pre> 

 h2. Configuration 

 h3. /etc/http/conf.d/subversion.conf 

 modify the preinstalled @etc/http/conf.d/subversion.conf@ analogue to 
 <pre> 
 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 "Subversion repositories" 
    AuthUserFile /etc/svn-auth-users 
    AuthzSVNAccessFile    /etc/svn-authz-users 
    Require valid-user 
 </Location> 
 </pre> 

 h3. Add SVN users 

 * first-time usage 
 <pre><code class="bash"> 
 htpasswd -cm /etc/svn-auth-users testuser 
 </code></pre> 
 * follow up usage 
 <pre><code class="bash"> 
 htpasswd -m /etc/svn-auth-users testuser 
 </code></pre> 
 Note: Use exactly same file and path name as used on @subversion.conf@ file. This example use @/etc/svn-auth-users@ file. 

 h3. Create SVN repository 

 <pre><code class="bash"> 
 mkdir /var/www/svn 
 cd /var/www/svn 
 
 svnadmin create testrepo 
 chown -R apache:apache testrepo 
 
 chcon -R -t httpd_sys_content_t /var/www/svn/testrepo 
 </code></pre> 
 Following enables commits over http 
 <pre><code class="bash"> 
 chcon -R -t httpd_sys_rw_content_t /var/www/svn/testrepo 
 </code></pre> 

 h3. Configure SVN repository 

 To *disable anonymous access* and enable *access control* add following rows to @testrepo/conf/svnserve.conf@ 
 <pre> 
 ## Disable anonymous access ## 
 anon-access = none 
 
 ## Enable access control ## 
 authz-db = authz 
 </pre> 

 h3. Create trunk, branches and tags structure under testrepo 

 Create “template” directories with following command: 
 <pre><code class="bash"> 
 mkdir -p /tmp/svn-structure-template/{trunk,branches,tags} 
 </code></pre> 
 Then import template to project repository using @svn import@ command: 
 <pre><code class="bash"> 
 svn import -m 'Initial import' /tmp/svn-structure-template/ http://localhost/svn/testrepo/ 
 </code></pre> 

 h3. Setup User/Repo based access control 

 Create “template” directories with following command: 
 <pre><code class="bash"> 
 vim /etc/svn-authz-users 
 </code></pre> 
 Then import template to project repository using @svn import@ command: 
 <pre> 
 # Allow full access to all repos 
 [/] 
 * =  
 master = rw 

 [homepage:/] 
 * = 
 master = rw 
 external_chk = r 

 # Lock MyRepo Branch_A 
 # Note that you only need the MyRepo: prefix if you have more than one repo 
 [janus:/z_Deploy] 
 * = r 
 master = rw 

 [janus:/11002] 
 * = r 
 master = rw 
 developer = rw 

 [ATX_Neuenstein:/] 
 * =  
 master = rw 
 client = r 

 # Lock all tags in all repos; only allow 'master' to create new tags. 
 [/tags] 
 * = r 
 master = rw 

 </pre> 

 h2. Usage 

 open in your browser 
 <pre><code class="bash"> 
 http://localhost/svn/testrepo/ 
 </code></pre> 

 h2. SSL secured web-server 

 see also http://wiki.centos.org/HowTos/Https 

 h2. Backup/Restore SVN repositories 

 h3. Backup 

 [[dw_dr:SVN16| Backup/Restore SVN]] The first thing you need when moving from one server to another is a dump of your subversion repository. Hopefully you are already creating dump's with a backup script, but if not here's how you can create a subversion dump file: 

 <pre><code class="bash"> 
 svnadmin dump /path/to/repository > repo_name.svn_dump 
 </code></pre> 

 The dump file contains all the revisions you have ever made to your svn repository, so it will probably be quite large (it even includes files you may have deleted in a previous revision). 

 h3. Restore 

 Now, simply transfer the dump file on to your new subversion server, and create an empty repository: 

 <pre><code class="bash"> 
 svnadmin create /path/to/repository 
 </code></pre> 

 Next import your dump file: 

 <pre><code class="bash"> 
 svnadmin load /path/to/repository < repo_name.svn_dump 
 </code></pre> 

 You may want to force subversion to use the same UUID for the new repository as the old repository. To do this add @--force-uuid@ to your @svnadmin load@ command. In my case I wanted to do this. If you have already loaded your repository, there is a way to set the UUID at a later date, check the docs. 

 That's it, you now have a replica of your old repository on your new server.