# ChangeLog for app-admin/consul
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*consul-9999 (09 Aug 2015)
*consul-0.5.2-r1 (09 Aug 2015)
*consul-0.5.2 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +consul-0.5.2.ebuild,
  +consul-0.5.2-r1.ebuild, +consul-9999.ebuild, +files/bootstrap.json.example,
  +files/consul.confd, +files/consul.initd, +files/consul.service,
  +files/data-dir.json.example, +files/ui-dir.json.example, +metadata.xml:
  proj/gentoo: Initial commit

  This commit represents a new era for Gentoo:
  Storing the gentoo-x86 tree in Git, as converted from CVS.

  This commit is the start of the NEW history.
  Any historical data is intended to be grafted onto this point.

  Creation process:
  1. Take final CVS checkout snapshot
  2. Remove ALL ChangeLog* files
  3. Transform all Manifests to thin
  4. Remove empty Manifests
  5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
  5.1. Do not touch files with -kb/-ko keyword flags.

  Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
  X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration
  tests
  X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this
  project
  X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo
  developer, wrote Git features for the migration
  X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve
  cvs2svn
  X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
  X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014
  work in migration
  X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
  X-Thanks: All of other Gentoo developers - many ideas and lots of paint on
  the bikeshed

  10 Aug 2015; Zac Medico <zmedico@gentoo.org> consul-0.5.2.ebuild,
  consul-0.5.2-r1.ebuild, consul-9999.ebuild:
  inherit go-build for GOPATH setting with get_golibdir_gopath

  Package-Manager: portage-2.2.20

  24 Aug 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Use https by default

  Convert all URLs for sites supporting encrypted connections from http to
  https

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

  24 Aug 2015; Mike Gilbert <floppym@gentoo.org> metadata.xml:
  Revert DOCTYPE SYSTEM https changes in metadata.xml

  repoman does not yet accept the https version.
  This partially reverts eaaface92ee81f30a6ac66fe7acbcc42c00dc450.

  Bug: https://bugs.gentoo.org/552720

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

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

  22 Jan 2016; Zac Medico <zmedico@gentoo.org> -consul-0.5.2.ebuild:
  remove old version

  Package-Manager: portage-2.2.27

*consul-0.6.3 (22 Jan 2016)

  22 Jan 2016; Zac Medico <zmedico@gentoo.org> consul-0.5.2-r1.ebuild,
  +consul-0.6.3.ebuild, +files/ui.json.example:
  version bump to 0.6.3

  Package-Manager: portage-2.2.27

  22 Jan 2016; Justin Lecher <jlec@gentoo.org> consul-0.5.2-r1.ebuild,
  consul-0.6.3.ebuild, consul-9999.ebuild, metadata.xml:
  Use egit_clean to clean workdir

  * Sort global scope according to skel.ebuild
  * Add missing die

  Package-Manager: portage-2.2.27
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  23 Jan 2016; Zac Medico <zmedico@gentoo.org> consul-0.5.2-r1.ebuild,
  consul-0.6.3.ebuild, consul-9999.ebuild:
  use go env GOOS and GOARCH

  Package-Manager: portage-2.2.27

  23 Jan 2016; Zac Medico <zmedico@gentoo.org> consul-0.5.2-r1.ebuild,
  consul-0.6.3.ebuild:
  inherit git-r3 for egit_clean

  Package-Manager: portage-2.2.27

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

  20 Feb 2016; Zac Medico <zmedico@gentoo.org> consul-0.5.2-r1.ebuild,
  consul-0.6.3.ebuild, consul-9999.ebuild:
  add app-arch/zip to DEPEND

  Package-Manager: portage-2.2.27

  20 Feb 2016; Zac Medico <zmedico@gentoo.org> consul-0.6.3.ebuild:
  add missing go-sys dep to 0.6.3 (bug 575204)

  Package-Manager: portage-2.2.27

  21 Feb 2016; Zac Medico <zmedico@gentoo.org> consul-0.5.2-r1.ebuild,
  consul-0.6.3.ebuild, consul-9999.ebuild:
  use get_golibdir for library installation

  Package-Manager: portage-2.2.27

  21 Feb 2016; Zac Medico <zmedico@gentoo.org> consul-0.5.2-r1.ebuild,
  consul-0.6.3.ebuild:
  remove broken egit_clean calls

  Package-Manager: portage-2.2.27

*consul-0.6.3-r1 (21 Feb 2016)
*consul-0.5.2-r2 (21 Feb 2016)

  21 Feb 2016; Zac Medico <zmedico@gentoo.org> -consul-0.5.2-r1.ebuild,
  +consul-0.5.2-r2.ebuild, -consul-0.6.3.ebuild, +consul-0.6.3-r1.ebuild:
  revison bump ebuilds for bug #575272

  Package-Manager: portage-2.2.27

*consul-0.6.4 (21 Mar 2016)

  21 Mar 2016; Zac Medico <zmedico@gentoo.org> +consul-0.6.4.ebuild:
  version bump to 0.6.4

  Package-Manager: portage-2.2.28

