2.5.3 (2015-11-23)
------------------

- fix a bug that resulted from accessing a non-existing project on 
  root/pypi where upstream does not contain the X-PYPI-LAST-SERIAL
  header usually.  Thanks Matthias Bach.

2.5.2 (2015-11-20)
------------------

- recognize "pex" for redirections of user/index/NAME to
  user/index/+simple/NAME just like we do with pip/setuptools.

- fix py2 incompatibility introduced with 2.5.1 where we used
  a unicode header and pyramid only likes str-headers.

2.5.1 (2015-11-20)
------------------

- fix issue289: fix simple page serving on replicas


2.5.0 (2015-11-19)
------------------

- fix a regression of 2.3.0 which would cause many write-transactions
  for mirrored simple-page entries that didn't change.  Previous to the fix,
  accesses to mirrored simple pages will result in a new
  write-transaction every 30 minutes if the page is accessed which
  is likely on a somewhat busy site.  If you running with replicas
  it is recommended to do an an export/import cycle to remove all 
  the unneccessary writes that were produced since devpi-server-2.3.0.
  They delay the setup of new replicas considerably.

- add info about pypi_whitelist on simple page when root/pypi is blocked for
  a project.

- replica simple-page serving will not unneccessarily wait for new 
  simple-page entries to arrive at the replication side if the master 
  does not return any changes in the initial simple-page request.
  Previously a replica would wait for the replication-thread to catch
  up even if no links changed.

- fix setup.py to work on py34 and with LANG="C" environments.
  Thanks Jason R. Coombs.

- fix issue284: allow users who are listed in acl_upload to delete packages


2.4.0 (2015-11-11)
------------------

- NOTE: devpi-server-2.4 is compatible to data from devpi-server-2.3 but
  not the other way round.  Once you run devpi-server-2.4 you can not go
  back. It's always a good idea to make a backup before trying a new version :)

- NOTE: if you use ``--logger-cfg`` with .yaml files you will need to
  install pyyaml yourself as devpi-server-2.4 dropped it as a direct
  dependency as it does not install for win32/python3.5 and is 
  not needed for devpi-server operations except for logging configuration.
  Specifying a ``*.json`` file always works.

- add timeout to replica requests

- fix issue275: improve error message when a serverdir exists but has no
  version

- improve testing mechanics and name normalization related to storing doczips

- refine keyfs to provide lazy deep readonly-views for
  dict/set/list/tuple types by default.  This introduces safety because
  users (including plugins) of keyfs-values can only write/modify a value
  by explicitly getting it with readonly=False (thereby deep copying it)
  and setting it with the transaction.  It also allows to avoid unnecessary
  copy-operations when just reading values.

- fix issue283: pypi cache didn't work for replicas.

- performance improvements for simple pages with lots of releases.
  this also changed the db layout of the caching from pypi.python.org mirrors
  but will seamlessly work on older data, see NOTE at top.

- add "--profile-requests=NUM" option which turns on per-request
  profiling and will print out after NUM requests are executed
  and then restart profiling.

- fix tests for pypy. We officially support pypy now.


2.3.1 (2015-09-14)
------------------

- fix issue272: require devpi-common >= 2.0.6

- recognize newly registered PyPI projects, now that we don't watch the
  PyPI changelog anymore


2.3.0 (2015-09-10)
------------------

- switched to semantic versioning. Only major revisions will ever require an
  export/import cycle.

- fix issue260: Log identical upload message on level "info"

- Log upload trigger message on level "warn"

- The PyPI changelog isn't watched for changes anymore.
  Instead we cache release data for 30 minutes, this can be adjusted with the
  ``--mirror-cache-expiry`` option.

- fix issue251: Require and validate the "X-DEVPI-SERIAL" from master in
  replica thread

- fix issue258: fix FileReplicationError representation for proper logging

- fix issue256: if a project removes all releases from pypi or the project is
  deleted on pypi, we get a 404 back. In that case we now return an empty list
  of releases instead of returning an UpstreamError.

- Change nginx template to serve HEAD in addition to GET requests of files
  directly instead of proxying to devpi-server

