view doc/commands.txt @ 597:4c3d43adaa48

0.6dev: Fixed `php:phpunit` parsing including support for nested tests. Extended `php:coverage` to also parse PHPUnit coverage-clover format. Closes #199 and #316. Thanks to all those that have helped develop the patch, and special thanks to Roland Wilczek for contributing, testing and helping me get working php builds for development.
author osimons
date Wed, 29 Jul 2009 10:43:48 +0000
parents d8eb5f723371
children b76e6accad72
line wrap: on
line source
.. -*- mode: rst; encoding: utf-8 -*-

=====================
Build Recipe Commands
=====================

`Build recipes`_ are represented by XML documents. This page describes what
commands are generally available in recipes. Please note, though, that
third-party packages can add additional commands, which would then be
documented by that third party.

.. _`build recipes`: recipes.html

.. contents:: Contents
   :depth: 2
.. sectnum::


Generic Commands
================

These are commands that are used without a namespace prefix.


------------
``<report>``
------------

Parse an XML file and send it to the master as a report with a given category.
Use this command in conjunction with the ``<sh:pipe>`` or ``<x:transform>``
commands to send custom reports to the build master.

Parameters
----------

+--------------+-------------------------------------------------------------+
| Name         | Description                                                 |
+==============+=============================================================+
| ``category`` | Category of the report (for example "test" or "coverage").  |
+--------------+-------------------------------------------------------------+
| ``file``     | Path to the XML file containing the report data, relative   |
|              | to the project directory.                                   |
+--------------+-------------------------------------------------------------+

Both parameters must be specified.


Shell Tools
===========

A bundle of generic tools that are not specific to any programming language or
tool-chain.

:Namespace: ``http://bitten.cmlenz.net/tools/sh``
:Common prefix: ``sh``


-------------
``<sh:exec>``
-------------

Executes a program or script.

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``executable`` | The name of the executable program.                       |
+----------------+-----------------------------------------------------------+
| ``file``       | Path to the script to execute, relative to the project    |
|                | directory                                                 |
+----------------+-----------------------------------------------------------+
| ``output``     | Path to the output file                                   |
+----------------+-----------------------------------------------------------+
| ``args``       | Any arguments to pass to the executable or script         |
+----------------+-----------------------------------------------------------+

Either ``executable`` or ``file`` must be specified.

Examples
--------

TODO


-------------
``<sh:pipe>``
-------------

Pipes the content of a file through a program or script.

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``executable`` | The name of the executable program.                       |
+----------------+-----------------------------------------------------------+
| ``file``       | Path to the script to execute, relative to the project    |
|                | directory                                                 |
+----------------+-----------------------------------------------------------+
| ``input``      | Path to the input file                                    |
+----------------+-----------------------------------------------------------+
| ``output``     | Path to the output file                                   |
+----------------+-----------------------------------------------------------+
| ``args``       | Any arguments to pass to the executable or script         |
+----------------+-----------------------------------------------------------+

Either ``executable`` or ``file`` must be specified.

Examples
--------

TODO


C/Unix Tools
============

These commands provide support for tools commonly used for development of C/C++
applications on Unix platforms, such as ``make``.

:Namespace: ``http://bitten.cmlenz.net/tools/c``
:Common prefix: ``c``


------------------
``<c:autoreconf>``
------------------

Executes ths autotool autoreconf.

Parameters
----------

    :param force: consider all files obsolete
    :param install: copy missing auxiliary files
    :param symlink: install symbolic links instead of copies
    :param warnings: report the warnings falling in CATEGORY
    :prepend_include: prepend directories to search path
    :include: append directories to search path


