# ChangeLog for app-vim/uptime
# Copyright 2000-2007 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-vim/uptime/ChangeLog,v 1.17 2007/02/22 00:11:41 peper Exp $

  22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
  Transition to Manifest2.

  07 Apr 2006; Bryan Østergaard <kloeri@gentoo.org metadata.xml:
  Remove ciaranm from metadata.xml.

  07 Dec 2005; Marcus D. Hanwell <cryos@gentoo.org> uptime-1.3.ebuild:
  Stable on amd64.

  30 Sep 2005; Luis Medinas <metalgod@gentoo.org> uptime-1.3.ebuild:
  Added ~amd64 keywords.

  24 Apr 2005; Michael Hanselmann <hansmi@gentoo.org> uptime-1.3.ebuild:
  Stable on ppc.

  29 Dec 2004; Ciaran McCreesh <ciaranm@gentoo.org> -uptime-1.1.ebuild,
  -uptime-1.2.ebuild:
  Tidy up

  07 Oct 2004; Ciaran McCreesh <ciaranm@gentoo.org> uptime-1.3.ebuild:
  x86 stable

  08 Sep 2004; Ian Leitch <port001@gentoo.org> uptime-1.3.ebuild:
  Marked unstable on x86, #63235

  05 Sep 2004; Ciaran McCreesh <ciaranm@gentoo.org> uptime-1.3.ebuild:
  Added help text, bug #62559

  20 Jun 2004; Ciaran McCreesh <ciaranm@gentoo.org> uptime-1.3.ebuild:
  Stable on sparc, mips

*uptime-1.3 (22 May 2004)

  22 May 2004; Ciaran McCreesh <ciaranm@gentoo.org> +uptime-1.3.ebuild:
  Version bump

*uptime-1.2 (22 May 2004)

  22 May 2004; Ciaran McCreesh <ciaranm@gentoo.org> +uptime-1.2.ebuild:
  Version bump

  12 May 2004; Ciaran McCreesh <ciaranm@gentoo.org> uptime-1.1.ebuild:
  Stable on sparc, mips

  23 Apr 2004; David Holm <dholm@gentoo.org> uptime-1.1.ebuild:
  Added to ~ppc.

*uptime-1.1 (22 Apr 2004)

  22 Apr 2004; Ciaran McCreesh <ciaranm@gentoo.org> +metadata.xml,
  +uptime-1.1.ebuild:
  New package

