Bazaar-NG ********* .. These documents are formatted as ReStructuredText. You can .. .. convert them to HTML, PDF, etc using the ``python-docutils`` .. .. package. .. *Bazaar-NG* (``bzr``) is a project of `Canonical Ltd`__ to develop an open source distributed version control system that is powerful, friendly, and scalable. The project is at an early stage of development. __ http://canonical.com/ **Note:** These documents are in a very preliminary state, and so may be internally or externally inconsistent or redundant. Comments are still very welcome. Please send them to . Summary status -------------- (as of 2005-02-23) * Bazaar-NG can track the history of a single local branch, similar to RCS. The storage format should be reasonably close to what will be used for 1.0. * The following commands work: ``add``, ``remove``, ``commit``, ``log``, ``diff`` (whole tree against basis revision), ``status``, ``help``, ``export`` (any revision). * Subdirectories and files within them are now supported. User documentation ------------------ * `Project overview/introduction `__ * `Command reference `__ -- intended to be user documentation, and gives the best overview at the moment of what the system will feel like to use. Fairly complete. * `Quick reference `__ -- single page description of how to use, intended to check it's adequately simple. Incomplete. * `FAQ `__ -- mostly user-oriented FAQ. * `Demonstration/tutorial `__ Requirements and general design ------------------------------- * `Various purposes of a VCS `__ -- taking snapshots and helping with merges is not the whole story. * `Requirements `__ * `Costs `__ of various factors: time, disk, network, etc. * `Deadly sins `__ that gcc maintainers suggest we avoid. * `Overview of the whole design `__ and miscellaneous small design points. * `File formats `__ * `Random observations `__ that don't fit anywhere else yet. Design of particular features ----------------------------- * `Automatic generation of ChangeLogs `__ * `Cherry picking `__ -- merge just selected non-contiguous changes from a branch. * `Common changeset format `__ for interchange format between VCS. * `Compression `__ of file text for more efficient storage. * `Config specs `__ assemble a tree from several places. * `Conflicts `_ that can occur during merge-like operations. * `Recovering from interrupted operations `__ * `Inventory command `__ * `Branch joins `__ represent that all the changes from one branch are integrated into another. * `Kill a version `__ to fix a broken commit or wrong message, or to remove confidential information from the history. * `Hash collisions `__ and weaknesses, and the security implications thereof. * `Layers `__ within the design * `Library interface `__ for Python. * `Merge `__ * `Mirroring `__ * `Optional edit command `__: sometimes people want to make the working copy read-only, or not present at all. * `Partial commits `__ * `Patch pools `__ to efficiently store related branches. * `Revision syntax `__ -- ``hello.c@12``, etc. * `Roll-up commits `__ -- a single revision incorporates the changes from several others. * `Scalability `__ * `Security `__ * `Shared branches `__ maintained by more than one person * `Supportability `__ -- how to handle any bugs or problems in the field. * `Place tags on revisions for easy reference `__ * `Detecting unchanged files `__ * `Merging previously-unrelated branches `__ * `Usability principles `__ (very small at the moment) * ``__ * ``__ * ``__ Modelling/controlling flow of patches. * ``__ -- Discussion of using YAML_ as a storage or transmission format. .. _YAML: http://www.yaml.org/ Comparisons to other systems ---------------------------- * `Taxonomy `__: basic questions a VCS must answer. * `Bitkeeper `__, the proprietary system used by some kernel developers. * `Aegis `__, a tool focussed on enforcing process and workflow. * `Codeville `__ has an intruiging but scarcely-documented merge algorithm. * `CVSNT `__, with more Windows support and some merge enhancements. * `OpenCM `__, another hash-based tool with a good whitepaper. * `PRCS `__, a non-distributed inventory-based tool. * `GNU Arch `__, with many pros and cons. * `Darcs `__, a merge-focussed tool with good usability. * `Quilt `__ -- Andrew Morton's patch scripts, popular with kernel maintainers. * `Monotone `__, Graydon Hoare's hash-based distributed system. * `SVK `__ -- distributed operation stacked on Subversion. * `Sun Teamware `__ Project management and organization ----------------------------------- * `Development news `__ * `Notes on how to get a VCS adopted `__ * `Testing plan `__ -- very sketchy. * `Thanks `__ to various people * `Roadmap `__: High-level order for implementing features. * ``__: current tasks. * `Extra commands `__ for internal/developer/debugger use. * `Choice of Python as a development language `__ Download -------- There are no releases yet. The Bazaar-NG development code may be downloaded using GNU Arch by the following steps:: tla register-archive http://sourcefrog.net/arch/mbp@sourcefrog.net--2004 tla get mbp@sourcefrog.net--2004/bazaar-ng--0 bazaar-ng (By contrast, when Bazaar-NG network operations are complete, a single much shorter command will do.) Note that the current code is under heavy development and so is not guaranteed to do anything useful whatsoever.