Subversion

From SME Server
Revision as of 06:24, 9 August 2015 by Beast (talk | contribs) (→‎Usage)
Jump to navigation Jump to search


PythonIcon.png Skill level: Easy
The instructions on this page can be followed by a beginner.


Maintainer

Jonathan Martens

stephdl Stéphane de Labrusse AKA Stephdl

Version

Devel 10:
Contrib 10:
Contrib 9:
smeserver-subversion
The latest version of smeserver-subversion is available in the SME Contribs repository, click on the version number(s) for more information.


Description

This contrib provides subversion over http and https for SME Server, it won't provide other means of subversion like the svn protocol or the ssh+svn protocol. It will install a panel in the server-manager to administer your subversion repositories. Subversion a is version control system for all kind of files with a central storage on the SME server. Subversion is mostly used for smaller workgroups. If you have a lot of users please consider to use Git. Subversion is by many seen as more simple and easy to understand. If you need more information please read the SVN manual

Installation

This contrib can be found in the SME Contribs repository (available on SME Servers as of smeserver-yum-1.2.0-41). To install this contrib get shell access as root user and issue the following command:

yum install smeserver-subversion --enablerepo=smecontribs

After yum has finished make sure to issue the following commands:

signal-event post-upgrade
signal-event reboot

For SME 9

You have to enable the stephdl repository, see bugzilla:8998

yum install --enablerepo=stephdl --enablerepo=epel smeserver-subversion

After yum has finished make sure to issue the following commands:

signal-event post-upgrade
signal-event reboot

Updating the subversion 'core'

The smeserver-subversion contrib does not contain the subversion package itself, as this removes the need of releasing a new contrib every time a new subversion version is released.

This contrib is meant to tie it in to SME Server. The command in the installation section will install the latest subversion version yum can find in the enabled repositories. the SME Contribs repository should contain the latest release of subversion. You can install or update like this

yum update subversion --enablerepo=smecontribs

Removal

To remove this contribution issue the following command:

yum remove smeserver-subversion

After yum has finished make sure to issue the following commands:

signal-event post-upgrade
signal-event reboot

Usage

After installation you have to create a repository in the server-manager under the subversion menu by pressing the button "Add repository".

Next procedure is to create the recommended folder structure in your repository with this command in a terminal

svn mkdir https://server-name/repository-name/{branches,tags,trunk} -m "Recommended structure"

This will create 3 sub folders under your repository - branches, tags and trunk. These will be used for your development.

Trunk

The trunk contains the most current development code at all times. This is where you work up to your next major release of code.

Branches

There are different types of branches. With the branches directory you can create paths for you code to travel to more specific goals like an upcoming release. The branches directory contains copies of your trunk at various stages of development.

Release Branches - When the trunk reaches the stage that it’s ready to be released (or when you want to freeze the addition of new features) you create a release branch. This release branch is just a copy of your current trunk code.

Bug fix branches - Branches may also be used to address the more serious bugs found in the trunk or a release branch. The bugs are of such a magnitute that you can’t fix them by yourself in a single commit. So, in order to focus on the problem of fixing this bug you should create a new branch for this purpose. This allows development in the trunk or your release branch to continue, and you won’t disturb them with new bugs or tests that break the current code. Bug fix branches are named after the ID they are assigned in your bugtracking tool.

Experimental branches - Something that also happens a lot is the introduction of new technologies. This is fine, of course, but you don’t want to bet your entire project on it. Imagine that you want to change from PHP 5 to PHP 6 for your web application. How long would it take you to convert your entire project? Do you want your entire code base (trunk) to be useless until you have converted all of your code? Probably not!

Tags

Tags are, like branches, copies of your code. Tags, however, are not to be used for active development. They mark (tag) a certain state your code is in for exampel when you release your code.

  • To work with your repository you need to use a client like TortoiseSVN for Windows or RabbitVCS for Linux. ALso possible to use the command line with the svn command. You just import your code to https://server-name/repository-name/trunk

Additional information

  • Each SVN repository is stored on the server under /home/e-smith/files/repositories/{repository-name}
  • The URL for a repository is http://{server-name}/{repository-name} (or https://{server-name}/{repository-name}). Care must be taken with the naming of subversion repositories as they share the same web namespace as the i-bays
  • In the admin panel, be careful when setting permissions for reading and writing to a repository. When no selections are made in both the "read-only access" lists, or both the "full access" lists, they will default to 'Everyone'. To completely restrict access to specific groups and users, you must make a selection from both the "read-only access" and the "full access" lists, for either one or more groups, or one or more users.

Bugs

Please raise bugs under the SME-Contribs section in bugzilla and select the smeserver-subversion component or use this link .

Below is an overview of the current issues for this contrib:

IDProductVersionStatusSummary
2967SME Contribs7.1CONFIRMEDAbility to select which domains svn is available on & create subdomains