[geeklog-devel] Upgrade CVS to a distributed repository

Randy Kolenko Randy.Kolenko at nextide.ca
Tue Apr 15 08:06:45 EDT 2008

Hmm.  Just thinking out loud here:  By switching to any other SCM,
aren't you just trading one set of politics for another?
Git would surely distribute the ability to code across many people -
however the maintainer of the official code base will still pull from
only those who he/she trusts.  
People *COULD* pull from a Groklaw Git node, but that would not be an
official codebase for Geeklog.
There would be cries of "FOUL!" when the maintainers don't pull patches
from some good soldier's Git repository -- same thing already happens
today with Geeklog + CVS (The cries of "But I posted patch XYZ and it
didn't make it in the final release").

However CVS is just plain terrible for merging of code.  So even
"upgrading" to SVN would be better.

> -----Original Message-----
> From: Nick Andrew [mailto:nick at nick-andrew.net] 
> Sent: Monday, April 14, 2008 10:24 PM
> To: Geeklog Developers List
> Subject: [geeklog-devel] Upgrade CVS to a distributed repository
> I'd like to propose that geeklog moves from the current CVS 
> system into a modern, distributed repository like
> Mercurial: http://www.selenic.com/mercurial/wiki/
> or Git: http://git.or.cz/
> This suggestion comes from a thread on Groklaw where Ted 
> Powell suggests making an improvement to Groklaw's website 
> and would happily "send code" but he cannot because Groklaw's 
> installation of geeklog is possibly heavily modified; he has 
> no way to know if his change against geeklog's published 
> source code is likely to work against Groklaw.
> Thread: 
> http://www.groklaw.net/comment.php?mode=display&sid=2008041221
> 5022427&title=PLEASE%20use%20Preview&type=article&order=&hidea
> nonymous=0&pid=689006#c689030
> There are probably a large number of people who would 
> contribute to the Groklaw site because they support Groklaw, 
> but who cannot because the source code is not published.
> This problem has been completely solved in the last few 
> years. The solution is to use a distributed SCM which allows 
> cross-merging of changes. There are several capable systems 
> existing, including arch, bzr, darcs, git, mercurial, 
> monotone, and so on. I'd like to propose specifically either 
> Git or Mercurial because I believe these are the two most 
> popular, functional and stable systems.
> Wikipedia has a huge comparison table:
>   http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
> Git is the repository originally written for the Linux 
> kernel; I see it as a bit more "technical" whereas Mercurial 
> is a bit more user friendly. Both systems are fast and scale 
> well with large numbers of managed files and large numbers of 
> developers. There are web interfaces and development support 
> tools; it's possible to convert a repository between various 
> formats (although I doubt either of these systems are going 
> to go away any time soon) and even interchange commits between them.
> I'll show how this process can work for geeklog. I'll use 
> Mercurial as my example because I find it a bit more user 
> friendly than git.
> First, geeklog would convert the existing CVS repository to 
> Mercurial (also known as Hg for short). Publish the master Hg 
> repository online, such as:  http://linuxtv.org/hg/v4l-dvb
> A developer or user would obtain a local copy of the 
> repository by cloning it:
>     hg clone http://linuxtv.org/hg/v4l-dvb
> The developer can work on their local copy, committing as 
> they go (commit is a purely local operation) and when they 
> want to submit code back to the project they can email a 
> patch to the master developer, or if they are a master 
> developer themselves they can push changes (using "hg push") 
> to the master repository. Alternately any developer can pull 
> ("hg pull") changes from any other repository.
> These changes don't interfere with local changes because Hg 
> automatically makes new branches based on the latest common 
> revision. Branches are closed by merging two parent revisions 
> together (Hg implements a three-way merge operation). This is 
> the usual way that inputs from multiple developers are 
> combined into a master repository.
> Meanwhile Groklaw will clone the master repository, make 
> local changes (and commit them locally) and sometimes pull 
> from the master repository to upgrade (e.g. to the next 
> point-release tag). Groklaw would also publish its repository.
> Some Groklaw users would clone Groklaw's repository and make 
> commits to add functionality to Groklaw. These commits can be 
> sent (emailed or
> pushed) to Groklaw, and from there on to Geeklog to improve 
> the master code base, or they can be sent directly to Geeklog.
> I believe that moving to a modern distributed SCM can 
> increase the rate of development by enabling more developers 
> to contribute and keeping the online repositories active with 
> new changes.
> Just as an experiment, I have converted the geeklog 2.x CVS 
> tree to git and published it:
> 	http://github.com/nickandrew/geeklog-2-x-sample/commits/master
> As I'm not familiar with the geeklog codebase I can't check 
> the integrity of the conversion, except that I did a 'diff' 
> between the latest checked-out CVS and the resulting git 
> repository and the files were all the same, with one minor 
> difference. Git and Mercurial do not manage empty 
> directories, and geeklog has a handful of them.
> In short I think that it will be a benefit to geeklog to 
> convert; the effort will be repaid quickly with increased 
> productivity and involvement.
> Nick.
> -- 
> PGP Key ID = 0x418487E7                      
> http://www.nick-andrew.net/
> PGP Key fingerprint = B3ED 6894 8E49 1770 C24A  67E3 6266 
> 6EB9 4184 87E7 _______________________________________________
> geeklog-devel mailing list
> geeklog-devel at lists.geeklog.net 
> http://eight.pairlist.net/mailman/listinfo/geeklog-devel

More information about the geeklog-devel mailing list