- make keyfs cache size configurable via "--keyfs-cache-size" option and
  increase the default size to improve performance for installations with many
  writes


2.2.2 (2015-07-09)
------------------

- make replica thread more robust by catching more exceptions

- Remove duplicates in plugin version info

- track timestamps for event processing and replication and expose in /+status

- implement devpiweb_get_status_info hook for devpi-web >= 2.4.0 status messages

- UPGRADE NOTE: if devpi-web is installed, you have to request
  ``application/json`` for ``/+status``, or you might get a html page.

- address issue246: refuse uploading release files if they do not
  contain the version that was transferred with the metadata of
  the upload request.

- fix issue248: prevent change of index type after creation


2.2.1 (2015-05-20)
------------------

- fix issue237: fix wrong initial replica setup which would prevent
  initialization.  Thanks Stephan Erb.


2.2.0 (2015-05-13)
------------------

- add "--no-events" option to postpone running events after import
  to server start

- add new ``devpiserver_get_credentials`` plugin hook to extract credentials
  from request

- fix issue216: use sha256 instead of md5 checksums for serving own files
  (BACKWARD INCOMPATIBLE: needs export/import)

- parse arbitrary checksums from PyPI in preparation for 
  a pending change on pypi.python.org which will see 
  it serving sha256 checksums only.

- fix debug logging to actually show debug logs
  (logging was not properly reconfigured)

- make logging fully configurable via a config yaml/json
  (e.g., log to an external syslog server)

- fix issue221: avoid looking at file entries who are not part of a project
  (because they got deleted)

- fix issue217: systematically avoid using bytes in persisted dictionaries 
  to avoid any py2/py3 bytes/unicode issue.

- show actual instead of prospective replica serial in master /+status page 

- fix issue165: make off-line serving more robust when we know there is
  a change but pypi is currently not reachable (just serve the old cached
  links and issue an error to the logs)

- fix flaky devpi-server "--start" startup detection which would
  previously assume success if another server was already running on
  the address/port we want to run on. 

- fix importing of indexes with custom_data and importing of
  documentation which follows uncommon package naming

- fix issue228: when a stage is deleted don't veriy if it was root/pypi
  because you cannot delete root/pypi anyway.

- fix issue232: pypi-refresh now works better for projects which have  
  have a non-nomalized projectname, and also works better across replication.

- add new ``devpiserver_indexconfig_defaults`` plugin hook to add key names for
  settings in the index configuration.

- add new ``devpiserver_on_upload_sync`` plugin hook and use it to move the
  Jenkins triggering to the ``devpi-jenkins`` plugin.

- rename hooks: ``devpiserver_auth_credentials`` to
  ``devpiserver_get_credentials`` and ``devpiserver_run_commands`` to
  ``devpiserver_cmdline_run``.

- add ``--hard-links`` option to use hard links for releases and doc zips
  during export.

- speed up detecting replica/master mismatches and let a replica
  instantly die if it talks to a master that doesn't match the
  master id the replica is operating for.


2.1.5 (2015-03-16)
------------------

- fix devpi-ldap issue17: the push command directly used the username instead
  of using a general permission check, that caused groups in acl_upload to not
  be honored.
- fix issue171: "devpi push" of an existing package fails on non volatile index
  and overwrites on volatile.
- before devpi-server 2.1.5 it was possible to upload multiple documentation
  zip files for the same package version if the filename differed in case, this
  broke export and replication of server state and the documentation view.
  Now the newest upload will be used and older ones ignored.

- fix issue217: try harder to avoid using "bytes" in python2 to allow
  py2/py3 master/replica setups and generally have more type-uniform bytes.


2.1.4
----------------

- fix issue214: the whitelisting code stopped inheritance too early.

- fix regression: easy_install went to the full simple project list for a
  non existing project.

- When uploading an existing version to a non-volatile index, it's now a
  no op instead of an error if the content is identical. If the content is
  different, it's still an error.

- Uploading documentation to non-volatile indexes is now protected the same
  way as packages.

- added code to allow filtering on packages with stable version numbers.

