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.4
- Source Code Tarball
- Windows standalone installer for the Bazaar packages from WindowsDownloads (bzr-setup-*.exe)
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 <fake@no-mail.net></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 <nospam@mail.com> </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>