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 describe the initial design and are out of date in parts.** For more up-to-date information see the wiki at http://bazaar.canonical.com/ For more information, see the homepage at http://bazaar-ng.org/ 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. 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. * `Ignored files `__ * `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. * `Revfiles `__ store the text history of files. * `Revfiles storing annotations `__ * `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 ----------------------------------- * `Notes on how to get a VCS adopted `__ * `Thanks `__ to various people * `Extra commands `__ for internal/developer/debugger use. * `Choice of Python as a development language `__