6.0.0-beta13
4/14/26

[[toc]]

  • Options for replacing CVS for Horde Development

Ideas on setting up a Horde Git repository

++ Description

This project is to determine what the next generation of the Horde will use to store and organize source code.

Some initial work has been done with Git and SVN conversions of the current CVS repository.

++ Requirements

+++ Must-haves

  • Offline review of local changes

  • Ability to hook into Wicked for ticket updates from commit messages

+++ Nice-to-haves

  • Submodule support

Today checking out a Horde app within an existing Horde checkout works fine. This includes making single-commit changes across applications.

  • Browseable by Chora

Naturally no matter what we choose Chora support will either be added or will improve. However if it is already supported by Chora all the better.

++ The Contenders

In alphabetical order...

+++ Bazaar

Bazaar from canonical (i.e. the ubuntu company)

+++ Git

++++ Setup

#!/usr/bin/env sh

cd /var/www/git/horde/

export CVSROOT=":pserver:cvsread@anoncvs.horde.org:/repository"

FILES="agora

ansel

chora

whups

wicked"

for FILE in $FILES

do

echo $FILE": "

git-cvsimport -C$FILE $FILE

done

++++ Submodules

I added a git submodule for every horde module inside the horde/horde

repository. Now you can do:

git clone git://git.koch.ro/git/horde/horde

cd horde

git submodule init

foreach modules as MODULE // Only those you want to use

git submodule update $MODULE // checks out the module

Now there are some more things[1] to think about when actually developing, but

that's one way it could be done.

[1] http://git.or.cz/gitwiki/GitSubmoduleTutorial

++++ Disk space

ls -C -w60

agora goops jonah nag swoosh

ansel groupware juno nic trean

chora hermes klutz occam turba

CVSROOT horde kronolith passwd ulaform

dimp hordedoc luxor pearweb update.sh

forwards hordeweb merk presentations vacation

framework imp midas sam vilma

genie incubator mimp scry volos

gitgc.sh ingo mnemo sesha whups

gollem jeta mottle skeleton wicked

/var/www/git/horde$ du -hs

928M

+++ Mercurial

Another alternative:

+++ Subversion

Chuck Hagenbuch has done some work on writing svn post-commit hooks. These likely can be reused for other SCM systems as well.

Ben Klang has dome some test conversions of the CVS repository to SVN. The repository size is indeed much larger. In addition submodule support (as we use it today) has not been proven to the satisfaction of the developers.

++ Resource Utilization Comparison

+++ Ingo

CVS repo: 51MB

CVS checkout (HEAD only): 7MB

SVN repo: 31MB

SVN checkout (all): 322MB

SVN checkout (trunk only): 16MB

git repo: 18MB

Note that for Git, repo size and checkout size are the same.

++ Resources


Back to the ((Projects|Project List))