Changes in 0.14.11:
  * Local systems store config files in sql tables now.  Use
    /usr/share/conary/convertcontents to convert to the new data store.
    Note that this means that any *config file* managed by conary can be
    read through the main SQL database file in /var/lib/conarydb/conarydb.
  * Actually check build requirements before building, use --no-deps to 
    ignore the check.
  * make conary q and conary update convert all flavors to  strong flavors
    for comparison; ~readline becomes readline, and ~!readline becomes 
    !readline, so that conary q foo[readline] works as expected.
  * no default flavor is presumed for local operations (erase, q)
  * changed getPackageBranchPathIds to base64 encode the filename in
    order to ensure that the resulting XML-RPC will be UTF-8 clean.
  * localoutofdate renamed to "yuck", a man page added, and the script
    and man page are now installed on the system.
  * rename --use-macro and --use-flavor options for cook to --macro
    and --flavor
  * support new cook syntax: cvc cook <trove>[flavor] to set the troves flavor
    while cooking
  * fixed rq output when iterating over subtroves within a trove or group
  * TroveNotFound exceptions are handled gracefully in cvc.  'conary cook
    foo' will no longer traceback when foo:souce could not be found in
    the repository.
  * Unsynchronized updates work for packages and groups
  * The database is now opened with a 30 second timeout.  This should allow
    better concurrency.
  * added --exclude-troves and excludeTroves conaryrc entry
  * repository .cnr file's commitAction configuration item now has a
    flavor provided to it as %(flavor)s and the default changemail
    script uses it.
  * don't allow the same label to appear twice in sequence in a version

Changes in 0.14.10:
  * FlavorMap sense wasn't set right for base instruction set

Changes in 0.14.9:
  * Shadow Branch objects didn't return parent branches properly. This
    caused incorrect pathId's to show up on cook on shallow shadows.
  * Reworked the code which looks up pathIds to take advantage of a new
    server call (getPackageBranchPathIds) which is faster and looks on
    both the full branch and full parent branches.
  * The Apache repository server now allows mixed ssl and normal requests.
  * Added forceSSL option to apache repository server configuration.
  * The network client code now supports accessing servers over https.
  * Proper salts are used for user passwords.
  * The default value for macros.optflags is "-O2" again, instead of
    an empty string.
  * The http handler in the conary server now sends back proper error
    codes in the case of an authentication error.

Changes in 0.14.8:
  * Fixed bug where streams for commits on distributed branches didn't always
    get set properly
  * reworked findTrove() in repository to return (name, version, flavor)
    tuples instead of full troves
  * Split conary.1 into conary.1 and cvc.1
  * Allow cvc cook trove=<version>
  * remove --target-branch cook option
  * added default :devellib component for architecture-specific devel bits,
    made all files with an architecture-specific multilib path that are
    not in :devellib go into :lib instead of having many of them fall into
    :runtime

Changes in 0.14.7:
  * ELF libraries with sonames that have paths in them are now handled
    sanely, by removing the path (and complaining...)
  * split march into targetArch and unameArch -- requires a new distro-release
  * rework command line arguments to shadow and branch to match how versions
    are normally specified, and allow a flavor specificatoin
  * added --sources to branch and shadow commands

Changes in 0.14.6:
  * fix for generating changesets between repositories
  * policies that look at shared libraries are now multilib-aware,
    fixing shared library permissions and dependency provision
  * autosources didn't work when committing across a shadow

Changes in 0.14.5:
  * allow groups to contain troves with conflicting flavors
  * make repository-side change set caching less buggy
  * fix config files changing to symlinks
  * allow duplicate items to be specified for erase and update
  * changeset command allows flavors to be specified
  * repquery --info shows trove flavor
  * fixed bug with not matching base instruction set flavor

