Bzr

From Apache OpenOffice Wiki
Revision as of 23:07, 29 October 2007 by Doko (Talk | contribs)

Jump to: navigation, search

CWS on Bazaar

Migration of CVS/CWS/EIS to Bazaar

This is the hub page for information related to the migration of CVS/CWS/EIS to Bazaar. Please enter links/information about sources of information, status and working notes.

Quick Status: work in progress

Sources of information on Bazaar:

How does bazaar meet the requirements for the next OpenOffice.org SCM tool

The preliminary list of requirements is availabe here.

Bazaar and Mandatory requirements

  1. The SCM tool and its repository format must be stable enough to support a code base of the size of OpenOffice.org (this is self evident). The best way to prove this is the successful use in other large software projects.
    bazaar ...
  2. Clients for the SCM tool have to be available for the major development platforms (Linux, MacOSX, Solaris, Windows) and should be available for most of the OpenOffice.org platforms.
    bazaar is available for all required platforms, GUI clients are available for Gtk, Qt, Native Windows, Eclipse plugin.
  3. The new SCM should support the subset of CVS which is used in every day life, such as "status", "diff", "annotate", "log" etc in a reasonable way. I'm certain that every modern SCM does this, CVS sets the lower bar here.
    See this list of supported commands
  4. The general operation of the SCM should not be significantly slower than CVS, at least the important things: "commit", "diff", "log" etc. If some seldom used operations like "annotations", "history" are slower than this is probably not much of problem.
    bazaar is substantially faster for these operations (copy of history can be held on the local machine)
  5. The SCM tool must easily support the concept of branches.
    bazaar does support branches
    1. Branch creation must be light weight. We create branches even for one liner fixes in single files (bugfix CWS).
      bazaar ...
    2. It must be possible to repeately update (resync) a branch to a newer version (milestone) of the trunk or a release branch. We create branches that live for many months with constant work on them (huge feature CWS).
      bazaar ...
    3. If the update (resync) operation is expensive (in terms of merge time and repository size) than branching and resyncing must be possible on a subset of the tree, let's say only on a number of modules.
      bazaar ...
  6. The SCM must easily support the concept of tags
    bazaar commands tag, tags
    1. Tag creation must be lightweight. We create regularly new milestones which needs to be tagged (milestone tags). If the repeated update mechanism for the branches requires tagging to prevent multiple merging as CVS does, than this is even more important (anchor tags).
      bazaar ...
  7. There must be an easy way to share changes on a branch even before the branch is ready for integration. There is a need to do cross merging between branches from time to time. Usually not a complete changeset is cross merged but just single selected pieces (pulling selected fixes from another CWS).
    bazaar ...
    1. Note: with a centralized SCM tool this requirement is inherent fulfilled, but for a distributed SCM tool this requires the setup of a publishing framework.
      bazaar ...
  8. The pushing of changes into a public visible repository must be adequately secured by an authentication mechanism. We cannot risk someone trying to sneak bad code (back doors, encumbered code, embarrassing stuff) into our code base. OpenOffice.org has now a public visibility that makes that kind of attack more likely and is huge enough that certain code changes might go unnoticed for a long time.
    bazaar ...
    1. Note: this is also something which comes more a or less natural to a centralized SCM tool but needs to be set up for a DSCM.
      bazaar ...
  9. There must be a way to replicate the "one-and-true" repository into remote r/o repositories to reduce network load.
    bazaar ...
    1. Note: now this is one thing that DSCM can do by design but needs to be set up for centralized SCM tools.
      bazaar ...
  10. It must be possible to preserve the history of trunk, all release branches and all active CWS branches during import in the new SCM tool. The import should not take an unreasonable amount of time.
    bazaar ...
  11. Proper handling of binary files.
    bazaar ...

Bazaar and favoured SCM features

  1. If the SCM tool is a drop in replacement for CVS.
    bazaar ...
  2. If the SCM tool allows easy integration in a development framework such as commit messages, correlation of commits with issues etc.
    bazaar ...
  3. If the SCM tool plays nice with CEE from collab.net (our site hosting software).
    bazaar ...
  4. If it's enough to modify our CWS tooling to work with new the SCM tool without inventing completely new authentication and publishing schemes.
    bazaar ...
  5. An easy scriptable interface or client libraries with multiple language bindings (Perl preferred).
    bazaar ...
  6. Easily traverses firewalls.
    bazaar ...
  7. A web browsable interface.
    bazaar ...
  8. Available Bonsai and Tinderbox integration.
    bazaar ...
  9. If it's easy to replicate "the one-and-true" repository at least for r/o access.
    bazaar ...
  10. The ability rename/move files with full history preservation.
    bazaar ...
  11. The ability to rename/move directories with full history preservation.
    bazaar ...
  12. Atomic commits.
    bazaar ...
  13. The repository will be accessed by non-developers, too, thus an understandable interface and good documentation is desirable.
    bazaar ...
  14. Ability to handle more heads, and to cross-merge changes
    bazaar ...
    1. There exist quite a lot of 'flavors' of OpenOffice.org - vanilla up-stream, StarOffice, ooo-build (Novell version, Debian version, Win32 version, ...), MacOSX port, ... The new SCM should be able to handle the scenario where a branch is already merged in one of the heads, but cross-merged to vanilla upstream later after approval. (Easy with DSCM, not sure about centralized SCM.)
      bazaar ...

Nice to have things in Bazaar

  1. Be able to fully work offline.
    bazaar ...
  2. Familiar commands to reduce retraining effort.
    bazaar ...
  3. Integration into popular IDEs like netbeans and eclipse.
    bazaar ...
  4. Before/during the conversion we should change tabs in c/c++ files to spaces (as the current OOo coding standards recommend)
    bazaar ...
Personal tools