- Change nginx template to set the X-outside-url header based on the
  requested URL.  This makes it possible to connect by IP address when
  the server name is not in DNS.

2.1.3
----------------

- fix replication when files with identical name are later changed. This can
  happen with toxresults. These kind of errors are tracked and when a later
  changeset fixes them, the error is removed. The errors are exposed through
  the /+status view of replica servers.

- fix issue179: protect deletion of versions 

- fix issue176: better allow replicas to export their state by removing 
  an obsolete way of normalizing project names upon export (nowadays,
  project names should be normalized already and normalization
  is bound to change/be refined further for devpi-server-2.2)

- fix replication when a "volatile" file like egg-links from
  repositories are involved: a master will not re-fetch such files
  but rather use the existing one if the request comes from a replica.

2.1.2
----------------

- fix issue172: avoid traceback when user/index/name/version is accessed.

- fix issue170: ensure that we parse the prospective pip-6.0 user agent
  string properly so that using the username/index url works with pip.
  Thanks Donald Stufft and Florian Schulze.

- fix issue158: redirect to normalized projectname for all GET views.

- fix issue169: change /+status to expose "event_serial" as "the last
  event serial that was processed".  document "serial" and
  "event-serial" and also refine internals wrt to "event-serial" so that
  it means the "last serial for which events have been processed"

2.1.1
----------------

- fix replication issue reported by a customer: if a replica lags
  behind a master and a file was created and then deleted meanwhile,
  the replica would get stuck with a FileReplicationError.  We now
  let the master report a 410 GONE code so that the replica knows
  it can safely proceed because the file was deleted later anyways.

- generate "systemd" configuration example when "--gen-config" is issued.
  Thanks Pavel Sedlak.

- fix issue109: fix relative URLs in simple index pages and 404 errors on
  uploading toxresults and downloading files when serving under an outside URL
  with a sub path.  Thanks to Joe Holloway for detailed infos.

- drop limitation on maximum documentation size. Body size is now only
  controlled by frontends such as nginx. Thanks Stephan Erb.

- use newer version of virtualenv for jenkins trigger. Thank brunsgaard.

2.1.0
----------------

- make replication more precise: if a file cannot be replicated,
  fail with an error log and try again in a few seconds.
  This helps to maintain a consistent replica and discover 
  the potential remaining bugs in the replication code.

- add who/when metadata to release files, doczips and test results
  and preserve it during push operations so that any such file provides
  some history which can be visualized via the web-plugin.  The metadata
  is also exposed via the json API (/USER/INDEX/PROJECTNAME[/VERSION])

- fix issue113: provide json status information at /+status including roles 
  and replica polling status, UUIDs of the repository. See new
  server status docs for more info.

- support for external authentication plugins: new devpiserver_auth_user 
  hook which plugins can implement for user/password validation and
  for providing group membership.

- support groups for acl_upload via the ":GROUPNAME" syntax. This
  requires an external authentication plugin that provides group
  information.

- on replicas return auth status for "+api" requests 
  by relaying to the master instead of using own key.

- add "--restrict-modify" option to specify users/groups which can create,
  delete and modify users and indices.

- make master/replica configuration more permanent and a bit safer
  against accidental errors: introduce "--role=auto" option, defaulting
  to determine the role from a previous invocation or the presence of the
  "--master-url" option if there was no previous invocation.  Also verify
  that a replica talks to the same master UUID as with previous requests.

- replaced hack from nginx template which abused "try_files" in "location /"
  with the recommended "error_page"/"return" combo.
  Thanks Jürgen Hermann

- change command line option "--master" to "--master-url"

- fix issue97: remove already deprecated --upgrade 
  option in favor of just using --export/--import

- actually store UTC in last_modified attribute of release files instead of
  the local time disguising as UTC.  preserve last_modified when pushing 
  a release.  

- fix exception when a static resource can't be found.

- address issue152: return a proper 400 "not registered" message instead
  of 500 when a doczip is uploaded without prior registration.

- add OSX/launchd example configuration when "--gen-config" is issued.
  thanks Sean Fisk.