+--------------+-------------------------------------------------------------+
| Name         | Description                                                 |
+==============+=============================================================+
| ``force``    | Consider all files obsolete                                 |
+--------------+-------------------------------------------------------------+
| ``install``  | Copy missing auxiliary files                                |
+--------------+-------------------------------------------------------------+
| ``symlink``  | Install symbolic links instead of copies                    |
+--------------+-------------------------------------------------------------+
| ``warnings`` | Report the warnings related to category                     |
|              | (which can actually be a comma separated list)              |
+--------------+-------------------------------------------------------------+
| ``prepend_include``  | Prepend directories to search path                  |
+--------------+-------------------------------------------------------------+
| ``include``   | Append directories to search path                          |
+--------------+-------------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <c:autoreconf force="1" install="1" warnings="cross,syntax,error"/>

Runs the ``autoreconf`` tool in the base directory with the option: force, install
and 3 warning categories active: cross,syntax,error. This is equivalent to::

  autoreconf --force --install --warnings=cross,syntax,error


-----------------
``<c:configure>``
-----------------

Executes a configure script as generated by Autoconf.

Parameters
----------

+--------------+-------------------------------------------------------------+
| Name         | Description                                                 |
+==============+=============================================================+
| ``file``     | Name of the configure script (defaults to "configure")      |
+--------------+-------------------------------------------------------------+
| ``enable``   | List of features to enable, separated by spaces.            |
+--------------+-------------------------------------------------------------+
| ``disable``  | List of features to disable, separated by spaces.           |
+--------------+-------------------------------------------------------------+
| ``with``     | List of packages to include, separated by spaces.           |
+--------------+-------------------------------------------------------------+
| ``without``  | List of packages to exclude, separated by spaces.           |
+--------------+-------------------------------------------------------------+
| ``cflags``   | Value of the `CFLAGS` variable to pass to the script.       |
+--------------+-------------------------------------------------------------+
| ``cxxflags`` | Value of the `CXXFLAGS` variable to pass to the script.     |
+--------------+-------------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <c:configure enable="threadsafe" cflags="-O"/>

Runs the ``configure`` script in the base directory, enable the ``threadsafe``
feature, and passing ``-O`` as ``CFLAGS``. This is equivalent to::

  ./configure --enable-threadsafe CFLAGS="-O"


------------
``<c:gcov>``
------------

Run gcov_ to extract coverage data where available.

.. _gcov: http://gcc.gnu.org/onlinedocs/gcc/Gcov-Intro.html

Parameters
----------

+--------------+------------------------------------------------------------+
| Name         | Description                                                |
+==============+============================================================+
| ``include``  | List of glob patterns (separated by space) that specify    |
|              | which source files should be included in the coverage      |
|              | report                                                     |
+--------------+------------------------------------------------------------+
| ``exclude``  | List of glob patterns (separated by space) that specify    |
|              | which source files should be excluded from the coverage    |
|              | report                                                     |
+--------------+------------------------------------------------------------+
| ``prefix``   | Optional prefix name that is added to object files by the  |
|              | build system                                               |
+--------------+------------------------------------------------------------+


------------
``<c:make>``
------------

Executes a Makefile.

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``target``     | Name of the target to execute (defaults to "all")         |
+----------------+-----------------------------------------------------------+
| ``file``       | Path to the Makefile that should be used.                 |
+----------------+-----------------------------------------------------------+
| ``keep-going`` | Whether `make` should try to continue even after          |
|                | encountering errors.                                      |
+----------------+-----------------------------------------------------------+
| ``jobs``       | Number of parallel jobs used by make.                     |
+----------------+-----------------------------------------------------------+
| ``directory``  | Path of the directory in which make should be called.     |
+----------------+-----------------------------------------------------------+
| ``args``       | Any space separated arguments to pass to the makefile.    | 
|                | Usually in the form:                                      |
|                | ``"parameter1=value1 parameter2=value2"``.                |
+----------------+-----------------------------------------------------------+


Examples
--------

.. code-block:: xml

  <c:make target="compile" file="build/Makefile" />

Runs the target "compile" of the ``Makefile`` located in the sub-directory
``build``.

.. code-block:: xml

  <c:make target="compile" file="build/Makefile" directory="work" args="coverage=1" />

Same as previous but execute the command in the ``work`` directory and call
the makefile with the command line argument ``coverage=1``.

