Replacing an expensive proprietary CM system with bzr.

Jurgen Defurne jurgen.defurne at pandora.be
Tue Feb 26 19:40:30 GMT 2008


I am currently doing an investigation to see if it would be possible
(long term) to replace a commercial CM solution with a combination of
Bazaar and mySQL. I only need to focus on Bazaar, since a whole lot of the bug tracking is currently supported by mySQL for caching and speed.

* Proprietary solution drawbacks
** Every operation is slow (> 1s).
   Although automation is possible, this does not offset its slowness,
   especially as the volume of source code grows every year. Release
   operations currently need from 2 to 4 hours. This is on a source
   tree of 5 Gb, which contains the equivalent of 211 checkouts in a
   NestedTree.
** Expensive. The amount of money saved could certainly be used to hire
   at least one developer to fully support bzr.

* Necessary features for switching from the other system to bzr
** Graphical interface in Windows : context menu like TortoiseSVN
** Integration of bug tracker and VCS via graphical interface
** Good graphical history view of objects
** NestedTreeSupport
** How does Bazaar handle databases of 80 Gb and more ?
   The main question here is, how can you improve on the speed of the
   central repository when several developers at once are doing
   updates or checkouts ? When the build manager is tagging 211
   different checkouts in one tree ?

** Daily build and acceptance work-flow description

   Developers check out their private checkout, and use it for
   development.

   At the end of the day a program starts an update and a build. In
   the morning, the test team checks the build
   results and gives later in the day the go ahead to say that the
   particular revision is allright. However, as part of the build,
   there may be libraries and executables taken in, which need to be
   committed. Does this mean that prior to daily acceptance no one may
   commit, or is there another solution possible with bzr ?

   After daily acceptance, it should be possible to say to the
   developers to which revision they may update their checkout.

   Developers are responsible for merging their work against the
   latest accepted (promoted) status.
** Multi-site work flow description
   Daily check-ins are not sent to each repository. Rather, all
   projects get assigned responsibility to one subsystem, and these
   are developed in the context of other subsystems. There is a weekly
   release. This weekly release should be taken into the other
   repositories. The biggest problem with this part is the deletion of
   objects.

  I suppose that in the case of daily-build and multi-site work flow,
  the solutions are laying in the distributed development model of
  bzr. In this case, I should probably first do a comparison of terms.

| Proprietary | bzr                   |
|-------------+-----------------------|
| database    | repository            |
| project     | light-weight checkout |
| version     | revision              |

  The other system has an export mechanism which makes it possible to
  pack a certain revision of a project into a package which can be
  transferred to another database and recreated there. This mechanism
  can be used differentially, in which case it is possible to send
  only deltas between the originating and the receiving databases. I
  suppose the only available mechanism in lieu of this is probably
  diff and patch.

  I should be running checks to see which transport mechanism is the
  fastest. I have already established that the file:// protocol, over
  a CIFS share is very slow.

** The way access rights have to be assigned to a repository is not
   clear
   Especially since I am now doing experiments in a Cygwin environment,
   I got twice problems with locks which could not be removed from the
   repository after doing a checkout.

I hope to have a good discussion about this in this mailing list.

Regards,

Jurgen



More information about the bazaar mailing list