===========================
Usando ``bzr version-info``
===========================

Repaso General
==============

Este documento describe las formas de usar ``bzr version-info`` como
parte del proceso de embeber la informacion de vesion a un proyecto.


Projecto Python
===============

TODO: Figure out how to attach into ``setup.py``

Si usa un archivo Makefile para construir su proyecto, puede generar un
archivo on la informacion de version tan simple como::

  library/_version.py:
        bzr version-info --format=python > library/_version.py

Eso genera un archivo que contiene 3 diccionarios:

  * `version_info`: Un diccionario conteniendo informacion basica sobre el
    estado actual

  * `revisions`: Un diccionario listando todas las revisiones en
    el historial del tree, junto con los tiempos y los mensajes de
    los commits. Esto por defecto esta en blanco salvi que use ``--all``
    o `--include-history`` es provisto. Esto es util si quiere seguir
    que bugs arregla el lanzamiento de esa version. Para muchos proyectos
    es mas informacion de la que se va a necesitar.

  * `file_revisions`: Un diccionario listando la revision que modifico
    por ultima vez todos los archivos del proyecto. Esto puede ser usado
    similarmente a como se usan las palabras claves ``$Id$`` en los
    archivos controlados en CVS. La ultima fecha de modificacion puede
    ser determinada mirando en el mapa de ``revisions``. Esto tambien
    esta vacio por defecto, y habilitado solo por ``--all`` o
    ``--include-file-revisions``.


Check Clean
===========

La mayoria de la informacion sobre el contenido del proyecto puede
ser determinada a muy bajo costo con solo leer las entradas de revisiones.
Sin embargo, puede ser util si el working tree fue actualizado completamente
cuando fue empaquetado, o si hubo alguna modificacion local. Al proveer
``--all`` o ``--check-clean``, ``bzr`` va a inspeccionar el working tree,
y definir el ``clean`` flag en ``version_info``, al igual que definir
entradas en ``file_revisions`` como ``modified`` donde es apropiado.