---------------
``<c:cppunit>``
---------------

Report the test output generated by the CppUnit_ unit testing framework. The
output from CppUnit must be in XML format and in already, specified by the
``file`` argument of this recipe.

.. _cppunit: http://cppunit.sourceforge.net

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path to the cppunit XML output file.                      |
+----------------+-----------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <sh:exec executable="run_unit_tests" output="test_results.xml" />
  <c:cppunit file="test_results.xml" />

Runs the program ``run_unit_tests`` to gather the data output by CppUnit in the
``test_results.xml`` file and then reports it.


Java Tools
==========

A bundle of recipe commands that support tools commonly used by Java projects.

:Namespace: ``http://bitten.cmlenz.net/tools/java``
:Common prefix: ``java``


--------------
``<java:ant>``
--------------

Runs an Ant_ build.

.. _ant: http://ant.apache.org/

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path of the build file, relative to the project source    |
|                | directory (default is ``build.xml``).                     |
+----------------+-----------------------------------------------------------+
| ``target``     | Name of the build target(s) to execute.                   |
+----------------+-----------------------------------------------------------+
| ``args``       | Additional arguments to pass to Ant, separated by         |
|                | whitespace.                                               |
+----------------+-----------------------------------------------------------+
| ``keep_going`` | Tell Ant to continue even when errors are in encountered  |
|                | in the build.                                             |
+----------------+-----------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <java:ant target="compile" />

Executes the target ``compile`` of the ``build.xml`` buildfile at the top of the
project source directory.


--------------------
``<java:cobertura>``
--------------------

Extract code coverage data from a Cobertura_ XML file.

.. _cobertura: http://cobertura.sourceforge.net/

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path to the XML file generated by Cobertura               |
+----------------+-----------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <java:cobertura file="build/cobertura.xml" />

Reads the specifid XML file, extracts the coverage data, and builds a coverage
report to be sent to the build master.


----------------
``<java:junit>``
----------------

Extracts information about unit test results from a file in JUnit_ XML format.

.. _junit: http://junit.org/index.htm

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path to the JUnit XML test results file. This can include |
|                | wildcards, in which case all the file matching the        |
|                | pattern will be included.                                 |
+----------------+-----------------------------------------------------------+
| ``srcdir``     | Path of the directory unit test sources. Used to link the |
|                | test cases to files.                                      |
+----------------+-----------------------------------------------------------+

The ``file`` attribute is required.

Examples
--------

.. code-block:: xml

  <java:junit file="build/tests/results/TEST-*.xml" srcdir="src/tests" />

Collects the test results from all files in the `build/tests/results` directory
that match the pattern `TEST-*.xml`. Also, maps the class names in the results
files to Java source files in the directory `src/tests`.


Mono Tools
==========

A bundle of recipe commands that support tools commonly used by Mono/.NET projects.

:Namespace: ``http://bitten.cmlenz.net/tools/mono``
:Common prefix: ``mono``

----------------
``<mono:nunit>``
----------------

Extracts information about unit test results from a files in NUnit_ XML format.

.. _nunit: http://nunit.org/

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path to the NUnit XML test results file. This can include |
|                | wildcards, in which case all the file matching the        |
|                | pattern will be included.                                 |
+----------------+-----------------------------------------------------------+

The ``file`` attribute is required.

Examples
--------

.. code-block:: xml

  <mono:nunit file="build/tests/TestResult.xml" />


PHP Tools
=========

A bundle of recipe commands for PHP_ projects.

:Namespace: ``http://bitten.cmlenz.net/tools/php``
:Common prefix: ``php``

.. _php: http://php.net/

---------------
``<php:phing>``
---------------

Runs a Phing_ build.

.. _phing: http://phing.info/

Parameters
----------

