Community wiki

Community wiki
subversion - our new version control system

To checkout eGroupWare from our subversion repository you need a subversion client, eg. the svn comand line client, used in the following examples.
A nice online book / reference about subversion in general is Version Control with Subversion.
You can also browse the subversion repository: 1.8 release branch or trunk / development version.

Checking out a (readonly) copy of egroupware

To get all default applications of the stable branch (using eg. 1.8 instead of branch in the examples below), just do the following in your docroot:
cd /var/www/html (or whatever your docroot is)
svn checkout .
Please note: Mind the dot after default! The checkout will create an egroupware subdirectory in your current directory, plus an .svn subdir, which can be safely deleted. If you already have an egroupware subdir, you need to checkout in a different location and then move the egroupware dir to the new name and location. Also, if you have a checkout of a previous branch and want to upgrade, you have to rename your current branches/egroupware directory to something different (i. e. branches/1.2 in case you want to checkout 1.6). Without this, you won't be able to checkout your new branch correctly.

Further (contrib) applications can be checked out. For instance, checkout the tts app with:
cd /var/www/html/egroupware (or wherever you installed eGW)
svn checkout

For the development version you have to use:
cd /var/www/html (or whatever your docroot is)
svn checkout .

and for extra applications (eg. jinn or workflow) use:
cd /var/www/html/egroupware (or wherever you installed eGW)
svn checkout

All these checkouts can be updated (maintaining the branch!) via:
cd /var/www/html/egroupware (or wherever you installed eGW)
svn update . * (you need the . to get new files in the root and the * to update the apps!)

svn-helper utility: switch branches, merge in all modules, ...

From 1.4 on, eGroupWare has a tiny utility (in eGW's install dir) to simplify tasks with our nested svn structure:
Usage: ./svn-helper.php
Changes into the directory of each module and executes svn with the given arguments. \$module get's replaced with the module name.

  • to merge all changes from trunk between revision 123 and 456 into all modules in the workingcopy:
./svn-helper.php merge -r 123:456\$module
  • to switch a workingcopy to the 1.8 branch:
./svn-helper.php switch\$module
  • to switch an anonymous workingcopy to a developers one:
./svn-helper.php switch --relocate svn+ssh://

Checking out a (writable) developers copy

This is only possible for eGroupWare developers and it requires your public ssh version 2 key located on the server running the repository. If you are a eGroupWare developer you can mail your key to RalfBecker AT egroupware DOT org to have it installed. Please note: you can NOT commit to a checkout done with a URL, since commits require ssh access with a public ssh version 2 key. You'll have to check out from the start.

To check out the development branch just do the following
cd /var/www/html (or whatever your docroot is)
svn checkout svn+ssh:// .

For the a stable branch use:
cd /var/www/html (or whatever your docroot is)
svn checkout svn+ssh:// .

Changing the aliases

To be able to change the aliases, you need to do the following steps (replace 'trunk' with 'brances/1.4' for the stable release):
svn co --ignore-externals svn+ssh://
svn propedit svn:externals aliases/default
svn propedit svn:externals aliases/default-ssh
svn commit -m 'added app ... to the default alias' aliases
Please make sure there's some kind of consensus, before adding your own application to the default alias. You can allways add it to the all alias.

Creating the svn repository from the cvs repository

1. rsync the cvs repository from

rsync -av --delete rsync:// .

2. moving some old and never released apps into old subdir

mv anthill/ eldaptir/ javassh/ packages/ property/ rbs/ timetrack/ old

3. removing empty core_modules dir

rmdir core_modules

4. removing .svn directories someone commited into our cvs repository

find . -name .svn -exec rm -rf {} \;

5. removing non-ascii filenames in the Attic of addressbook/inc/{import|export}

rm -f addressbook/inc/import/Attic/*Outlook* addressbook/inc/export/Attic/*Outlook*

6. moving the old stuff in a separate repository

mv old ..

7. converting the repository with cvs2svn (forcing some symbols uses as tags AND branches to be branches)

cd /tmp; cvs2svn --force-branch=start --force-branch=Version-0_9_10-branch --force-branch=Version-0_9_12-final --force-branch=inital -s /svnroot/egroupware /cvsroot/egroupware

8. converting the "old" repository

cd /tmp; cvs2svn --force-branch=start --force-branch=Version-0_9_10-branch --force-branch=Version-0_9_12-final --force-branch=inital -s /svnroot/old /cvsroot/old

You are here