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

*git-annex-5.20150710 (09 Aug 2015)
*git-annex-5.20150617 (09 Aug 2015)
*git-annex-5.20150327 (09 Aug 2015)
*git-annex-5.20150219 (09 Aug 2015)
*git-annex-5.20141231 (09 Aug 2015)
*git-annex-5.20141203 (09 Aug 2015)
*git-annex-5.20141125 (09 Aug 2015)
*git-annex-5.20140927 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +files/git-annex.xpm,
  +git-annex-5.20140927.ebuild, +git-annex-5.20141125.ebuild,
  +git-annex-5.20141203.ebuild, +git-annex-5.20141231.ebuild,
  +git-annex-5.20150219.ebuild, +git-annex-5.20150327.ebuild,
  +git-annex-5.20150617.ebuild, +git-annex-5.20150710.ebuild, +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

*git-annex-5.20150731 (09 Aug 2015)

  09 Aug 2015; Sergei Trofimovich <slyfox@gentoo.org>
  +files/git-annex-5.20150731-no-strange-installs.patch,
  +git-annex-5.20150731.ebuild, metadata.xml:
  bump up to 5.20150731

  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

*git-annex-5.20151218 (22 Jan 2016)

  22 Jan 2016; Sergei Trofimovich <slyfox@gentoo.org>
  +git-annex-5.20151218.ebuild, metadata.xml:
  bump up to 5.20151218

  Package-Manager: portage-2.2.27

  22 Jan 2016; Sergei Trofimovich <slyfox@gentoo.org>
  +files/git-annex-6.20160114-QC-2.8.2.patch, git-annex-5.20151218.ebuild:
  fix against QC-2.8.2, bug #572504

  QuickCheck-2.8.2 introduced default instances for
  Data.Map and Data.Set. git-annex happened to provide
  those as well.

  Reported-by: bugtrack@web.de
  Reported-by:  Matthias Maier
  Bug: https://bugs.gentoo.org/572504

  Package-Manager: portage-2.2.27

  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)

*git-annex-6.20160126 (06 Feb 2016)

  06 Feb 2016; Sergei Trofimovich <slyfox@gentoo.org>
  +git-annex-6.20160126.ebuild, metadata.xml:
  bump up to 6.20160126, bug #572996

  While at it restored dependencies on non-haskell packages:
      git, ikiwiki, perl, rsync

  Reported-by: Toralf Förster
  Bug: https://bugs.gentoo.org/572996

  Package-Manager: portage-2.2.27

  06 Feb 2016; Sergei Trofimovich <slyfox@gentoo.org>
  -git-annex-5.20140927.ebuild, -git-annex-5.20141125.ebuild,
  -git-annex-5.20141203.ebuild, -git-annex-5.20141231.ebuild,
  -git-annex-5.20150219.ebuild, -git-annex-5.20150327.ebuild,
  -git-annex-5.20150617.ebuild, -git-annex-5.20150710.ebuild:
  drop old

  Package-Manager: portage-2.2.27

  03 Apr 2016; Sergei Trofimovich <slyfox@gentoo.org>
  -git-annex-5.20150731.ebuild, -git-annex-5.20151218.ebuild:
  drop old

  Package-Manager: portage-2.2.28

  03 Apr 2016; Sergei Trofimovich <slyfox@gentoo.org> metadata.xml:
  drop unused local USE-descriptions

  Package-Manager: portage-2.2.28

*git-annex-6.20160318 (03 Apr 2016)

  03 Apr 2016; Sergei Trofimovich <slyfox@gentoo.org>
  +git-annex-6.20160318.ebuild, metadata.xml:
  bump up to 6.20160318

  Package-Manager: portage-2.2.28

*git-annex-6.20160419 (11 May 2016)

  11 May 2016; Sergei Trofimovich <slyfox@gentoo.org>
  +git-annex-6.20160419.ebuild:
  bump up to 6.20160419

  Package-Manager: portage-2.2.28

  16 Aug 2016; Sergei Trofimovich <slyfox@gentoo.org>
  git-annex-6.20160126.ebuild, git-annex-6.20160318.ebuild,
  git-annex-6.20160419.ebuild:
  restore lsof dependency, bug #591252

  Reporter-by: Devrin Talen
  Bug: https://bugs.gentoo.org/591252

  Package-Manager: portage-2.2.27_p10

*git-annex-6.20160923 (24 Sep 2016)

  24 Sep 2016; Sergei Trofimovich <slyfox@gentoo.org> +files/git-annex.bash,
  +git-annex-6.20160923.ebuild:
  bump up to 6.20160923, bug #591831

  Reported-by: Jonas Stein
  Package-Manager: portage-2.3.1

*git-annex-6.20160923-r1 (24 Sep 2016)

  24 Sep 2016; Sergei Trofimovich <slyfox@gentoo.org>
  +git-annex-6.20160923-r1.ebuild:
  restore manpage installation

  Drop git-annex-5.20150731-no-strange-installs.patch
  as git-annex is now respecting $(DISTDIR). Woohoo!

  Reported-by: Jan Kundrát
  Bug: https://github.com/gentoo-haskell/gentoo-haskell/issues/506

  Package-Manager: portage-2.3.1