+-------------------+-------------------------------------------------------+
| Name              | Description                                           |
+===================+=======================================================+
| ``file``          | Path of the build file, relative to the project       |
|                   | source directory (default is ``build.xml``).          |
+-------------------+-------------------------------------------------------+
| ``target``        | Name of the build target(s) to execute.               |
+-------------------+-------------------------------------------------------+
| ``args``          | Additional arguments to pass to Phing, separated by   |
|                   | whitespace.                                           |
+-------------------+-------------------------------------------------------+
| ``executable``    | Phing executable program (default is ``phing``).      |
+-------------------+-------------------------------------------------------+


Examples
--------

.. code-block:: xml

  <php:phing target="compile" />

Executes the target ``compile`` of the ``build.xml`` buildfile at the top of the
project source directory.


-----------------
``<php:phpunit>``
-----------------

Extracts information from PHPUnit_ test results recorded in an XML file.

.. _phpunit: http://www.phpunit.de/

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path to the XML results file, relative to the project     |
|                | source directory.                                         |
+----------------+-----------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <php:phpunit file="build/test-results.xml"/>

Extracts the test results from the XML file located at
``build/test-results.xml``.


------------------
``<php:coverage>``
------------------

Extracts coverage information from Phing_'s code coverage task XML file or
from PHPUnit_ coverage-clover XML file.

Parameters
----------

+---------------+-----------------------------------------------------------+
| Name          | Description                                               |
+===============+===========================================================+
| ``file``      | Path to the XML coverage file, relative to the project    |
|               | source directory.                                         |
+---------------+-----------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <php:coverage file="build/coverage.xml" />


Python Tools
============

A bundle of recipe commands that support tools commonly used by Python_
projects.

:Namespace: ``http://bitten.cmlenz.net/tools/python``
:Common prefix: ``python``

.. _python: http://www.python.org/


-----------------
``<python:exec>``
-----------------

Executes a Python script.

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path of the script to execute, relative to the project    |
|                | source directory.                                         |
+----------------+-----------------------------------------------------------+
| ``module``     | Name of the Python module to execute.                     |
+----------------+-----------------------------------------------------------+
| ``function``   | Name of the function in the Python module to run. Only    |
|                | works when also specifying the `module` attribute.        |
+----------------+-----------------------------------------------------------+
| ``args``       | Any arguments that should be passed to the script.        |
+----------------+-----------------------------------------------------------+
| ``output``     | Path to a file where any output by the script should be   |
|                | recorded.                                                 |
+----------------+-----------------------------------------------------------+

Either `file` or `module` must be specified.

Examples
--------

.. code-block:: xml

  <python:exec module="pylint.lint" output="pylint-report.txt" args="myproj" />

Executes Pylint_ on the module/package ``myproj`` and stores the output into a
file named ``pylint-report.txt``.


----------------------
``<python:distutils>``
----------------------

Executes a distutils_ script.

.. _distutils: http://docs.python.org/lib/module-distutils.html

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| `command`      | The name of the `distutils` command that should be run    |
+----------------+-----------------------------------------------------------+
| `options`      | Additional options to pass to the command, separated by   |
|                | spaces                                                    |
+----------------+-----------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <python:distutils command="sdist" />

Instructs `distutils` to produce a source distribution.

.. code-block:: xml

  <python:distutils command="unittest" options="
      --xml-output build/test-results.xml
      --coverage-summary build/test-coverage.txt
      --coverage-dir build/coverage"/>

Instructs `distutils` to run the ``unittest`` command (which is provided by
Bitten), and passes the options needed to determine the output paths for test
results and code coverage reports.


---------------------
``<python:unittest>``
---------------------

Extracts information from unittest_ results recorded in an XML file.

.. _unittest: http://docs.python.org/lib/module-unittest.html
.. note:: This report must be used in conjunction with the ``distutils`` command
          "unittest" that comes with Bitten.

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``file``       | Path to the XML results file, relative to the project     |
|                | source directory.                                         |
+----------------+-----------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <python:unittest file="build/test-results.xml"/>

Extracts the test results from the XML file located at
``build/test-results.xml``.


------------------
``<python:trace>``
------------------

Extracts coverage information recorded by the built-in Python module
``trace.py``.

