git for-each-ref --format "%(refname)" | sed 's/^refs\///g'
Output Directory Format
=======================
Each version will be built into a seperate subdirectory of the Sphinx output directory.
The ``smv_outputdir_format`` setting determines the directory structure for the subdirectories. It is a new-style Python formatting string with two parameters - ``ref`` and ``config``.
Here are some examples:
..code-block:: python
smv_outputdir_format = '{ref.name}' # Use the branch/tag name
smv_outputdir_format = '{ref.commit}' # Use the commit hash
smv_outputdir_format = '{ref.commit:.7s}' # Use the commit hash truncated to 7 characters
smv_outputdir_format = '{ref.refname}' # Use the full refname
smv_outputdir_format = '{ref.source}/{ref.name}' # Equivalent to the previous example
smv_outputdir_format = 'versions/{config.release}' # Use "versions" as parent directory and the "release" variable from conf.py
smv_outputdir_format = '{config.version}/{ref.name}' # Use the version from conf.py as parent directory and the branch/tag name as subdirectory
..seealso::
Have a look at `PyFormat <python_format_>`_ for information how to use new-stye Python formatting.
You can override configuration variables the same way as you're used to with ``sphinx-build``.
Since ``sphinx-multiversion`` copies the branch data into a temporary directory and builds them there while leaving the current working directory unchanged, relative paths in your :file:`conf.py` will refer to the path of the version *you're building from*, not the path of the version you are trying to build documentation for.
Sometimes it might be necessary to override the configured path via a command line overide.
``sphinx-multiversion`` allows you to insert placeholders into your override strings that will automatically be replaced with the correct value for the version you're building the documentation for.
Here's an example for the `exhale extension <exhale_>`_:
Make sure to enclose the override string in single quotes (``'``) to prevent the shell from treating it as an environment variable and replacing it before it's passed to ``sphinx-multiversion``.
..note::
To see a list of available placeholder names and their values for each version you can use the ``--dump-metadata`` flag.