1
==========================
2
Using ``bzr version-info``
3
==========================
8
This document describes ways of using ``bzr version-info`` as part of a
9
build routine to embed version information into a final project.
15
TODO: Figure out how to attach into ``setup.py``
1
Exporting version information
2
=============================
4
Getting the last revision number
5
--------------------------------
7
If you only need the last revision number in your build scripts, you can
8
use the ``revno`` command to get that value like this::
14
Getting more version information
15
--------------------------------
17
The ``version-info`` command can be used to output more information
18
about the latest version like this::
21
revision-id: pqm@pqm.ubuntu.com-20071211175118-s94sizduj201hrs5
22
date: 2007-12-11 17:51:18 +0000
23
build-date: 2007-12-13 13:14:51 +1000
27
You can easily filter that output using operating system tools or
28
scripts. For example::
30
$ bzr version-info | grep ^date
31
date: 2007-12-11 17:51:18 +0000
33
The ``--all`` option will actually dump version information about
34
every revision if you need that information for more advanced
41
.. TODO: Figure out how to attach into ``setup.py``
18
44
If using a Makefile to build your project, you can generate the version
19
45
information file as simply as::
21
47
library/_version.py:
22
bzr version-info --format=python > library/_version.py
48
bzr version-info --format python > library/_version.py
24
50
This generates a file which contains 3 dictionaries:
26
`version_info`: A dictionary containing the basic information about the
29
revisions: A dictionary listing all of the revisions in the history of
30
the tree, along with the commit times and commit message.
31
This defaults to being empty unless ``--all`` or
32
``--include-history`` is supplied. This is useful if you
33
want to track what bugfixes, etc, might be included in the
34
released version. But for many projects it is more
35
information than they need.
37
`file_revisions`: A dictionary listing the last-modified revision for
38
all files in the project. This can be used similarly
39
to how ``$Id$`` keywords are used in CVS controlled
40
files. The last modified date can be determined by
41
looking in the ``revisions`` map. This is also empty by
42
default, and enabled only by ``--all`` or
43
``--include-file-revisions``.
52
* `version_info`: A dictionary containing the basic information about the
55
* `revisions`: A dictionary listing all of the revisions in the
56
history of the tree, along with the commit times and commit
57
message. This defaults to being empty unless ``--all`` or
58
``--include-history`` is supplied. This is useful if you want to
59
track what bug fixes, etc, might be included in the released
60
version. But for many projects it is more information than needed.
62
* `file_revisions`: A dictionary listing the last-modified revision
63
for all files in the project. This can be used similarly to how
64
``$Id$`` keywords are used in CVS-controlled files. The last
65
modified date can be determined by looking in the ``revisions``
66
map. This is also empty by default, and enabled only by ``--all``
67
or ``--include-file-revisions``.
70
Getting version info in other formats
71
-------------------------------------
73
Bazaar supports a template-based method for getting version information in
74
arbitrary formats. The ``--custom`` option to ``version-info`` can be
75
used by providing a ``--template`` argument that contains variables that
76
will be expanded based on the status of the working tree. For example, to
77
generate a C header file with a formatted string containing the current
80
bzr version-info --custom \
81
--template="#define VERSION_INFO \"Project 1.2.3 (r{revno})\"\n" \
84
where the ``{revno}`` will be replaced by the revision number of the
85
working tree. (If the example above doesn't work on your OS, try
86
entering the command all on one line.) For more information on the
87
variables that can be used in templates, see `Version Info`_ in the
88
Bazaar User Reference.
90
.. _Version Info: ../user-reference/index.html#version-info
92
Predefined formats for dumping version information in specific languages
93
are currently in development. Please contact us on the mailing list about
94
your requirements in this area.
48
99
Most information about the contents of the project can be cheaply
49
100
determined by just reading the revision entry. However, it can be useful