Parameters
----------

+--------------+-------------------------------------------------------------+
| Name         | Description                                                 |
+==============+=============================================================+
| ``summary``  | Path to the summary file written by ``trace.py``,           |
|              | relative to the project source directory.                   |
+--------------+-------------------------------------------------------------+
| ``coverdir`` | Path to the directory containing the coverage files written |
|              | by ``trace.py``, relative to the project source directory.  |
+--------------+-------------------------------------------------------------+
| ``include``  | List of glob patterns (separated by space) that specify     |
|              | which Python file should be included in the coverage report |
+--------------+-------------------------------------------------------------+
| ``exclude``  | List of glob patterns (separated by space) that specify     |
|              | which Python file should be excluded from the coverage      |
|              | report                                                      |
+--------------+-------------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <python:trace summary="build/trace.out" coverdir="build/coverage" />

-------------------
``<python:pylint>``
-------------------

Extracts information from Pylint_ reports.

.. _pylint: http://www.logilab.org/projects/pylint

Parameters
----------

+--------------+-------------------------------------------------------------+
| Name         | Description                                                 |
+==============+=============================================================+
| ``file``     | Path to the file containing the Pylint output, relative to  |
|              | the project source directory.                               |
+--------------+-------------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <python:pylint file="build/pylint.out" />


Subversion Tools
================

A collection of recipe commands for working with the Subversion_ version
control system. This commands are commonly used as the first step of a build
recipe to actually pull the code that should be built from the repository.

.. _subversion: http://subversion.tigris.org/

:Namespace: ``http://bitten.cmlenz.net/tools/svn``
:Common prefix: ``svn``


------------------
``<svn:checkout>``
------------------

Check out a working copy from a Subversion repository.

Parameters
----------

+-----------------+-------------------------------------------------------------+
| Name            | Description                                                 |
+=================+=============================================================+
| ``url``         | URL of the repository.                                      |
+-----------------+-------------------------------------------------------------+
| ``path``        | The path inside the repository that should be checked out.  |
|                 | You should normally set this to ``${path}`` so that the     |
|                 | path of the build configuration is used.                    |
+-----------------+-------------------------------------------------------------+
| ``revision``    | The revision that should be checked out. You should         |
|                 | normally set this to ``${revision}`` so that the revision   |
|                 | of the build is used.                                       |
+-----------------+-------------------------------------------------------------+
| ``dir``         | Path specifying which directory the sources should be       |
|                 | checked out to (defaults to '.').                           |
+-----------------+-------------------------------------------------------------+
| ``verbose``     | Whether to log the list of checked out files (defaults to   |
|                 | False).                                                     |
+-----------------+-------------------------------------------------------------+
| ``shared_path`` | An optional shared directory to check the sources out in,   |
|                 | which will be reused for each subsequent build. This is     |
|                 | relative to the project directory, so for standard usage    |
|                 | set it to something like ``../trunk``                       |
+-----------------+-------------------------------------------------------------+
| ``username``    | Username to pass for authentication (optional)              |
+-----------------+-------------------------------------------------------------+
| ``password``    | Password to pass for authentication (optional)              |
+-----------------+-------------------------------------------------------------+


Examples
--------

.. code-block:: xml

  <svn:checkout url="http://svn.example.org/repos/myproject/"
      path="${path}" revision="${revision}"/>

This checks out the a working copy into the current directory.


----------------
``<svn:export>``
----------------

Download a file or directory from a Subversion repository. This is similar to
performing a checkout, but will not include the meta-data Subversion uses to
connect the local working copy to the repository (i.e. it does not include the
``.svn`` directories.)

Parameters
----------

