[[toc]]
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
Stable, mature codebase
Functional, usable user interface
+++ Nice-to-haves
Today checking out a Horde app within an existing Horde checkout works fine. This includes making single-commit changes across applications.
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
||~ SCM ||~ Full (Server) Repository Size ||~ Branch Checkout ||
|| CVS || 51MB || 7MB ||
|| SVN || 31MB || 16MB ||
|| git* || 18MB || 18MB ||
++ Resources
http://www.kernel.org/pub/software/scm/git/docs/gitcvs-migration.html
http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
http://www.kernel.org/pub/software/scm/git/docs/gittutorial-2.html
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
http://www.kernel.org/pub/software/scm/git/docs/glossary.html
http://www.kernel.org/pub/software/scm/git/docs/everyday.html
Back to the ((Projects|Project List))