- fix replica proxying: don't pass original host header when relaying a
  modifying request from replica to master.

- fix export error when a private project doesnt exist on pypi

- fix pushing of a release when it contains multiple tox results.

- fix "refresh" button on simple pages on replica sites

- fix an internal link code issue possibly affecting strangeness
  or exceptions with test result links

- be more tolerant when different indexes have different project names 
  all mapping to the same canonical project name.

- fix issue161: allow "{pkgversion}" to be part of a jenkins url

2.0.6
----------------

- log version information of all found plugins on startup.

2.0.5
----------------

- fix issue145: restrict devpi_common dependency so that a future
  "pip install 'devpi-server<2.0'" has a higher chance of working.

- fix issue144: fix interaction with requests-2.4.0 -- 
  use new devpi-common-offered "Errors" enumeration to check for exceptions.

- add '*' as possible option for pypi_whitelist to whitelist all packages of
  an index at once. Refs issue110

- outside url now works with paths, so you can host a devpi server on something
  like http://example.com/foo/

- fix issue84: during upload: if a previously registered name diverges from a freshly
  submitted one take the previously registered one.  This can happen when uploading
  wheels and in other situations.

- fix issue132: during exporting use whatever name comes with the
  versiondata instead of trying too hard to assert consistency of different
  versions.

- fix issue130: fix deletion of users so that is properly deletes all
  indexes and projects and files on each index.

2.0.4
----------------

- fix issue139: adapt to a recent change in pypi which now serves
  under URLs using normalized project names instead of the "real" registered name
  Thanks Timothy Allen and others for sorting this out.
  
- fix issue129: fix __init__ provided version and add a test that it always matches
  the one which pkg_resources sees (which gets it effectively from setup.py)

2.0.3
----------------

- fix issue128: a basic auth challenge needs to be sent back on submit when no
  authorization headers are sent with the post request.

2.0.2
----------------

- fix issue120: link to "upgrade" section from main index page.

- preserve http reason string for setup.py submit through replica proxying

- proper error message when "devpi push X" uses an X that comes from 
  a base index or is not existent

- fix issue121: depend on py-1.4.23 to fix python3.4 compatibility
  for a venusian/py34/py interaction import oddity.

- fix issue126: handle deletion of pypi project cache entries correctly 
  (i.e. ones that are triggered by "refresh" on simple page).

- Add special handling of ":ANONYMOUS:" user in acl_upload to allow anonymous
  submit.

- fix nginx template so that when used in a replica setting the master
  always answers HEAD requests without nginx short-cirtcuiting it.

- increase internal cache size to improve performance when many indexes
  and projects are served.

2.0.1
----------------

- fix regression which prevented the basic authentication for the setuptools
  upload/register commands to fail. Thanks Florian Schulze.

- fix issue106: better error messages on upload failures.
  And better allow auto-registration when uploading release files.

2.0.0
----------------

- major revamp of the internal core of devpi to support
  replication (both master and server code), a plugin architecture
  with the new devpi-web plugin providing a new web interface.
  Mostly done by Florian Schulze and Holger Krekel.

- moved all html views except for files and the simple index to new
  devpi-web package. Thanks to Florian Schulze for the PR.

- implement issue103: By default if you register a package in an index,
  no lookup on pypi is made for that package anymore. You have to add the
  package to the pypi_whitelist of the index to let pypi releases be mixed in.
  This is to prevent malicious uploads on pypi to overwrite private packages.

- change json api to get rid of the different meaning of URLs with and
  without a trailing slash. "/{user}/" is now the same as "/user" and always
  lists indices.  "/{user}/{index}" and "/{user}/{index}/ now always
  lists the index config and the contained per-stage projects
  (not inherited ones).

- switch the wsgi app to use Pyramid and waitress for WSGI serving.

- don't refresh releaselinks from the mirroring thread but rather
  rely on the next access to do it.

- fix issue98: deleting a project config or a project version now accepts
  names which map to the canonical name of a project.

- fix issue82 and fix issue81: root/pypi now provides the same
  attributes as normal indexes and results in a 409 MethodNotAllowed
  http code when trying to change the config.

