Bazaar

Bazaar

 




Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Revision 44 as of 2009-07-04 19:32:37

Clear message

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.

Supported commands

  • log
  • 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.4

Branch:

bzr branch lp:bzr-xmloutput

Experimental branch with a threaded xmlrpc service:

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

Differences with builtins commands

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

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

Commands to implement:

  • tags?
  • testament?

TODO

  • tests for xmlplugins, xmlmissing and xmlls

Roadmap

See XMLOutput/SprintNotes

Contributors

  • Martin Albisetti
  • Vincent Ladeuil
  • Adrian Wilkins
  • Aaron Bentley

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:

<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>: contain 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.

<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.

<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.

<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.5</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>
</plugins>

xmlversion

version 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>