Changes in 0.14.4:
  * several bugs in the 'cvc update' code paths have been fixed
    - it no longer retrieves autosource sources
    - the CONARY file now gets populated entries for autosource files
    - the fileids in CONARY files are now correct after an update
  * several bugs in error handling have been fixed
  * several docstrings have been fixed
  * packagepolicy now automatically adds usermode:runtime requirement to files
    that are dangling symlinks to consolehelper
  * the templating engine for the web interface to the server has been
    changed to kid; kid and elementtree are now required to run a server.
  * the web interface now supports limited editing of ACLs
  * the server now only supports protocol version 26 (it was a mistake
    to leave in support for 24 and 25)
  * old code that supported ancient protocol versions has been
    removed from the server
  * recipes loaded from within recipes follow the label= argument if
    it is given

Changes in 0.14.3:
  * Fixed usage message to no longer print 1 at bottom; improved option
    handling error messages
  * Fixed versions when branching from a shadow
  * The lookaside cache now fetches from the repository into the right
    location and with the right permissions, and fetches manually-added
    as well as automatically-added sources.
  * In recipes, addSource can now take dest='/path/to/file'
  * Change %(servicedir)s location from /var to /srv

Changes in 0.14.2:
  * contents are now stored as diffs when either the new file or the
    old file is empty
  * diffs of numeric streams can now express a change to the value of
    None

Changes in 0.14.1:
  * fixed a typo in lookaside.py that prevented commits from working
  * added a descriptive exception message when fileids in your database
    do not match the fileids in the repository

Changes in 0.14.0
  * added ability for changesets to ignore unknown fields in some places
    (making changesets somewhat less brittle)
  * fixed bug in source handling with non-recipe files in the local directory
  * added framework for generic trove information
  * checkout no longer pulls all sources from the repository
  * used new trove info framework to store the source trove, build time,
    total file size, and version of conary used when building binary
    troves.
  * lib/elf.c no longer uses mmap to read elf files.  Some architectures
    may have elf structures on disk that are not naturally aligned, and
    using mmap to read them won't work.
  * the repository code now uses a 30 second timeout when attempting to
    access the database
  * Have architectures control their march values in the architecture
    config files.
  * add Arch.getCurrentArch() to get the major architecture that is in use
    during a build

Changes in 0.13.3
  * added ability for a contents log file (makes syncing much easier)
  * file tags weren't used on updates
  * "description update" tag action replaced with "handler update"
    (which gets called when either the tag description or the tag handler gets
    updated)
  * "description preremove" tag action replaced with "handler preremove"
  * sources get committed automatically

Changes in 0.13.2
  * reworked use.py code almost entirely.
  * added /etc/conary/arch directory to contain architecture definition files;
    changed /etc/conary/use files to contain more information about how 
    flags are used when building.  Flag definitions are no longer in use.py.
  * fixed buildFlavor so that it affects cooking packages as well as 
    determining troves to include when cooking a group
  * changed --noclean to --no-clean to be in line with the rest of the 
    options; documented it
  * removed Use.foo and Flags.foo options from conary config files.  Macros.foo
    is still there.  Added --use-flavor option to cvc cook which takes a flavor 
    and overrides the build flavor while cooking.  
  * groups now take flavor strings to determine the flavor of a trove to 
    include, not flag sets.
  * dependencies resolution is flavor sensitive now (and uses flavor
    affinity)
  * added trove version/release number to dependency messages
  * renamed classes and methods in versions.py to match current terminology

Changes in 0.13.1
  * repquery wasn't filtering by flavor properly (exposed by a bug fix 
    in 0.13.0)

Changes in 0.13.0
  * removed importrpm.py
  * diffs between a file object that has a non-empty provides or requires
    to a file object that has an empty provides or requires are now properly
    generated and applied.
  * added checks to validate merged file objects against the fileIds
    in the changeset
  * implemented shadows
  * framework for redirects in place
  * removed (unused) parentId field from Branches repository table

Changes in 0.12.5
  * reworked dependency resolution a bit for a big speedup in the server
  * moved destdir to %(builddir)s/_ROOT_
  * made macros.destdir available during the unpacking of sources 
  * source commands (r.addAction, etc.), if given absolute paths for 
    their dir keywords, will perform their actions in the destdir instead
    of the builddir
  * most build commands (r.Make, r.Create, etc.), will work in either builddir
    or destdir, depending on whether they are given relative or absolute 
    paths
  * add dir keyword for r.Run
  * include /usr/bin/rpm2cpio