- fix issue91: make serverport available as well. Thanks David Bonner.

- fix issue100: support large file uploads.  As we switched away from 
  bottle to pyramid, the body-size limit is gone.

- fix issue99: make "devpi-server --start" etc work when devpi-server
  is not itself on PATH (by using sys.argv[0] for finding the binary)

- fix issue84: uploading of wheels where the registered package name 
  has an underscore works despite a wheel's metadata carrying
  hyphens instead.  At submit-file time we now lookup the registered
  name and use that instead of assuming the one coming with the wheel
  is the correct one.

- add refresh button on root/pypi project simple index pages which clears the
  internal cache to force a refetch from PyPI.

- implement issue75: We use the custom X-Devpi-Auth header for authentication
  now, instead of overwriting the Authentication header.

- added experimental support for using client certificates when running as a
  replica of a server running behind a proxy

1.2.2
----------------

- fix issue78: create less directories for pypi package files by
  splitting the md5 part into two. Avoids TooManyLinks errors in
  large installations.

- fix --stop on windows.  Thanks to Christian Ullrich for the PR.

- fix issue79: interoperate with pip-1.5 by interpreting accept
  header as "*/*" as html_preferred.  Thanks Richard Jones.

- use latest virtualenv-1.11.2 when bootstrapping on jenkins

- fix issue89: adapt for bottle changes in 0.12.1.  Thanks 
  Alexey Sveshnikov.

1.2.1
----------------

- fix an import issue for doc files which were wrongly tied to a newer
  version of a base index. now version "auto" detection for storing
  doc files only works within a stage.  Thanks Laurent Brack for bringing
  it up and providing the repo.

- fix issue66: api endpoints now also respect --outside-url setting
  so that you can serve devpi from a subpath.  Thanks for Fabian
  Snovna for reporting and analysis.

- fix issue63: skip egg links that go to a directory (this requires
  doing a SVN checkout which devpi-server does not do).  Thanks
  Ken Jung for analyzing the problem.

- fix issue68: don't derive metadata from filename but instead
  look it up in metadata or submitted form.

- fix cache-invalidation when normalized_project_name != real_name
  (e.g. for Django but also many others). addresses issue59.

- add newline to simple list output for better human readability of the
  page (thanks Brandon Maister)

- make xmlrpc calls to pypi's changelog API use "requests" sessions 
  so that http proxies are respected there as well (fixes issue58).
  thanks to riehlm for identifying the problem and testing the fix.

- internally refactor and consolidate mocking against requests library

- --upgrade-state will upgrade now between major.minor/major.minor+1 changes.

1.2
----------------

- serve links to files on simple pages and index root as relative
  paths so that it works more nicely with proxy-pass server setups.
  fixes issue56.

- make devpi-server and devpi-common python3.3 compatible, addresses
  issue57

- use system http/s proxy settings from devpi-server.  fixes issue58.

- refactor locations to allow nginx serving static files more directly.
  Also updated nginx template accordingly.

- rework "--upgrade-state" to detect the state version of the server dir
  and create an appropriate virtualenv with a devpi-server install in order
  to export data, and then import that version.

- allow to use /user/index as indexserver url for pip/easy_install by
  redirecting non-json queries to /user/index/PROJ[/] to 
  /user/index/+simple/PROJ/

- fix submission of multi-value fields like "classifiers" or "platform"
  (previously they would be wrongly collapsed to become the last value of a list)

- fix normalization import/export issue: pypi names take precendence
  for defining the "real" name of a project.

- always store uploaded documentation with a version.  While 
  "devpi upload" will make sure to pass in the version, "setup.py upload_docs"
  will not pass in a version.  In the latter case, devpi-server assumes
  the documentation belongs to the highest yet registered release.
  This change requires exporting with devpi-1.1 and importing with devpi-1.2
  in order to properly store versioned docs internally.

- use types/url/metadata/validation functionality of new depdency devpi_common 

- internal cleanup using pytest-flakes

- make devpi-server use a proper UserAgent string

1.1
----------------

