Bazaar

Bazaar

 




Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Rendering of reStructured text is not possible, please install Docutils.
This plugin adds an --xml option to log and provides an xml version of some builtin commands that generate XML output. Also it provides a xmlrpc service.


.. contents::


------------------
Supported commands
------------------

- xmllog and log --xml
- xmlstatus
- xmlannotate
- xmlmissing
- xmlinfo
- xmlplugins
- xmlversion
- xmlls
- start-xmlrpc

 - this starts the xmlrpc service, that provides the following functions:

  - run_bzr: allow to execute any bzr command
  - run_bzr_xml: similar to run_bzr, but report errors in xml format
  - search: provides integration with bzr-search (if it's available)

- stop-xmlrpc

--------
Download
--------

Latest release - 0.8.7

- `Source Code Tarball <http://launchpad.net/bzr-xmloutput/trunk/0.8.7/+download/bzr-xmloutput-0.8.7.final.0.tar.gz>`_


Branch: 

::

    bzr branch lp:bzr-xmloutput


Experimental branch with a threaded xmlrpc service:

::

    bzr branch lp:~verterok/bzr-xmloutput/threads


--------------
How to install
--------------
                                                   
There are two main options to install Bazaar plugins, from source or directly 
from the branch.

For further instructions visit:  http://bazaar-vcs.org/UsingPlugins.

For windows users using bzr standalone installed (bzr.exe), you should use the 
bzr-xmloutput-setup-x-x-x.exe installer.
 
Notice
 If you are installing bzr-xmloutput from the source tarball, the defaut install
 location is bzrlib/plugins/xmloutput. To change this look the available options
 running: python setup.py install --help


----------------------------------
Differences with builtins commands
----------------------------------

xmlls: when the --ignored flag is used, it includes the ignore pattern

----
TODO
----

- tests for xmlplugins, xmlmissing and xmlls
- tags?
- testament?


--------
Roadmap
--------

See [[XMLOutput/SprintNotes]]


-------------
Contributors
-------------

- Martin Albisetti
- Vincent Ladeuil
- Adrian Wilkins
- Aaron Bentley
- Renato Silva

                                                   
------------
XML formats
------------

xmllog or log --xml
-------------------

**logs**: contains *<log>* entries

**log**: represents a commit which can contain: revno, revisionid, committer, branch-nick, timestamp, message, merge, affected-files.

**merge**: contains *<log>* entries.

**affected-files**: can contain any of the elements present in *<status>*

Example output:

::

    <logs>
        <log>
            <revno>2872</revno>
        <committer>Canonical.com Patch Queue Manager &lt;fake@no-mail.net&gt;</committer>
            <branch-nick>+trunk</branch-nick>
        <timestamp>Fri 2007-09-28 05:14:35 +0100</timestamp>
            <message><![CDATA[(robertc) Add bzrlib.errors.!InternalBzrError. (Robert Collins)]]></message>
        <affected-files>
                <modified>
                   <file>NEWS</file>
               <file>bzrlib/errors.py</file>
                </modified>
        </affected-files>
        <log>
    <logs>


xmlstatus
---------

**status**: it has one attribute: *workingtree_root*, which is the  path to the workingtree root. It can contain: *modified*, *unknown*, *renamed*, *kind-changed*, *removed*, *conflicts*, *added*.

**<modified>, <unknown>, <renamed>, <kind-changed>, <removed>, <conflicts>, <added>**: contains directory and/or file elements.

**file**: contains the relative path to the file, and can contain the following attributes: oldpath, oldkind and newkind, fid.

**directory** contains the relative path to the directory, and can contain the following attributes: oldpath, oldkind and newkind, suffix.

Example output:

::

    <status workingtree_root="/Users/guillermo/Projects/BazaarEclipse/bzr-eclipse/trunk/">
            <modified>
                    <file fid="commandlineclient.ja-20070416055005-sc8qpmryqhgx5f65-24">
                        BazaarClient/src/main/org/vcs/bazaar/client/commandline/CommandLineClient.java
                </file>
        </modified>
            <unknown>
                    <file>BazaarClient/src/main/org/vcs/bazaar/client/IPlugin.java</file>
                <file>BazaarClient/src/main/org/vcs/bazaar/client/commandline/commands/Plugins.java</file>
            </unknown>
    </status>


xmlmissing
----------

**missing**: can contain: *<last_location>*, *<extra_revisions>* and *<missing_revisions>*.

**extra_revisions** and *<missing_revision>*: contains a *<logs>* element.

Example output:

::

    <missing>
            <last_location>
                    /Users/guillermo/Projects/BazaarEclipse/bzr-eclipse/trunk/
            </last_location>
        <extra_revisions size="1">
                <logs>
                        <log>
                                <revno>116</revno>
                                    <committer>
                                            Guillermo Gonzalez &lt;nospam@mail.com&gt;
                                </committer>
                                <branch-nick>quickdiff-integration</branch-nick>
                                <timestamp>Fri 2007-12-21 19:34:45 -0300</timestamp>
                        <message>* merge with quickdiff branch</message>
                        </log>
                    </logs>
        </extra_revisions>
    </missing>


xmlannotate
-----------

**annotation** It has two attributes: *workingtree_root*, which is the path to the workingtree root, and *file*, which is the file being annotated.

**entry** Each represents a line. It has *revno*, *author* and *date* as attributes, and contains the text as a value.

Example output:

::

    <annotation workingtree-root="/home/beuno/test_project/" file="test_file">
            <entry revno="1" author="argentina@gmail.com" date="20080303">This is a test file.</entry>
        <entry revno="6" author="guillo.gonzo@gmail.com" date="20070404"></entry>
            <entry revno="3" author="argentina@gmail.com" date="20080303">It has multiple lines...</entry>
        <entry revno="3" author="argentina@gmail.com" date="20080222">...just as an example :)</entry>
    </annotation>


