Changelog
=========


1.12.2 (2020-02-17)
-------------------

- Fix virtualenv creation on Python 2.7 (#25). Thanks icemac.


1.12.1 (2020-01-08)
-------------------

- Fix updating direct references in requirements.txt (#22)


1.12.0 (2019-10-11)
-------------------

- Make fixtures reusable by calling ``pytest_plugins = 'batou.fixtures'``
  in code depending on them instead of importing from conftest.py which is not
  suggested by pytest.

- Add convenience functions to get active components for a host.

- Security updates for multiple dependencies.

1.11.0 (2019-04-23)
-------------------

- Support IPv6-only addresses in `batou.utils.Address`


1.10.1 (2019-01-31)
-------------------

- Download virtualenv directly from github instead of using `pip download`. Using `pip download` makes no sense anymore, as does not only download anymore. (Thanks wosc)

1.10.0 (2018-11-28)
-------------------

- Add support for deploying via 'test kitchen' (http://kitchen.ci/)

- Fixed deploying into "own" user (no service user defined in environment) when remote and local user names are different (#106809, wosc).

- Use Python's built-in `-m venv` to create virtualenvs for Python >=3.3 (#107117).


1.9.0 (2018-10-26)
------------------

- Force clone of git repositories when the remote url changes (#106661).

- Implement basic sorting for Address-objects allowing to sort list of addresses (#100499)


1.8.0 (2018-08-16)
------------------

- Show stdout of rsync command at verification step of SyncDirectory when
  running in debug mode.
- Add VirtualEnv3.6 to support Python3.6


1.7.5 (2018-04-05)
------------------

- Fix compatability to `pip>=10.0` by using the ``download`` command instead of
  ``install --download``.


1.7.4 (2018-04-03)
------------------

- Fix compatability to `pip>=10.0` by no longer forcing eggs instead of wheels.


1.7.3 (2018-03-19)
------------------

- Fix git-bundle deploy when there are no changes to the deployment repository
  (#100645)


1.7.2 (2018-03-01)
------------------

- Fix `batou.lib.file.Purge` to be able to delete files again.


1.7.1 (2018-01-29)
------------------

- Fix git deployment repository handling.


1.7.0 (2018-01-29)
------------------

- `git.Clone` uses `git reset` instead of merge/checkout to get the defined
   state.

- batou uses `git reset` instead of merge/checkout to update the remote
  deployment repository.

- Improve error message when deploying a wrong branch.

1.6.1 (2017-11-27)
------------------

- Log very large (100k+) templates as dangerous. We've seen Jinja/Python
  segfault when users started using massively large (8MiB+) template files
  and this really isn't a good idea to start with. For example it increases
  computing time even at 100k quite a lot.

  We try to keep going, though. But in the case of segfaults the user sees a
  reasonable error message and knows what to do.

- Improve error reporting for missing our superfluous resources.

- Using File('foo') with implicitly picking up the source `foo` was confusing
  as it also would create (and enforce!) an empty file silently
  if the source did not exist.

  File('foo') now expects that the source `foo` exists and if you really want
  an empty file you have to explicitly say File('foo', content='') or if you
  don't care about the content use Presence('foo').

- Using File('foo') with implicitly picking up the source `foo` was confusing
  as it also would create (and enforce!) an empty file silently
  if the source did not exist.

  File('foo') now expects that the source `foo` exists and if you really want
  an empty file you have to explicitly say File('foo', content='') or if you
  don't care about the content use Presence('foo').

- Do not use '--always-copy' in VirtualEnv's any longer. This caused more pain
  and inconsistencies than it provided value.

1.6.0 (2017-11-07)
------------------

- Fix `self.log()` after `configure()` when no log was emitted during
  `configure()`

- The Purge component now includes directories.

  This is not made an option as previously trying to purge directories would
  have raised an error and thus made deployments unusable anyway. Relying
  on this would be considered at least very bad practice and was never promised
  anyway.

- The `rsync` update method now deletes files on the target.

- The supervisor component uses current versions of buildout and setuptools,
  so they still work after PyPI recently disabled http without ssl.


1.6.0a3 (2017-08-09)
--------------------

- Ignore link-local (fe80::/64) IPv6 addresses in ``batou.utils.Address``.

- Fix: Grant database.* when using ``mysql.Grant``


1.6.0a2 (2017-07-04)
--------------------

- General update of batou's dependencies.

- Fix: Don't update ``git.Clone`` when there are incoming changes but the
  revision is fixed.


1.6.0a1 (2017-07-03)
--------------------

- Add a way to override DNS lookup during configuration, to better support
  migration scenarios.


The change log of older releases is in `Historical releases`_.

.. _`Historical releases` : https://bitbucket.org/flyingcircus/batou/raw/tip/HISTORY.old.txt

