# ChangeLog for dev-ros/rosservice
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*rosservice-9999 (22 Sep 2015)
*rosservice-1.11.14 (22 Sep 2015)

  22 Sep 2015; Alexis Ballier <aballier@gentoo.org> +metadata.xml,
  +rosservice-1.11.14.ebuild, +rosservice-9999.ebuild:
  Initial import. Ebuild by me.

  Package-Manager: portage-2.2.21

*rosservice-1.11.15 (15 Oct 2015)

  15 Oct 2015; Alexis Ballier <aballier@gentoo.org>
  +rosservice-1.11.15.ebuild:
  Bump to 1.11.15.

  Package-Manager: portage-2.2.23

  16 Oct 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Update remote-ids

  Signed-off-by: Justin Lecher <jlec@gentoo.org>

*rosservice-1.11.16 (14 Nov 2015)

  14 Nov 2015; Alexis Ballier <aballier@gentoo.org>
  +rosservice-1.11.16.ebuild:
  Bump to 1.11.16.

  Package-Manager: portage-2.2.24
  Signed-off-by: Alexis Ballier <aballier@gentoo.org>

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Unify quoting in metadata.xml files for machine processing

  Force unified quoting in all metadata.xml files since lxml does not
  preserve original use of single and double quotes. Ensuring unified
  quoting before the process allows distinguishing the GLEP 67-related
  metadata.xml changes from unrelated quoting changes.

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Replace all herds with appropriate projects (GLEP 67)

  Replace all uses of herd with appropriate project maintainers, or no
  maintainers in case of herds requested to be disbanded.

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Set appropriate maintainer types in metadata.xml (GLEP 67)

*rosservice-1.11.17 (14 Mar 2016)

  14 Mar 2016; Alexis Ballier <aballier@gentoo.org>
  +rosservice-1.11.17.ebuild:
  Bump to 1.11.17.

  Package-Manager: portage-2.2.28
  Signed-off-by: Alexis Ballier <aballier@gentoo.org>

*rosservice-1.12.0 (19 Mar 2016)

  19 Mar 2016; Alexis Ballier <aballier@gentoo.org> +rosservice-1.12.0.ebuild:
  Bump to 1.12.0.

  Package-Manager: portage-2.2.28
  Signed-off-by: Alexis Ballier <aballier@gentoo.org>

*rosservice-1.12.1 (21 Apr 2016)

  21 Apr 2016; Alexis Ballier <aballier@gentoo.org> +rosservice-1.12.1.ebuild:
  Bump to 1.12.1.

  Package-Manager: portage-2.2.28

*rosservice-1.12.2 (06 Jun 2016)

  06 Jun 2016; Alexis Ballier <aballier@gentoo.org> +rosservice-1.12.2.ebuild:
  Bump to 1.12.2.

  Package-Manager: portage-2.3.0_rc1

*rosservice-1.12.4 (20 Sep 2016)

  20 Sep 2016; Alexis Ballier <aballier@gentoo.org> +rosservice-1.12.4.ebuild:
  Bump to 1.12.4.

  Package-Manager: portage-2.3.1

*rosservice-1.12.5 (03 Oct 2016)

  03 Oct 2016; Alexis Ballier <aballier@gentoo.org> +rosservice-1.12.5.ebuild:
  Bump to 1.12.5.

  Package-Manager: portage-2.3.1