xmlinfo
-------

**info** is the container for the information provided

**layout** displays the current layout

**formats** contains the formats the current branch has, *<format>* contains the name of the storage format

**location** can contain *<shared_repository>*, *<repository_branch>* and/or *<branch_root>*. These represent paths or URLs. 

**related_branches** contains *<push_branch>* and *<parent_branch>*. These represent paths or URLs.

Example output:

::

    <info>
            <layout>Repository tree</layout>
        <formats>
                <format>pack-0.92</format>
        </formats>
            <location>
                    <shared_repository>/home/beuno/test_project</shared_repository>
                <repository_branch>.</repository_branch>
            </location>
        <related_branches>
                <push_branch></push_branch>
                    <parent_branch>http://bazaar-vcs.org/bzr/bzr.dev/</parent_branch>
        </related_branches>
    </info>


xmlls
-----

**list** to level tag, contains one or more *<item>* tags

**item** represente a file in the tree 

**id** the file id

**kind** one of: file, directory or symlink

**path** the path to the file

**status** one of: none, versioned, unversioned, renamed, unknown, conflicts, pending merge, ignored, created, deleted, kind changed, modified, unchanged, exe bit changed.

**pattern** the ignored pattern, only if --ignored is spaecified 

Example output:

::

    <list>
        <item>
            <id>readme-20071029223614-87mcz42501p7wkmk-1</id>
            <kind>file</kind>
            <path>README</path>
            <status_kind>versioned</status_kind>
        </item>
    </list>


xmlplugins
----------

**plugins** top level tag, contains one or more *<plugin>* tags

**plugin** represent one plugin, contains *name*, *version*, *path*, *doc*

**name** the name of the plugin

**version** the version (if it's specified in the plugin)

**path** the path to the plugin root

**doc** the __doc__ of the plugin __init__.py file

Example output:

::

    <plugins>
        <plugin>
            <name>xmloutput</name>
            <version>0.8.4</version>
            <path>/home/guillermo/.bazaar/plugins/xmloutput</path>
            <doc>This plugin provides xml output for status, log, annotate, missing, info, version and plugins adding a --xml option to each</doc>
        </plugin>
    </plugins>:


xmlversion
----------

**version8* top level tag, contains *<bazaar>* and *<python>* tags. 

**bazaar** bzr version info, contains *<version>*, *<bzrlib>*, *<configuration>*, *<log_file>* and *<copyright>* tags

**python** python version info, contains *<executable>*, *<version>* and *<standard_library>*

**version** version number

**bzrlib** path of bzrlib currently used

**configuration** path of the configuration root

**log_file** path of the .bzr.log file

**copyright** the bzr copyright

**executable** python executable

**standard_library** path of the python standard library used

Example output:

::

    <version>
        <bazaar>
            <version>1.16.1</version>
            <bzrlib>/usr/lib/python2.6/dist-packages/bzrlib</bzrlib>
            <configuration>/home/guillermo/.bazaar</configuration>
            <log_file>/home/guillermo/.bzr.log</log_file>
            <copyright>Copyright 2005, 2006, 2007, 2008, 2009 Canonical Ltd.http://bazaar-vcs.org/bzr comes with ABSOLUTELY NO WARRANTY.  bzr is free software, andyou may use, modify and redistribute it under the terms of the GNUGeneral Public License version 2 or later.</copyright>
        </bazaar>
        <python>
            <executable>/usr/bin/python</executable>
            <version>2.6.2.final.0</version>
            <standard_library>/usr/lib/python2.6</standard_library>
        </python>
    </version>