+--------------+-------------------------------------------------------------+
| Name         | Description                                                 |
+==============+=============================================================+
| ``url``      | URL of the repository.                                      |
+--------------+-------------------------------------------------------------+
| ``path``     | The path inside the repository that should be checked out.  |
|              | You should normally set this to ``${path}`` so that the     |
|              | path of the build configuration is used.                    |
+--------------+-------------------------------------------------------------+
| ``revision`` | The revision that should be checked out. You should         |
|              | normally set this to ``${revision}`` so that the revision   |
|              | of the build is used.                                       |
+--------------+-------------------------------------------------------------+
| ``dir``      | Path specifying which directory the sources should be       |
|              | exported to (defaults to '.')                               |
+--------------+-------------------------------------------------------------+
| ``username`` | Username to pass for authentication (optional)              |
+--------------+-------------------------------------------------------------+
| ``password`` | Password to pass for authentication (optional)              |
+--------------+-------------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <svn:export url="http://svn.example.org/repos/myproject/"
      path="${path}" revision="${revision}"/>

This downloads the file or directory at ``${path}`` from the Subversion
repository at ``http://svn.example.org/repos/myproject/``. Variables are used
for the ``path`` and ``revision`` attributes so they are populated from the
properties of the build and build configuration.


----------------
``<svn:update>``
----------------

Update an existing working copy from a Subversion repository to a specific
revision.

Parameters
----------

+--------------+-------------------------------------------------------------+
| Name         | Description                                                 |
+==============+=============================================================+
| ``revision`` | The revision that should be checked out. You should         |
|              | normally set this to ``${revision}`` so that the revision   |
|              | of the build is used.                                       |
+--------------+-------------------------------------------------------------+
| ``dir``      | Path specifying the directory containing the sources to be  |
|              | updated (defaults to '.')                                   |
+--------------+-------------------------------------------------------------+

Examples
--------

.. code-block:: xml

  <svn:update revision="${revision}"/>

This updates the working copy in the current directory. The revision is
specified as a variable so that it is populated from the properties of the
build.


XML Tools
=========

A collection of recipe commands for XML processing.

:Namespace: ``http://bitten.cmlenz.net/tools/xml``
:Common prefix: ``x``


-----------------
``<x:transform>``
-----------------

Apply an XSLT stylesheet .

.. note:: that this command requires either libxslt_ (with `Python bindings`_)
          or, on Windows platforms, MSXML (version 3 or later) to be installed
          on the slave machine.

.. _libxslt: http://xmlsoft.org/XSLT/
.. _`python bindings`: http://xmlsoft.org/XSLT/python.html

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``src``        | Path of the source XML file.                              |
+----------------+-----------------------------------------------------------+
| ``dest``       | Path of the destition XML file.                           |
+----------------+-----------------------------------------------------------+
| ``stylesheet`` | Path to the XSLT stylesheet file.                         |
+----------------+-----------------------------------------------------------+

All these are interpreted relative to the project source directory.

Examples
--------

.. code-block:: xml

  <x:transform src="src.xml" dest="dest.xml" stylesheet="util/convert.xsl" />

This applies the stylesheet in ``util/convert.xsl`` to the source file
``src.xml``, and writes the resulting XML document to ``dest.xml``.


Mercurial Tools
===============

A collection of recipe commands for working with Mercurial_ (hg) repositories.

.. _mercurial: http://mercurial.selenic.com/


:Namespace: ``http://bitten.cmlenz.net/tools/hg``
:Common prefix: ``hg``


-------------
``<hg:pull>``
-------------

Pull changesets and updates a local Mercurial repository.

As the command depends on a pre-existing repository, bitten-slave must be
started with ``--build-dir=`` option for locating and working with the
repository.

Parameters
----------

+----------------+-----------------------------------------------------------+
| Name           | Description                                               |
+================+===========================================================+
| ``revision``   | The revision to update to (optional, defaults to tip).    |
+----------------+-----------------------------------------------------------+
| ``dir``        | Local subdirectory with repository (optional,             |
|                | defaults to '.').                                         |
+----------------+-----------------------------------------------------------+

Paths are interpreted relative to the project source directory.

Examples
--------

.. code-block:: xml

  <hg:pull revision="${revision}" dir="src" />

This updates the repository in ``src`` to the revision of the current build.
Copyright (C) 2012-2017 Edgewall Software