SVN Commands

Install subversion

sudo yum install subversion

Install apache

sudo yum install httpd


Install apache SVN module

sudo yum install mod_dav_svn


Install openssl module

sudo yum install openssl


Install apache SSL module

sudo yum install mod_ssl


Create Repo

sudo svnadmin create /home/repo/svn-repos/projectA


Pass Control To Apache

sudo chown -R apache.apache /home/repo/svn-repos/projectA


Change ServerName to 1xx.1xx.2xx.3x:80

sudo vi /etc/httpd/conf/httpd.conf

   ServerName 1xx.1xx.2xx.3x:80


Can Skip This, If Not Allow Http Protocol Access

sudo vi /etc/httpd/conf.d/subversion.conf


Restart Httpd Service

sudo /etc/init.d/httpd restart


Can Skip This, If Not Allow Https Protocol Access

sudo vi /etc/httpd/conf.d/ssl.conf


Create Valid User To Svn, 'c' Used For First Time Creation The File

sudo htpasswd -cm /etc/svn-auth-conf username


Delegate Access Right

sudo vi /etc/svn-acl-conf

  [groups]

  svngrp = john, bert, you

  [/]     #all repos

  @svngrp = rw


Restart Http Service

sudo /etc/init.d/httpd restart


Untar A Source Tree As Base Software

tar zxf projectA.tgz -C /home/shared/projectA


Import Source Tree To Repo

sudo svn import --no-ignore /home/shared/projectA file:////home/repo/svn-repos/trunk/projectA -m "Initial Import"


Create Branch/Tag Folder

svn mkdir http://1xx.1xx.2xx.3x/svn-repos/projectA/branches


Creating Branch/Tag

svn copy http://1xx.1xx.2xx.3x/svn-repos/projectA/trunk http://1xx.1xx.2xx.3x/svn-repos/ph1-F/branches/


Uncommit/Revert Svn Repo Changes

svn merge -r 67:65 source_dir/source_file


Revert Local Svn Working Directory Changes, Replaces By Svn Repo

svn revert source_dir/source_file


Create a repo

svnadmin create /home/repos/svn

or

svnadmin create --fs-type fsfs /home/repos/svn

(Berkeley DB back-end by default, unless --fs-type)

(Berkeley DB repository cannot work on filesystem such as NFS, AFS, or Windows SMB)


Add svn group

# groupadd subversion

# addgroup john subversion

# addgroup bert subversion

# addgroup you subversion

...

# chown -R www-data:subversion /var/svn-repos/*

# chmod -R 770 /var/svn-repos/* 

/home/repos/svn/conf/passwd

[users]

john_doe = john_doe_passwd

jane_doe = jane_doe_passwd

/home/repos/svn/conf/svnserve.conf

[general]

john_doe = write

jane_doe = write

passwordd-db = passwd


Run subversion server

svnserve -d


Import a project

mkdir tmpdir

cd tmpdir

mkdir projectA

cd projectA

mkdir trunk branches tags

mkdir projectB

cd projectB

mkdir trunk branches tags

$ svn import . file:///path/to/repos -m 'Initial repository layout'

Adding         projectA

Adding         projectA/trunk

Adding         projectA/branches

Adding         projectA/tags

Adding         projectB

Adding         projectB/trunk

Adding         projectB/branches

Adding         projectB/tags

mkdir -p /tmp/svn/myproject

cd /tmp/svn/myproject

mkdir branches tags trunk vendor

cd myproject

cp -Rp * /tmp/svn/myproject/trunk

cd /tmp/svn

svn import . svn://servername_or_IPADDRESS/home/repos/svn -m "Initial import of myproject"


Verify the previous import of a project

svn list --verbose file:///path/to/repos


In-place import of a project

svn mkdir file:///svn/sites/foo -m "Foo repo directory creation"

cd /www/test

svn co file:///svn/sites/foo .

svn add * 

svn ci -m "Initial import"


Checkout a project

svn checkout svn://servername_or_IPADDRESS/home/repos/svn/myproject/trunk


Commit changes

svn commit -m "Bug fix for wrong keycode"