Changes in 0.12.4
  * set more arch flags for x86 and x86_64
  * troves can have multiple instruction set flavors now
  * flipped around use: and is: sections of flavor strings
  * Version and Branch object completely separated

Changes in 0.12.3
  * conary verify updated to new API so that it works again
  * conary q (with no arguments) works again

Changes in 0.12.2
  * added getTroveVersionsByBranch
  * make better use of _mergeQueryResults
  * moved version affinity into findTrove from ConaryClient
  * fixed branch affinity so that it's actually branch affinity instead of
    label affinity
  * rdiff changes for 0.12.0 broke negative numbers for oldVersion
  * rdiff diff'd based on label instead of branch
  * update has flavor affinity now
  * flavors can now be specified on the command line for update, erase
    repquery, and query
  * unspecified flavor flags got scores of zero, which was wrong
  * added python code for flavor scoring (useful for the client)
  * repository queries didn't work properly when looking for multiple flavors
    of a single version
  * fix for updating multiple flavors of a single version of a trove
    simultaneously
  * reworked getTroveVersionList and getAllTroveVersions for per-trove
    flavor filtering

Changes in 0.12.1
  * repquery and query always showed dependency information
  * getTroveLeavesByBranch did extra demarshalling of the flavor
  * repquery didn't deal with nonexistant troves well
  * dependency failures on erase didn't reassemble dependency flags properly
  * fixed bug in dependency sets creation which caused dependency flags
    to get mangled
  * added a check to prevent mangled flags from getting committed

Changes in 0.12.0
  * document config command, and display supplied macro/use/arch information 
    in output
  * repository acl's work for almost everything
  * anonymous access must be explicitly enabled by creating an acl for
    user 'anonymous' with password 'anonymous'
  * server side flavor scoring used
  * queries reworked for flavor matching