- systematically test pypi/mirror code against all 34K pypi projects
  so that we know that all http/https installable archive links that pypi offers 
  are correctly recognized by devpi-server's root/pypi index.

- if no pypi mirror state is known, devpi-server now calls
  pypi to obtain names/serials.  It will fail to start
  if no such initial connection is possible.  Once a first mirror
  state is known, subsequent devpi-server starts will
  not perform this initial query.

- speed up and make more reliable all operations on private packages which
  have no pypi.python.org release: we can now determine if a project
  exists on pypi and under which name exactly without
  remote queries or redirects to pypi.python.org.

- fix issue45: register/upload package names are now properly 
  validated and redirects take place if e.g. a project was
  registered as "name-sub" and "+simple/name_sub" is queried.

- new --upgrade-state command to allow for easy and safe
  in-place upgrading of server state.  This is not guranteed
  to be possible for all future releases which might require
  using --export with an older version and --import with a newer
  version.

- new --export/--import options to dump and import server contents:
  users, indexes, docs, release files and (test) attachments.
  Note that root/pypi (PyPI-caching information) will not be exported/imported.
  (maybe in the future if there is demand). 

- fix issue49: both push and import/export now support docfiles.  Note,
  however, that docfiles relate to a project as a whole and are not tied
  to a particular version.  This property is inherited from the PyPI
  standard upload_docs action and cannot be changed without interfering
  or replacing the upload_docs protocol of setuptools/sphinx.

- fix issue51: return 200 code if release file is successfully uploaded 
  but jenkins could not be triggered (previously returned 500)

- reject simple/NAME if NAME contains non-ascii characters
  (PEP426 naming rules)

- devpi-server now returns a X-DEVPI-API-VERSION and
  X-DEVPI-SERVER-VERSION header.  For future incompatible changes 
  these versions allow clients to reject interactions.

- also add ".serverversion" file and write it if it does not
  exist, and make devpi-server use it to verify if
  operating on a compatible server data layout, otherwise bail out.

- address issue43: --gendeploy now uses pip without --pre and
  explicitely instructs pip to install the exact same version 
  of devpi-server with which --gendeploy is issued.

- fix issue46 -- for GET /root/pypi/ only show a link to the
  simple page instead of computing "latest in-stage packages"
  which is only useful for devpi's user indices.

- fix issue37: upload with expired login causes proper 401


1.0
----------------

- rename "--datadir" to "serverdir" to better match
  the also picked up DEVPI_SERVERDIR environment variable.

- fix a strange effect in that sometimes tools ask to receive
  a package url with a "#md5=..." arriving at the server side.
  We now strip that part out before trying to serve the file.

- on startup don't create any initial indexes other 
  than the "root/pypi" pypi caching mirror.

- introduce ``--start``, ``--stop`` and ``--log`` commands for
  controling a background devpi-server run. (these commands
  previously were implemented with the devpi-client and the "server"
  sub command)

- fix issue27: provide full list of pypi names in root/pypi's simple
  view (and simple pages from inheriting indices)

- default to "eventlet" server when creating deployment with --gendeploy

- fix issue25: return 403 Forbidden when trying to delete the root user.

- fix name mangling issue for pypi-cache: "project_name*" is now matched
  correctly when a lookup for "project-name" happens.

- fix issue22: don't bypass CDN by default, rather provide an
  "--bypass-cdn" option to do it (in case you have cache-invalidation troubles)

- fix issue20 and fix issue23: normalize index specs internally ("/root/dev" ->
  "root/dev") and check if base indices exist.

- add Jenkins build job triggering for running the tests for a package
  through tox.

- inheritance cleanup: inherited versions for a project are now shadowed
  and not shown anymore with get_releaselinks() or in +simple pages
  if the "basename" is exactly shadowed.

- fix issue16: enrich projectconfig json with a "+shadow" file which
  lists shadowed "versions"

- initial wheel support: accept "whl" uploads and support caching 
  of whl files from pypi.python.org

- implemented internal push operation between devpi indexes

- show "docs" link if documentation has been uploaded

