6.0.0-git
2024-04-30

Diff for Project/FutureSCM between 18 and 19

[[toc]]



+ Options for replacing CVS for Horde Development



Ideas on setting up a Horde Git repository++ Introduction to distributed version control systems

* http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/

* http://www.infoq.com/articles/dvcs-guide



++ 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 Whups for ticket updates from commit messages

* Stable, mature codebase

* Functional, usable user interface



+++ 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)

* http://bazaar-vcs.org/



++++ Well-known users

* Canonical/Ubuntu



----

+++ Git



http://git.or.cz/

http://www.opensolaris.org/os/community/tools/scm/git-report-final.txt



++++ Setup



<code>

#!/usr/bin/env sh



cd /var/www/git/horde/

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



FILES="agora

ansel

chora

<SNIP>

whups

wicked"



for FILE in $FILES

do

    echo $FILE": "

    git-cvsimport -C$FILE $FILE

done



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

repository. Now you can do:



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

* http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html





++++ Disk space



<code>

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

</code>



++++ Advantages

* Distributed nature allows offline commits and easy branching



++++ Disadvantages

* Does not preserve history across file or directory renames



++++ Well-known users

* Linux Kernel



----

+++ Mercurial




Another
----

+++ Mercurial



Another alternative:



* http://www.selenic.com/mercurial/wiki/

* http://www.linux.com/feature/121157

* http://www.opensolaris.org/os/community/tools/scm/dcm_evaluation_mercurial/



++++ Advantages

* Distributed nature allows offline commits and easy branching



++++ Disadvantages

* Toolset possibly less mature than other products



++++ Well-known users

* !OpenSolaris



----

+++ 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.



++++ Well-known users

* Asterisk

* KDE



----



++ Resource Utilization Comparison



+++ Ingo



||~ SCM ||~ Full (Server) Repository Size ||~ Branch Checkout ||

|| CVS || 51MB || 7MB ||

|| SVN || 31MB || 16MB ||

|| git* || 18MB || 18MB ||



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



++ Resources



* http://git.or.cz/gitwiki/GitSvnComparsion

* http://git.or.cz/course/svn.html

* 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

* http://git.koch.ro/



----

Back to the ((Projects|Project List))