Changes in 0.11.10.1
  * move to python2.4
  * repository caching (which isn't used yet) didn't track the recurse flag

Changes in 0.11.10
  * changed flavor tracking when loadRecipe() is used to only track
    flavors in loaded recipes that are superclasses of the recipe
    class in the loading recipe.  (e.g. loading python.recipe to get
    the distribution python version will not add all of the python
    recipe's flavor information to the loading recipe class, as long
    as the loading recipe does not subclass the Python class.)
  * add conary verify command for comparing the local system's state to 
    the state it was in at install time
  * when a trove is installed for the first time, it comes from a single
    repository
  * didn't handle file types changing on update
  * fixed problem assigning depNums
  * components disappearing from troves caused problems in relative changesets
  * files moving from removed troves in changesets caused update to fail

Changes in 0.11.9
  * change the order of permissions setting (chmod after chown)
    because some versions of the Linux kernel remove setuid/gid bits
    when setting ownership to root

Changes in 0.11.8
  * work around a python bug w/ fdopen() resetting file permissions
  * r.Replace() as an alternative to r.Run("sed -i '...' file")
  * Policy enforcing UTF-8 filenames
  * r.macros.tagdatadir as a standard place to put data just for taghandlers

Changes in 0.11.7
  * changed server.py to take extra config files via --config-file instead
    of as an extra argument
  * extra config files (specified with --config-file) were ignored if they
    didn't exist; issue an error message now
  * Added r.ConsoleHelper() for recipes
  * PAM configuration files shouldn't have paths to modules by default,
    so we remove what used to be the standard path
  * changed repository user authentication to use user groups (currently 
    one per user)
  * added password salt
  * restructured repository a bit
  * removed lots of unused code from FilesystemRepository 

Changes in 0.11.6
  * branches are created as changesets now instead of as a protocol call
  * merged authdb into primary repository
  * fix for rdiff (broken by flavor rework in 0.11.5)

Changes in 0.11.5
  * Internals reworked to eliminate flavor of None in favor of empty flavor
  * Added (currently unused) code to parse command line flavor specifications
  * static libraries (.a files) get proper flavors now
  * Handle attempts to update already installed troves from absolute 
    change sets

Changes in 0.11.4
  * all components built from a single recipe share a common flavor
  * loadRecipe's label= keyword argument can actually take a label
    as well as a hostname

Changes in 0.11.3:
  * optimized a sqlite update statement to use indexed columns
  * added --test to update and erase
  * dependency check didn't handle new components providing the same
    items as old components (broken by 0.11.1 performance enhancements)

Changes in 0.11.2:
  * standalone server was broken by --add-user changes in 0.11.1
  * dependency check no longer allows packages being removed to cause
    dependency failures
  * changed how dependencies are frozen to make the order deterministic
    (so fileId's don't change around)
  * added a database version to the database schema

Changes in 0.11.1:
  * erasing troves enforces dependencies -- this requires a database 
    conversion (run the conary-add-filedeps script which fixed the
    conversion to 0.11.0 after updating conary)
  * reworked dependency queries to take advantage of indices for much
    better performance
  * add --add-user to server.py for creating the authdb

Changes in 0.11.0:
  * massive rework of fileId mechanism to allow better flavor support
  * added columns to dependency tables to allow erase dependency checks
    (which are not yet implemented)
  * enabled trove requirements
  * added cvcdesc and the 'describe' command to cvc to generate
    and use metadata XML files.
  * getMetadata follows the branch structure up until it finds metadata
    for the trove.
  * changed getFileContents() to not need trove name or trove version
  * byte-compiled emacs lisp files are transient, like python
    byte-compiled files
  * addSource recipe action now can take a mode= keyword argument
  * cook now enforces having no dash characters in version numbers
  * files are explicitly disallowed from depending on groups, packages,
    or filesets; the only trove dependency that a file or component
    can have is on a component.  Only filesets can depend on filesets.
 
Changes in 0.10.11:
  * reworked how absolute change sets get converted to relative change
    sets for better efficiency
  * chained dependency resolution caused duplicate troves in the final
    changeset (and a lot of extra work)
  * added --config to stand alone repository
  * source flag wasn't set properly for newly added non-text files
  * flavor information is now printed by "conary query" when multiple
    flavors of the same version of a trove are installed
  * "conary repquery --all" flavor output formatting has been improved 

Changes in 0.10.10:
  * changesets get downloaded into a single (meta) file instead of lots
    of separate files
  * fix several bugs in the freshmeat record parsing
  * add a freshmeat project page URL to the metadata by default
  * add a "source" item to metadata
  * the server implementation of troveNames() was horrible
  * enabled file dependencies

Changes in 0.10.9:
  * fixed some authorization issues with the xml-rpc repository interface
  * the web management interface for the repository works now; see
    http://wiki.specifix.com/ConaryConversion for information on how
    to convert existing authdb's to support this
  * fixed a bug with distributed branches
  * users can change their passwords through the repository's web api
  * improved logic apachehooks use to find top level URL
  * fixed bug in server side repository resolution

Changes in 0.10.8:
  * changed iterAllTroves() to troveNames(), which searches a single
    label instead of the whole repository
  * reworked http authentication and CGI request handling and added the
    beginning of a web interface to the repository for user administration
    and metadata management.

Changes in 0.10.7:
  * dependency sql code reworked to use temporary tables
  * new macro called "servicedir" that defines the location for
    service data (%(servicedir)s{ftp,http,etc})
  * added busy wait to sqlite3 python binding when executing SQL
    statements on a busy database

Changes in 0.10.6:
  * Lots of bug fixes for distributed branching
  * Some code rearrangement
  * The start of metadata support code is now included

Changes in 0.10.5:
  * The local database is used for fetching file information (but not
    contents), reducing network traffic when creating change sets
    across repositories.
  * Update works on troves which were locally cooked or emerged
  * Internal changes to move toward getFileContents() working in batches
    rather then on individual files. For now this prevents the repository
    from copying files between the content store and /tmp to serve them.
  * Arch flags are now included in flavors
  * Emerge follows the installLabelPath instead of the buildLabel
  * The extended debugger has been extensively modified
  * Conary can handle filenames with '%' in them
  * The showcs command has been significantly updated, and the updates
    are documented in the conary.1 manpage
  * New syntax for flags distinguishes requirements from "optimized for";
    see http://wiki.specifix.com/FlavorRankSpec

Changes in 0.10.4:
  * Bug fixes for updating from absolute change sets (which basically
    just didn't work for troves which contained config files)
  * Bug fixes for distributed branching
  * The database is used for fetching trove information (but not yet
    file information) when the client constructs change sets across
    distributed branches
  * various other bug fixes

Changes in 0.10.3:
  * this version introduces changes to the network protocol for
    obtaining file contents and changeset generation. The client
    protocol version number has increased, so version 0.10.3 can only
    communicate with servers running the server from 0.10.3. The
    server remains backward compatible with older clients.
  * a warning message is now displayed when the user attempts to
    create a branch that already exists on a trove.
  * the correct trove names are displayed when automatically resolving
    dependencies 
  * packages no longer get the union of all the dependency information
    of the components they contain.  This information would have to be
    recalculated if a user installed a package then removed a
    component afterward.
  * a package policy check was added to reject any world-writable
    executable file.
  * r.TagSpec('tagname', exceptions='filter') now overrides a match by
    another r.TagSpec('tagname', 'filter')
  * more changes to metadata interface
  * various other bug fixes and improvements

Changes in 0.10.2:
  * the repository code is now included in the main conary source
    archive
  * "conary showchangeset" produces a more user-friendly output
  * large responses from the repository server are now compressed
  * the protocol for getFileContents() changed to take a fileId
    instead of the file's path.  The repository code can still handle
    old requests, but the client code now requires the latest
    repository code.
  * bug fixes

Changes in 0.10.1:
  * when applying a changeset, dependency failures are resolved by
    querying servers in the installLabelPath
  * troves that satisfy a dependency can automatically be added to a
    transaction.  This behavior is controlled by the "autoResolve"
    variable in conaryrc or the "--resolve" command line option to
    "conary update"
  * dependency resolution is calculated recursively.  To limit the
    recursion depth to check only first order dependencies, a
    "--no-deps-recurse" option has been added to "conary update"
  * "conary repquery" now takes a "--deps" argument, which prints the
    Requires and Provides information for the trove that is being
    queried.
  * changes have been made to the build side of Conary to facilitate
    building recipes that use cross compilers
  * symlinks now get the appropriate ownership set when they are
    restored
  * groups can now specify which flavor of a trove to include
  * repository queries that don't need file information no longer ask
    the repository for files.
  * various bug fixes and cleanups

Changes in 0.10.0:
  * dependency checking is now performed before changesets are
    applied.  This uses new tables in the local system's database.
    If you are using a database created by a version of Conary older
    than 0.10.0, it must be converted before it can be used.  See:
      http://wiki.specifix.com/ConaryConversion
    for details
  * Shared library dependency information in changesets is now stored
    in a different format.  This means that repositories that use old
    versions of Conary will be unable to give valid changesets to
    Conary 0.10.0 or later.  Therefore, the protocol version number has
    been increased. 
  * --no-deps argument added
  * "cvc co" is now a synonym for "cvc checkout"

Changes in 0.9.6:
  * dependency enforcement infrastructure has been added (the code is
    currently disabled)
  * bug fixes 
    * applying a changeset that un-hardlinks files now works
    * conary rq [trove] --info now works
    * running "conary update [trove]" when more than one flavor of
      [trove] exists no longer tracebacks.  It installs both flavors
      of the trove (which is not always the desired behavior - this
      will be addressed later)
    * only files with execute permissions are checked for
      #!interpreter.
    * "conary rq [trove] --ls" no longer tracebacks when [trove]
      exists in more than one repository
    * various code cleanups

Changes in 0.9.5:
  * new methods for specifying dependency information in recipes have
    been added
  * #! interpreters get added as dependencies
  * local flag overrides now work
  * cvc cook --resume can be used multiple times
  * conary invokes gpg with --no-options to avoid creating or using
    ~/.gnupg

Changes in 0.9.4:
  * fixes to cvc annotate
  * flavors and dependency generation code has been refactored to be
    policy based
  * better error handling when invalid changeset files are given to
    conary
  * minor code cleanups

Changes in 0.9.3:
  * New "cvc annotate" feature
  * Man page updates
  * Changesets which remove a file and replace it now apply correctly.
  * "cvc update" no longer complains and fails to update the CONARY
    state file properly  when ownerships differ
  * FileId generation now looks for previous versions of all the
    packages that have just been created, not just the name of the
    recipe.
  * Cooking as root is no longer allowed
  * Miscellaneous bug fixes.  

Changes in 0.9.2:
 * Bug fixes:
   * Applying changesets that have more than one hard link groups
     sharing the same contents sha1 works now.
 * Build changes:
   * Recipes can now create new top level packages.

Changes in 0.9.1:
 * Bug fixes:
   * Applying a changeset that has a flavor which is a superset of the
     previous version's flavor now works.
   * Parsing optional arguments to command line parameters that appear as
     the last thing on the command line works
 * Build changes:
   * Package policy now checks to ensure that files in /etc/cron.*/*
     are executable
 * Update changes:
   * Conary no longer complains if a transient file has been modified
     on disk but no longer exists in a new version of a component.
 * Miscellaneous changes:
   * Version 1 on-disk changeset file support has been removed.

Changes in 0.9.0:
 * protocol versioning is much more granular now allowing for backwards
   compatible versions of functions
 * changeset command now generates changesets for multiple troves spread
   across multiple repositories
 * change sets are transferred as a set of independent change sets now
   (laying the groundwork for repository change set caching, with which
   this version will work just fine)

Changes in 0.8.3:
 * Man page updates.
 * The "conary query" command now accepts multiple arguments for
   troves and paths
 * Fixed "conary erase" command which was broken in 0.8.2

Changes in 0.8.2:
 * You can now install multiple troves at once (even a combination of
   changeset files and troves from repositories), and the entire
   action is recorded in a single rollback (this required a change in
   command-line arguments for updating troves). 
 * The beginnings of support for searching multiple repositories 
 * Miscellaneous code cleanup and bug fixes.

Changes in 0.8.1:
 * The source code has been re-arranged for easier maintenance, and
   conary has been split into two programs: conary and cvc.
 * Better error messages and debugging tracebacks

Changes in 0.8.0:
 * A new changeset format supports hard links but requires staged update.
 * The new changeset format also collapses duplicate contents even
   when hardlinks are not used.
 * By default, rc?.d/{K,S}* symlinks are no longer packaged. The
   chkconfig program is relied on to create them at package
   install/update time. Init scripts are explicitly required to
   support the chkconfig protocol by default
 * Improved error messages
 * Several bug fixes.

Changes in 0.7.7:
 * Extended debugger saves and emails
 * Tracebacks now include arguments and locals
 * More size optimizations were made when applying changesets
 * Applying absolute changesets when a trove is already installed is
   now much more efficient than it was
 * Self-referential symlinks raise a packaging exception.
 * Several bugs fixes.

Changes in 0.7.6:
 * Installation
   * Hardlink handling
   * enhanced debugging capabilities (including saving a debugging
     state file to enable remote debugging)

   * using binary file ids and iterators for significant memory savings
   * and runtime support for the x86.x86_64 sub-architecture
 * Cooking
   * more robust handling of the --resume option
   * policy normalization of where app-defaults files go.

Changes in 0.7.5:
 * Hard links are implemented (but not yet enabled, in order to
   preserve changeset compatibility for now).
 * Several bugs have been fixed for installing and cooking.

Changes in 0.7.4:
 * Fileids are now stored and transmitted in binary rather than
   encoded.
 * Better handling of multiple versions of packages/troves installed
   at the same time
 * Missing file handling improvements
 * Recipe inheritance is now possible between repositories
 * Enhanced Interrupted builds
 * The dynamic tag protocol was slightly modified
 * Added Arch.x86.amd64 and Arch.x86.em64t
 * several bugs fixes

Changes in 0.7.0:
 * sqlite3 is used for the database
 * better handling of multiple packages with the same name installed at once.

Changes in 0.6.6:
 * repository protocol update
 * changeset format update
 * added the ability to resume halted local builds
 * added the ability to easily package build-time tests to run at
   install time to qualify new/changed environments
 * better handling of packaged .pyc/.pyo files
 * better shared library handling
 * improved inline documentation
 * optimizations for both space and time
 * numerous bugfixes
