SVN/En
SVN Repository
Contents
- 1 Description
- 2 Requirements
- 3 Creating the SVN repository
- 4 Moderation
- 5 How to administer (panel)
- 6 Usage
- 7 Tricks and Tips
- 8 Useful links
Description
Subversion was created to replace CVS You can find more informations about SVN [[1]]
Requirements
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
- Validate
creating tips
- Don't choose a too usual name
- Fill the description field to avoid problems with the moderation team ;)
Moderation
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
Configuration
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
Usage
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.
Basic Operations
Check out
So, you want to have a basic use of your SVN repository. First, perform a checkout of the repository
svn co svn+ssh://YOURUSER@svn.tuxfamily.org/svnroot/PROJECT/REPO_NAME
(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://sod@svn.tuxfamily.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.
First Import
If you have no files yet to put under subversion, you can simply create the layout :
cd /tmp mkdir monprojet cd monprojet && mkdir trunk && mkdir branches && mkdir tags svn import . svn+ssh://UTILISATEUR@svn.tuxfamily.org/svnroot/GROUPE/REPOSITORY -m "Initial import or anything you want."
The import will recursively copy the content of the repertory directly in the referential.
If you already have files for this project, you just have to do the same way, but do the import after you have copied your files in the trunk folder.
Once it's done, you'll have to perform a checkout of the referential.
svn co svn+ssh://USER@svn.tuxfamily.org/svnroot/GROUP/REPOSITORY afolder
afolder is the folder you want to work with. If ann 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
cd myfolder
And create a file named ##test##
touch test
To add it to the repository, just type
svn add test
If you want to upload all on the repository, type
svn ci
more serious: svn ci --message "commit message that will appear in the changelog."
Adding a folder is exactly the same:
svn add directory
then:
svn ci
Delete a file
To delete a file on the repository, just type:
svn rm mybogofile
and send your modifiactions to the server
svn ci
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
svn up
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:
svn co svn://svn.tuxfamily.org/svnroot/PROJECT/REPOSITORY
You can also update the repository each time the developpers update the code with
svn up
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
You can list the repositories using http://svn.tuxfamily.org URLs looks like: http://svn.tuxfamily.org/group/repository/ ( http://svn.tuxfamily.org/vhffs4/vhffs/ for example)
If you prefer svnweb, it is available at http://svnweb.tuxfamily.org.
Using CIA
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 you repository
It is possible to have regular feedbacks about your repository. You just have to use the RSS feed of the svnweb. For example, to have the RSS of the REPO repository in the group GROUP, you should use this URL : http://svnweb.tuxfamily.org/rss.php?repname=REPO+%28GROUP%29&path=%2F&rev=0&sc=0&isdir=1
Using a graphical interface
eSVN
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 ?
TortoiseSVN
Windows only. You can download Tortoise SVN from the TortoiseSVN website.
Please review the FAQ note on SSH for Windows-based SVN users and consult the TortoiseSVN FAQ on how to use TortoiseSVN with SSH.
Configuring Eclipse
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 :
svn+ssh://YOURUSER@svn.tuxfamily.org/svnroot/YOURGROUP/YOURREPOSITORY
Uploading your SSH public-key
Configuring SSH under GNU/Linux
First of all, you have to generate your ssh key by typing :
$ ssh-keygen -t rsa
You will have to enter a "passphrase". First, you have to create a file named "ssh_keys" that will contain the generated public key :
$ cat ~/.ssh/id_rsa.pub >> ~/ssh_keys $ chmod 700 ~/ssh_keys
Now, send it on the distant server (TuxFamily of course !) using a ftp/ssh/whatever client. Put the ssh_keys file in your home directory (/) Make sure your ssh_keys file is in mode 700
Usage
Now, you just have to kill all ssh-agent processes running on your computer (to be sure)
$killall ssh-agent
Then, type those commands to hook-up SVN and SSH
$ ssh-agent $SHELL $ ssh-add ~/.ssh/id_rsa
Now you can type your SVN commands (in the same SHELL of course!)
You can add the following lines to your .bashrc if you don't want to do this by hand :
if [ -f .ssh-agent ]; then .ssh-agent else killall ssh-agent ssh-agent > .ssh-agent ssh-add ~/.ssh/id_rsa fi
Note : you can use KeyChain http://www.gentoo.org/proj/en/keychain to keep your passphrase in memory
IMPORTANT: write down your passphrase, you will have to use it each time you login on your computer
Using SSH under proprietary MS Windows with TortoiseSVN
Commencer par recuperer les logiciels "Putty", "Plink", "Pageant" and "Puttygen" sur le site http://www.chiark.greenend.org.uk/~sgtatham/putty/
Lancer Puttygen, cliquez sur generer, puis bouger votre souris dans le carre vide(pendant 5 à 6 sec). Quoi de plus aleatoire?? Entrer la key Passphrase. Cela permet de proteger la cle. Enregistrer votre cle privé grace au bouton "save Private Key". Mettez ca en lieu sur (pour ne pas la perdre et que personne ne la recopie). Copiez ensuite la cle publique situé en haut de la fenetre. Collez la dans un fichier que vous nommerez "ssh_keys". Grace à un client FTP copiez le fichier "ssh_keys" à la racine du ftp de votre compte (acces par ftp.tuxfamily.org, login: celui de votre compte, mdp: celui de votre compte). Mettez l'acces pour que seul vous puissiez y acceder (en lecture, ecriture, execution)(chmod 700).
lancer Putty et configurer le comme suit:
Session->HostName: svn.tuxfamily.org
Session->Protocol: SSH
Session->Saved Sessions: Ce que vous voulez(par exemple tuxfamily)
SSH->Prefered SSH Protocol version: 2
SSH->Auth->Private Key file for auth: entrer l'emplacement et le nom de votre fichier ou est stocke votre cle privé.
Dans le menu Session, cliquer sur "Save" afin d'enregistrer la configuration.
Cliquez sur Open. Si une fenetre apparait puis se ferme c'est bon. Sinon c'est qu'il y a un probleme.
Configuring TortoiseSVN
Pour mettre des fichiers sur le serveur SVN, créer votre arborescence avec vos fichiers sur votre PC puis cliquer droit sur le dossier contenant votre arborescence puis cliquer sur Exporter (si TortoiseSVN est en francais sinon CheckOut) Entrer l'adresse : svn+ssh://login_tuxfamily@NomQueVousAvezChoisiDansPutty(SavedSessions)/svnroot/NomDuGroupe/NomDuDepotSVN . Bien sûr, remplacer les champs par ceux correspondant. Votre arborescence devrait être sur votre serveur. Si vous voulez récuperer des fichiers du serveur, cliquer sur Extraire (à la place de exporter) dans un répertoire vide.
Par la suite, pour mettre des fichiers sur votre serveur, cliquer sur Livrer (ou Commit). Pour mettre à jour la version sur votre PC, utiliser la fonction Mettre à jour (ou Update) du menu Tortoise.
Using Pageant to remember the passphrase of your SSH key
Lancez Pageant, récupéré préalablement comme indiqué ci-dessus. Celui-ci se charge, et une icône est rajoutée dans la barre des tâches. Double-cliquez dessus pour ouvrir la fenetre principale de Pageant. Cliquez sur le bouton "Add Key" et sélectionnez le fichier de la clef privé ("votre_fichier.ppk"). Pageant vous demande alors la passphrase de la clef. Une fois la passphrase entrée, vous pouvez effectuer vos connections sans avoir à retaper à chaque fois la passphrase.
Note importante : Cette opération est à refaire après chaque redémarrage de Pageant, si vous cliquez sur Exit, par exemple, dans le menu contextuel de l'icone de la barre des tâches, ou si vous redémarrez votre machine. Vous pouvez automatiser cette procédure au démarrage de votre machine en créant un raccourci dans votre dossier démarrage, en mettant cette ligne de commande :
"E:\Program Files\PuTTY\pageant.exe" "X:\mon_chemin\ma_clef.ppk"
Vous n'aurez ainsi qu'à taper la passphrase au démarrage de Windows dans la petite boite de dialogue qui vous attendra bien gentillement!
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 do not choose a stupid generic name such as 'svn' or 'subversion'. If you don't have any idea of a great name , simply use your project's name :)
Useful links
- 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.cs.put.poznan.pl/csobaniec/Papers/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)