- pushing releases to pypi.python.org will now correctly 
  report the filetype/pyversion in the metadata.

- add setting of acl_upload for indexes.   Only the owning
  user and acl_upload users may upload releases, files 
  or documentation to an index.

- add --passwd USER option for setting a user's password server-side

- don't require email setting for creating users

0.9.4
----------------

- fix issue where lookups into subpages of the simple index
  (simple/NAME/VER) would not trigger a 404 as they should.

0.9.3
----------------

- fixed issue9: caching of packages where upstream provides no
  last-modified header now works.

- fixed issue8: only http/https archives are allowed and other
  schemes (such as ftp) are silently skipped

- added support for REST DELETE methods of projects and versions on an index

- added "argcomplete" support for tab completion on options
  (thanks to Anthon van der Neut)

0.9.2
----------------

- fix /USER/INDEXNAME root views to contain only latest in-stage packages

- make +api calls return bases so that "devpi use" can show them

0.9.1
----------------

- return 404 for submits to root/pypi

- properly sorted release file links on stage indexes

- "push" method on indexes for transfering release files to another
  pypi index

- properly handle urls from indexes with ~ and other special chars

- fix root/pypi and root/dev page serving in various cases

0.9.0
----------------

- implement more precise pypi.python.org CDN/caching invalidation
  technique, using the most recent PyPI API ("X-PYPI-LAST-SERIAL" 
  on simple pages and xmlrpc.list_packages_with_serial()).
  also simplify background tasks to become only one async 
  task doing both changelog checking and triggering updates.

- use a filesystem based storage mechanism instead of Redis

- prevent automatic decoding of gzip files in case of content encoding

- XXX preliminarily introduce new int/dev, int/prod indexes where int/dev 
  inherits packages from both int/prod and ext/pypi.  

- XXX introduce preliminary support for client-side "devpi" workflow tool

- allow uploads to int/dev

- if no crontab exists for a user, simply create one
  instead of erroring out.  Thanks Andi Albrecht.

- internal refactoring for better organisation of redis access


0.8.5
----------------

- re-fix issue6: tests and fixes for django-debug-toolbar
  where recursive scraping was accidentally triggered

- remove fine-grained http caching for now because caching 
  on the index level seems enough.  This avoids an issues that
  occured when installing icalendar and also some offline/online
  state change issues.  

- added a note to README for how to upgrade --gendeploy installs

- remove general dependency on virtualenv which 
  is only needed for --gendeploy.  Adapt docs accordingly.

- remove dependency on pip by shifting the relevant 
  scraping bits directly to _pip.py

0.8.4
----------------

- use pip's link parser rather than beautifulsoup
  to benefit from link parsing code tested out 
  and maintained in the wild.  Adapt README.

- skip a test if crontab command is not present

  (thanks Markus Zapke-Gruendemann)

- release 0.8.3 is not useable

0.8.2
------------------------------

- fix issue6 - some edge cases for link parsing uncovered
  by BeautifulSoup and CouchApp installs. Thanks Anton Baklanov.

- fix issue5 - require minimal versions for deps, thanks Andi Albrecht

- remove superflous include lines in MANIFEST.in


0.8.1
------------------------------

- fix: change gendeployed supervisord.conf  to not autostart
  processes on "devpi-ctl" invocations.  "devpi-ctl help"
  would autostart the processes after a shutdown which is
  not very intuitive.  This is actually compatible with the 
  documentation.

- refactor --gendeploy related code to be in gendeploy.py

- fix: fixate path of devpi-server in gendeployed configuration
  to point to the freshly installed devpi-server. also add
  a note to the README.

0.8
------------------------------

- introduce "--gendeploy=TARGETDIR" for generating a virtualenv
  directory with supervisor-based configuration in TARGETDIR/etc
  and a TARGETDIR/bin/devpi-ctl helper to control the running
  of devpi-server and redis-server processes.

- fix issue4: keep the "changelog" thread active across
  network/reachability errors.  Thanks Laurent Brack.

- use argparse instead of optparse, simplify and group options

- fix python2.6 and simplify logging configuration

0.7
---

-  Initial release

