Difference between revisions of "SVN server installation (Linux)"
Line 6: | Line 6: | ||
− | =SVN server= | + | =SVN server (Linux)= |
− | + | ==installation== | |
− | |||
− | |||
Required package | Required package | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 31: | Line 29: | ||
− | + | ==Server automatic startup== | |
− | + | ===Create SVN startup script=== | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
vim /etc/init.d/subversionServer | vim /etc/init.d/subversionServer | ||
Line 95: | Line 93: | ||
− | + | ===Update boot sequence=== | |
Register SVN server to server startup | Register SVN server to server startup | ||
Line 118: | Line 116: | ||
− | == | + | ==Create SVN repository== |
To do any advanced task, you've to use "svnadmin" | To do any advanced task, you've to use "svnadmin" | ||
Line 127: | Line 125: | ||
− | + | ===1. Create root folder=== | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 143: | Line 141: | ||
− | + | ===2. Adjust rights=== | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 157: | Line 155: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ===3. Create users=== | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 166: | Line 164: | ||
− | + | ===Repository access=== | |
You can use the repository with the following SVN URL: svn://server/''java'' | You can use the repository with the following SVN URL: svn://server/''java'' | ||
Line 172: | Line 170: | ||
− | =Web access= | + | =Web access (Linux)= |
==Required packages== | ==Required packages== | ||
Line 253: | Line 251: | ||
==Web access== | ==Web access== | ||
− | + | Now instead of “svn://” + dedicated SVN user you can use “https://myServer/dav_svn/” + LDAP user. | |
− | + | try http://myServer/svn | |
− | |||
− | = | + | =SVN server (Windows)= |
− | + | ||
+ | ==Installation== | ||
* Download Visual SVN server for windows: http://www.visualsvn.com/server/download/ | * Download Visual SVN server for windows: http://www.visualsvn.com/server/download/ | ||
* Install Visual SVN server. Choose your installation folder + repository directory | * Install Visual SVN server. Choose your installation folder + repository directory | ||
− | + | ||
+ | ==Users / groups configuration== | ||
* Open the '''Visual SVN server''' application. | * Open the '''Visual SVN server''' application. | ||
* Open properties | * Open properties | ||
Line 282: | Line 281: | ||
− | + | ==Create a new repository (1) – standalone use== | |
Right click on “repositories” -> create New Repository | Right click on “repositories” -> create New Repository | ||
[[File:SVN server windows 5.png|none|Windows SVN server 05]] | [[File:SVN server windows 5.png|none|Windows SVN server 05]] | ||
Line 292: | Line 291: | ||
− | + | ==Create a new repository (2) – mirror Google Code== | |
Google provides a free subversion service through its “Google Code” service. However, there’s no quality analysis. … So, in order to provide quality checks we will mirror the google code repository. | Google provides a free subversion service through its “Google Code” service. However, there’s no quality analysis. … So, in order to provide quality checks we will mirror the google code repository. | ||
Revision as of 21:32, 11 September 2014
SVN is used to managed file revisions, branches and application releases.
You have to install a SVN server, then a client on each remote computer.
SVN server (Linux)
installation
Required package
apt-get install subversion
Source folder You must indicate to subversion how it's going to work
mkdir /var/svn
mkdir /var/svn/myRepository
Set rights
chown -R www-data:www-data /var/svn/myRepository
chmod -R 777 /var/svn/myRepository
→ Use "www-data" user:group if you want to setup web access through HTTP(S) protocol later on.
Server automatic startup
Create SVN startup script
vim /etc/init.d/subversionServer
Put the following content
#!/bin/sh
### BEGIN INIT INFO
# Provides: svn
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: SVN server
### END INIT INFO
do_start () {
svnserve -d -r /var/svn --pid-file /var/run/svnserve.pid
}
do_stop () {
start-stop-daemon --stop --quiet --pidfile /var/run/svnserve.pid
}
case "$1" in
start)
do_start
;;
stop)
do_stop
exit $?
;;
restart)
do_stop
sleep 1s
do_start
;;
*)
echo "Usage: $0 start|stop|restart" >&2
exit 3
;;
esac
Set execution flags:
chmod 750 /etc/init.d/subversionServer
Create symlinks:
ln -s /etc/init.d/subversionServer /usr/bin/subversionServer
Update boot sequence
Register SVN server to server startup
cd /etc/init.d
update-rc.d subversionServer defaults
Start SVN server
/etc/init.d/subversionServer start
How to remove SVN from boot?
Just execute the following sequence
update-rc.d -f subversionServer remove
Create SVN repository
To do any advanced task, you've to use "svnadmin" To create repository you have to: 1. Create folder 2. Defines rights 3. Creates users
1. Create root folder
svnadmin create /var/svn/myRepo
Create repo structure
cd /var/svn/myRepo
mkdir trunk
mkdir tags
mkdir branches
chmod -R 755 */
2. Adjust rights
vim /var/svn/myRepo/conf/svnserve.conf
Adjust values:
anon-access = none → disable anonymous access
auth-access = write → allow read / write to all users
password-db = passwd → password required to log-in
realm = 'java' → Name of the current repo (without quotes!)
3. Create users
vim /var/svn/myRepo/conf/passwd
Restart your server to use the new repository.
Repository access
You can use the repository with the following SVN URL: svn://server/java
Web access (Linux)
Required packages
# Apache2 modules
apt-get install libapache2-mod-svn
apt-get install libapache2-mod-ldap-userdir
# Enable modules
a2emod dav_svn
a2enmod ldap authnz_ldap ldap_userdir
# Restart server
service apache2 restart
Configuration
You have 2 solutions to setup the SVN dav.
- Use the /etc/apache2/mods-enabled/dav.conf
- VirtualHost configuration
From a maintenance point of view it's better to use the VirtualHost configuration.
Add the following declaration:
<Location /svn>
<IfModule dav_svn_module>
# Enable DAV module
DAV svn
# SVN root
SVNParentPath /var/svn
SVNListParentPath On
# LDAP authentication
AuthType Basic
AuthName "SVN Repository"
AuthBasicProvider ldap
AuthLDAPURL "ldap://localhost:389/ou=people,dc=vehco,dc=com?uid"
Require valid-user
#Require ldap-group cn=vehco_staff
</IfModule>
</Location>
!! Note that is it recommended to AVOID "/svn" !!
Reload apache2 server
service apache2 restart
Firewall
You need to adjust your FW if you plan to serve SVN by HTTP.
IPT=`which iptables`
# Only serve SVN by HTTP to some servers
CODE_VEHCO_COM=192.168.1.45
PROXY_VEHCO_COM=192.168.1.44
$IPT -A INPUT -p tcp --dport 80 -s $CODE_VEHCO_COM -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -s $PROXY_VEHCO_COM -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -s 0.0.0.0/0 -j DROP # DROP all the rest !
Web access
Now instead of “svn://” + dedicated SVN user you can use “https://myServer/dav_svn/” + LDAP user.
SVN server (Windows)
Installation
- Download Visual SVN server for windows: http://www.visualsvn.com/server/download/
- Install Visual SVN server. Choose your installation folder + repository directory
Users / groups configuration
- Open the Visual SVN server application.
- Open properties
Action > Properties
- Click Repositories, adjust “Everyone” rights to Read Only
- Add a new user and add 'read / write' permissions to this new user
Create a new repository (1) – standalone use
Right click on “repositories” -> create New Repository
Enter the repository name and let the server create the default structure for you:
→ Note the SVN URL. You’ll need it later when you’re gonna setup your project, within the maven pom.
Create a new repository (2) – mirror Google Code
Google provides a free subversion service through its “Google Code” service. However, there’s no quality analysis. … So, in order to provide quality checks we will mirror the google code repository.
Therefore, we’ll be able to perform quality scans.
- Create a new repository, see previous chapter
- Right click on the repository -> All tasks -> Manage hooks
You have to edit the “pre-revision property change hook” and put the following command:
exit 0
This will check that the execution (synchronization) was successful.
SVN client
The SVN client version must match the server version for better performances and to avoid errors.
Windows
Tortoise SVN is the best one available. http://tortoisesvn.tigris.org/
!! During installation, don't forget to install the svn command line tools !!
Linux
Command line client
apt-get install subversion
Then you can use the svn command:
- svn co --username=yourUserName --password=yourpassword http://path-to-your-svn
- svn add file
- svn commit -m "my revision comment"
Graphical client
RabbitVCS is a good alternative to tortoise SVN: http://rabbitvcs.org/
apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus