- 1 Description
- 2 Requirements
- 3 Creating the SVN repository
- 4 Moderation
- 5 How to administer (panel)
- 6 Usage
- 6.1 Basic Operations
- 6.2 Using Subversion in anonymous mode
- 6.3 Using the web interface
- 6.4 Using CIA
- 6.5 How to keep in touch with your repository
- 6.6 Using a graphical interface
- 6.7 Using SSH
- 6.8 Collaborative developements, writing permissions
- 7 Tricks and Tips
- 8 Useful links
In addition, you might also want to consider GIT.
Creating the SVN repository
- Go on the control panel
- Select the project where you want to add a SVN repository
- Choose the name of your repository
- Don't choose a too generic name
- Fill the description field to avoid problems with the moderation team ;)
Your repository will be subject to moderation, see here
How to administer (panel)
On the panel you can choose if you want the repository to be public. By accepting it, you allow a read-only anonymous login on the repository and you allow viewing it from the svnweb.
How to manage group rights
This object can be shared with your group using the ACL
How to delete
- Log into the panel
- click on the group corresponding to your project
- click on your SVN repository
- click on delete
So, you've chosen to be hosted by TuxFamily, that's good. You chose a subversion repository, that's great ! We're going to teach you how to use it.
Note: because TuxFamily-hosted SVN repositories require SSH access, please review the note on SSH Access first.
So, you want to have a basic use of your SVN repository. First, perform a checkout of the repository
(Of course, replace YOURUSER by your user name on the panel, PROJECT by the project owning the repository names REPO_NAME)
Warning, your password may be asked several times. This is not a bug, it is caused by SVN which uses several connections, so you have to enter several times your password, or you can use a SSH key (see below)
To test your access to the SVN referential, you can try something like this :
[soda@evira:/tmp/subversion] svn co svn+ssh://firstname.lastname@example.org/svnroot/vhffs4/vhffs folder Révision 0 extraite. [soda@evira:/tmp/subversion] $
Yeah, it's allright ! The folder ##folder## has been created. Of course, it's empty, because your referential doesn't include any file.
Creating the base layout
Even though it's not an obligation, you should arrange your referential like this :
SVNROOT | |_ branches |_ tags |_ trunk
This will help you during the evolution of your project : the folder trunk will always include the last development version, tags will only be here to contain version notes (you should create a tag for each release, it will be easier for the users to know which code is associated to a version) and branches will allow you to add features which are too unstable to be present in the trunk.
If you have no files yet to put under subversion, you can simply create the layout :
cd /tmp mkdir myproject cd myproject && mkdir trunk && mkdir branches && mkdir tags svn import . svn+ssh://USERNAME@svn.tuxfamily.org/svnroot/GROUP/REPOSITORY -m "Initial import description."
The import will recursively copy the content of the myproject folder directly in the repository.
If you already have files for this project, you just have to do the same thing, but after you have copied your files into the trunk folder.
Once it's done, you'll have to perform a checkout of the repository.
svn co svn+ssh://USER@svn.tuxfamily.org/svnroot/GROUP/REPOSITORY afolder
afolder is the folder you want to work with. If all the files are present, you can delete the directory from which you made the import.
Add/delete files, update of the repository
Add a file
Let's enter our folder
And create a file named ##test##
To add it to the repository, just type
svn add test
If you want to upload all on the repository, type
more serious: svn ci --message "commit message that will appear in the changelog."
Adding a folder is exactly the same:
svn add directory
Delete a file
To delete a file on the repository, just type:
svn rm mybogofile
and send your modifiactions to the server
Update the repository
If several people work on the repository, it can be helpful to update your SVN repository. to do this, you just have to type this command at the repository root
Using Subversion in anonymous mode
It is possible to use Subversion without logging in . However, you won't be allowed to write on the repository (adding, editing or removing files). To perform a checkout, type:
You can also update the repository each time the developpers update the code with
Warning, anonymous mode is available only if your repository is set in public mode (default). Of course, you won't be able to commit in annonymous mode.
Using the web interface
If you prefer WebSVN, it is available at http://websvn.tuxfamily.org.
CIA is a commits system, visit the website for more informaton. to enable support of CIA on your TuxFamily repository, create a user account on their website. Then, create a project, name it as you want, in the configuration part you should see a "repository" part, click on it. Then, you have to check the box "Connect to a public Subversion repository" and to fill the rest of the form :
Repository URL: svn://svn.tuxfamily.org/svnroot/your_group/your_repository
Check that the "polling" box is checked. Please do not change the 15 minutes delay to keep the number of queries minimal.
How to keep in touch with your repository
It is possible to have regular feedback from your repository. You just have to use WebSVN's RSS feed. For example, to have the RSS feed for the REPO repository in the group GROUP, you would use the following URL :
Using a graphical interface
Some may prefer to work graphically, you have the choice under GNU/Linux : NautilusSvn for Nautilus, SubClipse for eclipse, eSVN, KdeSvn [screenshots] for konqueror, rapidsvn. Use your preferred packet manager (urpmi, yum, apt-get, emerge...) to install it !
If you are not command-line tools compliant, you can use a graphical tool such as eSVN or the [Eclipse] suite.
Maybe one day, there will be a tortoise SVN for GNU/Linux ?
Windows only. You can download Tortoise SVN from the TortoiseSVN website.
To start your SVN repository, create a directory on your PC for the project files, then right-click on that folder and select TortoiseSVN->Export... The URL you specify should be of the form:
Be sure to replace the italicized fields with appropriate values.
After that, right-click on a file or folder and select the TortoiseSVN menu. To place files on your server, then select 'Commit' from the TortoiseSVN menu. To update the files on your PC, select 'Update' from the TortoiseSVN menu.
Now, Eclipse has native SVN support so you don't need to download the Subversion plugin anymore. When Eclipse asks for a SVN repository, provide the following line :
It is possible to upload your SSH public key on your panel. That way, you won't have to enter your password for every operation made on the Subversion server. Then, all you have to do is to launch your ssh session - or configure Putty if you're using Windows, and you'll just have to enter all the commands in the same shell.
To figure out how to precisely do it, read this page
Collaborative developements, writing permissions
All users that are in your group will be able to commit on the SVN. If you want to work with your friend on your code (and you should do so :P ), they will have to register on TuxFamily and you will have to add them in your group through the panel.
If one of your co-workers report the following error :
Transmission des données .svn: Échec de la propagation (commit), détails : svn: Can't create directory '/svnroot/votreprojet/votrerepository/db/transactions/7-1.txn': Permission denied
make sure that he is in your group.
Tricks and Tips
- You should only commit things that compile correctly to make sure that the Trunk can be tested at any time by your users
- You have to choose the files you want to keep under the revision tracking system. It is not necessary to commit the temporary files of your text editor or compiled code. You can use the svn:ignore function as said here : http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.advanced.props
- Please don't choose a too generic name such as 'svn' or 'subversion'. If you can't think of a descriptive name for your repository, then simply use your project's name :)
- http://www.pushok.com/soft_svn_vscvs.php (Why Subversion instead of CVS?)
- http://www.abbeyworkshop.com/howto/misc/svn01/ (Getting Started with Subversion)
- http://www.fylrr.com/archives.php?doc=svn-refcard.pdf (Quick Reference Card)
- http://svnbook.red-bean.com (Home of the "Version Control with Subversion" book)
- http://subversion.tigris.org (Subversion's Home)