[os-infrastructure] Other source code control systems - WAS: Model discussion boiled dry(er)

Chris Clark Chris.Clark at ingres.com
Thu Jun 26 14:33:14 PDT 2008


On 6/26/2008 4:17 AM, Jay Hankinson wrote:
> Both mercurial (http://www.selenic.com/mercurial/wiki/) and bazzar 
> (http://bazaar-vcs.org/) are excellent open source scm systems.  
> Mercurial is used by rPath Linux and JasperSoft and bazaar has 
> recently been adopted by MySQL for managing all they're code. Their 
> tool requirements will be at least as demanding as ours and they're 
> communities are far larger.
> I would encourage you to take a look at what these products offer 
> interms of feature and methods of working to give you an idea how how 
> far behind piccolo really is. (Automatic gatekeeper support for one)
> At the moment the only outstanding issue as far as missing features 
> are concerned is the label functionality that. I for one think that we 
> should consider reviewing some of our processes before getting too 
> hung up on single pieces of piccolo functionality. Even in the event 
> we decide we can't live with some feature (p label for instance) both 
> mercurial and bazzar are python based and easily extensible.
> I am playing with both of these tools at the moment and hope to share 
> my findings (and hopefully solutions) soon.

I'd be interested in the findings on the distributed systems, 
distributed systems have a good merging implementation and Ingres needs 
good cross integration support! From my brief contact with both hg and bzr:

* they both suck big time at handling different newlines, the 3rd party 
extensions for dealing with this doesn't really work well.
* sparse checkouts are not yet available, if you do a check out you get 
ALL the history
* revision numbers in hg are cryptic, how do you know if you have an 
older version of a file just from the rev numbers, see 
http://selenic.com/repo/hg-stable for a live repository (there is a nice 
blob posting on this 
http://jameswestby.net/weblog/bzr/01-revision-numbers.html where they 
talk about bzr numbers)
* you need python on the platform where you want code to reside, bzr may 
be runnable with the new (JVM based) Jython 2.5, hg is not due to 
(simple) C extensions (these are present for performance, so could 
probably be re-implemented in java or even jini)


The first 2 issues will be addressed, rev numbers in hg are less likely 
be chaged. The Python requirement is currently a show-stopper for VMS 
and mainframe. bzr also has a central server mode which we would find 
very similar to our current approach with the benefits of distributed 
scs too. The central server mode really is the focus for Canonical, bzr 
is rather attractive.

RE labels and build practices -- our main use of labels is to have 
stable known working code (e.g. do not include headrevs, we know it is 
broken or we've not yet QA'd it properly), if we were to rollback bad 
changes back as they are found (bzr and hg make this trivial, piccolo 
makes this manual) we could simple use change (in hg) or rev (in bzr) 
numbers (tags in those are simply names that map to the change/rev 
number). I've obviously simplified the situation grossly but changes to 
practices could be very beneficial.

Using a sync mechanism does mean we don't have to migrate support (and 
GA releases) to a new system just yet so we can afford to experiment 
with the sync and see how that works. Using subversion also means we can 
experiment with bzr 
(http://bazaar-vcs.org/BzrForeignBranches/Subversion) today.

A good small scale experiment for bzr would be to import the MediaWiki 
(and/or phpBB) code. My understanding is that neither mediawiki or phpBB 
are interested in our Ingrs changes (at the moment). Using a distributed 
scs like bzr would make it easier to contribute back our changes if that 
ever changes, right now we have forks, bzr would make those forks branches.

My findings are that most scs's have everything that piccolo does (and 
more) with the following exceptions:

    * decent cross integration support is not that common (some other
      scs do manage this though)
    * labels - tags often have other behaviors than a simple snap shot
      of arbitrary file versions
    * configurable maps - svn can sort of do this with LOTS of futzing
    * built in bug database support, this is usually handled with a
      dedicated bug (or issue tracking) system that hooks into the scs.
      Piccolo is currently wedded to bugs.

We absolutely need decent cross integrations, the other requirements 
could be handled by engineering/build/procedure changes.

I'm not sure we are really ready to talk about which new source code 
control system we should use. The discussions on the model are more 
important at the moment.

Chris




More information about the opensource-infrastructure mailing list