Changes in 0.62.0:
  * Initial OpenPGP (RFC 2440) based signature support has been
    added. Conary reads public keys from ~/.gnupg/pubring.gpg and
    /etc/conary/pubring.pgp.  Conary reads private keys from
    ~/.gnupg/secring.pgp.  Setting the "signatureKey" configuration
    variable to a key ID will select which key to use from the
    keyring. If signatureKey is not set, and there is a valid private
    keyring, the first key on the keyring will automatically be used
    to sign changesets when committing them to the repository.
    "cvc sign" adds a signature to a trove that already exists in the
    repository.
  * Change set generation on the command line is more flexible. It can generate
    erasure changesets as well as relative to nothing changesets
  * When creating multiple groups from the same recipe using newGroup(), 
    Conary now searches all subgroups when resolving dependencies within 
    a parent group
  * Conary no longer resolves dependencies for troves with byDefault=False
    (such as :test and :debuginfo).  Conary will now resolve dependencies in
    those troves only if you set checkOnlyByDefaultDeps=False.  When creating
    subgroups using newGroup(), pass the checkOnlyByDefaultDeps flag as an
    argument to the newGroup() function.
  * excludeTroves now applies to troves which have been added to 
    already installed collections

Changes in 0.61.12:
  * You can now search for troves by <trove>=<host>@ 
  * A bug when cooking groups with depCheck = True (introduced in 0.61.10) 
    has been fixed.
  * A new r.ByDefault policy controls how components are included in their
    enclosing packages; the default is True except for :test and :debuginfo
    components that default to False.
  * Cloning across repositories works
  * A bug in 'conary update --info' output was fixed

Changes in 0.61.11:
  * A bug that caused a database deadlock when removing entries from the
    changeset cache in the repository server has been fixed.
  * Added RegularExpressionList in conarycfg
  * Added lockTroves configuration option for autolock
  * Recurisvely included troves could be removed incorrectly when those
    troves were already present

Changes in 0.61.10:
  * The conary update command now takes a --sync parameter, documented in 
    'man conary'
  * Groups now allow you to create a reference to another cooked trove, 
    and use that reference to add troves that are contained in that trove.
    For example, if you want to create a group-python based on the troves in
    an already cooked group-dist, you add a reference to the group-dist in 
    group-python, and pass the group-dist reference in when you call
    addTroves.
  * Work has begun towards generalizing the concept of a trove source.  
    A class SimpleTroveSource has been added that, when subclassed and given
    access to the troves, will allow you to call findTroves to search that 
    source.  The same code is used in update code to unify updating from
    the repository and from changesets, and it is used to provide the search
    capabilities for the local database.
  * Conary now allows all files, not just regular files, to have
    dependencies.  This is necessary for user/group dependencies for
    non-regular files to work.  Packages built with 0.61.10 or later
    that have non-regular files with non-root user or group will not
    be readable by Conary versions 0.61.9 or earlier.
  * Shadowing now preserves the byDefault flag, and handles reshadowing
    collections gracefully now
  * Update preprocessing now works on absolute changesets instead of
    relative ones, providing massive cleanups. Code uses sets of jobs
    instead of changesets for job representation, allowing still more
    cleanups. Many bugs seem to have gone away.

Changes in 0.61.9:
  * Fix a bug added in 0.61.8 that breaks tag handlers 

Changes in 0.61.8:
  * Fix a bug introduced in 0.61.7 that occurred when, in the repository,
    either the Users table or Groups table was empty when creating a new group.
  * Add --buildreqs, --flavors options to q and rq.
  * Primary troves should not have their trove change sets overridden by
    items recursively included (and fixed a pile of things this broke).
  * Locally stored change sets can't always get access to pristine files
    from the local filesystem; when it can't, make sure file sha1 checking
    doesn't get upset.
  * Unchanged troves in updated groups could be erased by items in the
    same group on a different branch.
  * The "conary q[uery]" command accepts a --diff option.  When --diff
    is used, the difference between installed and pristine troves is
    displayed.
  * An additional progress callback has been added to show when database
    transactions are committed

Changes in 0.61.7:
  * Several bugs related to updating two troves with the same name have been 
    fixed - including branch affinity, flavor affinity, correct handling of 
    already updated troves, and correct handling of empty flavors.
  * "conary emerge" as root (or as a user than can apply the changeset
    produced by the build) did not install anything but the toplevel
    package.  This bug has been fixed.
  * No longer hide descriptive TroveNotFound errors behind a generic 
    NoNewTroves wrapper.
  * Group recipes can now request that dependencies be resolved and
    added to the group at cook time.  To automatically add required
    troves to a group add "autoResolve = True" to the recipe class.
    Optionally "autoResolveLabelPath" can be set to a list of labels
    to use during dependency resolution.
  * Locally stored rollbacks couldn't handle files changing types. As
    part of the fix, the generic file diff code is now used when creating
    changesets instead of having a special-case wrapper around it
    (fileChangeSet()).
  * The commitaction script and the changemail module did not necessarily
    show the full trailing version for branches and shadows.  (For example,
    /conary.rpath.com@rpl:devel/4.1.25-18/db41/19 showed up as "19"
    instead of "4.1.25-19".)
  * Add a --deps option for conary q.  Make that and conary rq --deps
    recurse over collections.
  * Warn about missing buildRequires entries both for soname dependencies
    and for TagSpecs applied via tag description files.
  * A bug in updating groups that switch the byDefault setting of troves
    has been fixed.
  * Add an updateThreshold config option to control the number of troves to
    include in a download.
  * Ordering didn't work for old packages depending on anything, or for
    dependencies whose provider moved between components.
  * The r.Ownership(), r.UtilizeUser(), and r.UtilizeGroup() now generate
    appropriate dependencies on info-* packages.
  * Updating packages and components installed multiple times could cause
    a component to be removed multiple times (which resulted in a traceback).
  * Fixed a bug that occurred when groups tied to a user were deleted
    without deleting the associated user, then subsequently adding a user
    with the same name.

Changes in 0.61.6:
  * InitialContents turns off EtcConfig, since a file cannot be both
    a config file and an InitialContents file.
  * Reworked repository change sets to directly reference files from the
    contents store.
  * The User() command now takes an optional supplemental= option,
    which provides a list of supplemental groups to which to add
    the user.  (SupplementalGroup() is for groups not associated
    with a user.)
  * The showcs command can now handle components that are referenced
    but not included in a changeset.
  * InfoUserRecipe and InfoGroupRecipe can now be built with buildlogging
    turned on.
  * Conary's internal handling for dyanamically finding new IDs for
    users and groups has been fixed.
  * "conary updateall" now accepts the --test flag.
  * Various fixes were made to the CIL dependency detection code.

Changes in 0.61.5:
  * Added basic clone capability (which only works cloning to parents
    branches and shadows, and on a single host).
  * Now handles degenerate case of packaging unreadable files.
  * A bug that caused conary to ask for the wrong fileId when constructing
    a changeset from multiple repositores has been fixed.
  * Conary now can add users and groups automatically at install time.  If
    there is no taghandler to add a user or a group, conary will add it
    internally as a bootstrapping measure; if there is a taghandler,
    conary will call that instead.  In order to ease transition, Conary
    does not yet create the dependencies on the info- packages; a future
    version of Conary will add those dependencies after the system user
    info- packages have been created.
  * rpm2cpio now handles rpm archives that use bzip2 to compress the
    cpio payload
  * Conary now creates dependencies (provides and requires) for CIL
    files, if mono's monodis is installed on the system or being built
    in the current package.
  * Troves moving between troves could cause conary to attempt double
    erasures
  * The networked repository handles cases where contents are not
    found in the contents store.  The exception is passed back to
    the client.
  * The networked repository handles cases where a file stream is not
    found when the client asks for file contents.  The exception is
    passwd back to the client.
  * An error that caused getPackageBranchPathIds() to return the
    oldest fileIds instead of the youngest fileIds has been corrected.
  * Reworked finding old versions of troves to avoid a single trove
    being removed multiple times

Changes in 0.61.4:
  * %(datadir)s/.../lib/ files will no longer show up in :lib - presumption
    being that anything under %(datadir)s really is arch independenct
  * Creating branches and shadows had a command line parsing bug
  * "cvc newpkg" takes --dir and now complains for unexpected arguments
    (which is used to just ignore)
  * when using flavor affinity for installed troves, merge subarchitecture 
    flags
  * group handling didn't always preserve troves which were needed by a
    newly installed trove properly

Changes in 0.61.3:
  * Corrected a bug that snuck in 0.61.2 that caused a temporary SQL table
    to not be temporary, which makes multiple httpd processes fail with
    'database schema changed' errors.

Changes in 0.61.2:
  * Fix a bunch of typos in the authentication checking server side
  * Add permission editing capabilities to the server component and hooks
    in the netclient
  * Overhaul of ACL system so that uniqueness constraints on Troves and 
    Labels can be enforced: we now use a special Trove and Label "0 | ALL"
    instead of Null
  * Dependency resolution enforces label ACLs.
  * Module arguments to commitaction are parsed according to shell
    quoting rules.
  * The changemail commitaction module now takes an optional '--from'
    argument.
  * added clearBuildReqs() - will clear all or some of superclass buildreqs
    when cooking.
  * The pickled version of Dependency objects changed, therefore the
    schema version of the changeset cache has been incremented.
  * When Configure() detects a failure and input or output is not a
    tty, all config.log files will be included in the output in order
    to ease debugging from captured log files.
  * Part of the infrastructure for adding users and groups has been added:
    it is possible to create info-<name>:{user,group} packages via
    UserInfoRecipe and GroupInfoRecipe classes.  The User(), Group(),
    and SupplementalGroup() policies are deprecated; those lines should
    move to their own recipes intact (the syntax remains the same).
    The install-time code does not yet install info-* packages first in
    their own transaction; when it does, the Ownership(), UtilizeUser(),
    and UtilizeGroup() policies will create dependencies on the
    appropriate info-* packages.
  * The networked repository server and client code has been changed
    to use the 'deflate' Content-encoding type instead of 'zlib',
    which makes the code RFC 2616 (HTTP 1.1) compliant.
  * A new function called hasUnresolvedSymbols() has been added to the
    elf module.  This could be useful for a contributor to implement a
    policy that checks to make sure that shared libraries do not have
    unresolved symbols.  Additional code could be written to check
    binaries too.
  * cvc checkout, update, and commit now show progress when communicating
    with the repository server
  * Progress is now displayed while downloading file contents from a
    repository (such as when assembling a changeset that is distributed
    across multiple repositories)

Changes in 0.61.1:
  * Cleaned up error message which results from Conary not being able to
    determine which trove to remove when a new one is installed
  * Dependency object use slots
  * Hash values for DependencySet, Version, and Branch objects are cached
  * UIDs and GIDs that cannot be mapped to symbolic names no
    longer cause the buildpackage code to traceback.  The ownerships
    from the filesystem were never used anyway, so it's safe to assume
    that all files are owned by root:root
  * Implemented proper updateall
  * Files in troves are downloadable from the repository browser.
  * Troves in the repository browser are separated by first letter
    instead of showing all troves in one page.

Changes in 0.61.0:
  * New functionality for maintaining user groups: renaming and updating
    members
  * Added repository interfaces for deleting users and groups
  * Added a repository iterator function to list the members of a group
  * The web interface to the Conary repository now has a repository
    contents browser, accessible either from the main page (if you are
    logged into the web interface), or from the /browse url. Example:
        http://conary.example.com/conary/browse
  * A bug preventing all access to the web interface if an anonymous
    user existed has been fixed.
  * "Large" updates are split into multiple pieces which are downloaded
     and installed independently of one another
  * Trove updates are tracked through collections
  * Group handling completely rewritten to function as a three way merge
    instead of a set of heuristics
  * Trove removal handles references troves which are referenced by multiple
    collections
  * Rollback format unified for local and nonlocal rollbacks
  * Dependency ordering forces collections to be installed after all of their
    referenced troves (allowing simple restarts)
  * Database migration removes stale versions
  * --replace-files marks the replaced versions of the files as no longer
    present
  * Troves store information about Install Buckets - not used yet.
    By specifying a component's install bin, which is a set of key-value 
    pairs, you can describe whether two versions of a component are 
    installable side-by-side.  If two versions of the component share the
    same keys for their install bins, but at least one different value, then
    the components are installable side-by-side.
  * Troves store information about troves loaded when building a recipe
  * Build Requirements are stored with the trove 
  * Add isCollection() to TroveInfo
  * Changesets download while instals are going on
  * StreamSet.twm() respects ignoreUnknown now
  * Rollbacks of locally cooked and emerged troves works

Changes in 0.60.12:
  * Previously, if you ran "conary update foo", and foo requires a new
    version of bar, but updating to the new version of bar would break
    existing dependencies of other troves on the system, a very
    unuseful "Troves being removed create unresolved dependencies"
    message would be printed.  Conary now says that "Additional troves
    are needed" instead.  If --resolve is used, it will report the
    troves that have been added before displaying the dependency
    failures caused by erase.
  * Symlinks no longer confuse AutoDoc policy.
  * Autosource files which have changed confused cvc update
  * allow a \ at the end of a line in config files to do line continuations
  * several bugs in the multitag handler have been fixed

Changes in 0.60.11:
  * The '-f' flag was added to the arguments to gzip when
    recompressing compressed files
  * Added progress callbacks for uploading the changeset when cooking
  * Improved automatic mainDir detection for some corner cases.
  * Put development docs back in :devel component (they were
    inadvertantly removed from it by a previous fix).

Changes in 0.60.10:
  * BadFilenames policy absolutely prohibits filenames with newlines
    in them, no exceptions allowed.  Other similarly bad filenames may
    later be forbidden by this policy.
  * UTF8Filenames moved to packagepolicy, where it belongs, and it now
    raises an error instead of printing a warning.
  * Conary now enforces the rule that tag names must have no whitespace
    and must be all alphanumeric characters, -, or _.
  * Conary can now run a single instance of a single tag handler to
    process multiple tags.  The tag description files for each tag
    must point to the same tag handler, and must each specify the
    multitag datasource.  The data is passed to the tag handler on
    standard input using the protocol "tag list for file1\nfile1\n..."
  * Fixed ftp server busy detection when fetching files via URL.

Changes in 0.60.9:
  * The changemail script is replaced by a generic commitaction script
    that loads modules, and a changemail.py module is supplied.  There is
    a backward-compatible changemail script which calls commitaction
    with the changemail.py module.  --email and --*user options now are
    changemail module options, so the commitAction should be specified
    something like this:
    commitAction /.../conary/commitaction --repmap ... --module "/.../conary/changemail --user %(user)s --email foo@example.com --email bar@example.com"
    You can add your own modules and run them all from the same commitaction
    using multiple --module arguments to the commitaction script.
  * Conary can now almost always guess the correct name for the mainDir
    when it is not %(name)s-%(version)s, if the first addArchive()
    instance creates exactly one top-level subdirectory and no other
    top-level files of any sort, in which case it will use that name as
    the mainDir.

Changes in 0.60.8:
  * The changemail script is now actually packaged, in
    /usr/lib{,64}/python2.4/site-packages/conary/changemail
  * Build requirements for superclasses are automatically added to 
    subclasses.
  * Build requirements now look at all labels in a version to see if they
    satisfy a build requirement.
  * The NormalizeManPages policy now automatically converts man pages
    encoded in iso-8859-1 to man pages encoded in utf-8.  Additionally,
    it runs faster and no longer calls sed.

Changes in 0.60.7:
  * The changemail script is now distributed with conary, and is called
    with a different calling convention; instead of being called once
    per trove with trove-specific command line options, it is called
    once per commit (of however many troves) and creates more readable
    summary email messages.  Remove --trove, --version, and --flavor
    arguments from your changemail invocations.  Added --user argument
    to changemail; specify in .cnr files as "--user %(user)s".  Or, to
    only print users for source or binary commits, use "--sourceuser
    %(user)s" or "--binaryuser %(user)s", respectively.
  * The cvc rdiff command now recognizes creating a shadow as such.
  * Build requirement tracking is now half-enabled; conary is now able
    to read "buildReqs" tags, but will not yet generate them.
  * Files in /tmp and /var/tmp, and all cvs temporary files, will no
    longer be packaged by default,
  * The addArchive(), addSource(), and addPatch() actions can now fetch
    via HTTPS as well as HTTP and FTP.
  * The repository now handles creating a changeset between two troves
    that both contain a version of a file that is stored on a different
    repository

Changes in 0.60.6:
  * Erasing emerged troves works properly
  * Calling Doc() no longer disables the AutoDoc() policy.
  * A more reliable method is used for finding the port of an
    Apache connection

Changes in 0.60.5:
  * 'conary emerge' works again
  * Distributed group changesets failed when remote troves disappeared
    from the group
  * build logs are now tagged with 'buildlog' tag
  * Conary now handles cases when a directory becomes a symlink when
    applying a changeset.  An error message is displayed which tells the
    user how to apply the update.

Changes in 0.60.4:
  * An error in the automatic database conversion of 0.60.2 systems
    has been corrected.

Changes in 0.60.3:
  * Reimplemented LargeStreamSet in C
  * Added StreamCollection
  * Policies now announce their names in their information, warning,
    debug, and error messages, making it easier to determine how to
    resolve problems.
  * The database conversion for to 0.60.2 didn't work well; a proper
    conversion is now in place

Changes in 0.60.2:
  * Added InitialContent flag 
  * Fixed bug which caused servers to leak file descriptors when the sqldb
    was replaced
  * "repquery --deps" output fixed (broken in 0.60.1)
  * Added AutoDoc policy which finds common documentation files and puts
    them in %(thisdocdir)s automatically.
    AutoDoc is disabled by calling
    Doc without calling AutoDoc, which means that existing recipes that
    call Doc will not show changes.
  * getPackageBranchPathIds() now returns version and fileId as well,
    so that the IdGen class can determine if an older version number
    should be assigned to files.  getPackageBranchPathIds() is now the
    primary mechanism for populating the pathId dictionary.
  * The local label methods of the version object have been
    refactored. isLocal() is now onLocalLabel(), isEmerge() is now
    onEmergeLabel(), etc. isOnLocalHost() has been added as a method
    to easily determine if a version only exists in the database
  * Moved logic for explicitly creating a changeset from cscmd.py to the
    ConaryClient object
  * Added the (unused) ability to lock and unlock troves. Ignore this for now.
  * "query --info" behaves much more like "repquery --info" now
  * isSourceVersion() method has been to the Version object
  * most of the remaining erroneous references to "Package" have been
    changed to "Trove" throughout the code.  This includes method
    names such as getPrimaryPackageList() -> getPrimaryTroveList().  Some
    more commonly used methods were left as deprecated thunking methods
  * dependency resolution couldn't resolve a requirement w/o flags against
    a provides w/ flags

Changes in 0.60.1:
  * Support for legacy clients (protocol version 29) has been removed from
    the server
  * The server raises an server-side exception if any client with
    protocol less than 32
  * Updated the URL provided in a server-side client version mismatch
    exception
  * Server-side dependency suggestions return more choices, leaving it
    to the client to sort it all out
  * Client uses timestamps to determine which troves to install when their
    flavors score equally
  * Fixed build-side bug handling meta characters ([,*,etc) in file names 
  * "cvc newpkg" now accepts pkgname=label syntax
  * files.contentsChanged() function updated to work with StreamSets
  * Basic local changeset creation, retargeting, and commits work
  * Permissions weren't merged for operations run as non-root users
  * The structure of the repository web interface has been redesigned
    and some authentication UI bugs have been fixed.
  * The repository web interface now requires the conary-web-common package
    to be installed.
  * Committing troves to the repository no longer recompresses non-config
    files
  * Timestamps are set on the server at commit time; the timestamps the 
    client assigned is not used (this is to protect against clients with
    a bad idea of time; servers should be consistent, even if they're
    wrong, and as long as time doesn't go backwards on that server all is
    good)
  * Reworked troves to be representable as streams and implement *basic*
    signature capability
  * Local cook versions are now more sensible.

Changes in 0.60.0:
  * Changed changesets to compress individual files instead of the combined
    stream.
  * Cleaned up file content objects to no longer track file sizes.
  * Switched away from TupleStream to StreamSet both for better performance
    and for improved flexibility in the format (at the price of larger
    frozen streams).
  * Troves explicitly provide their own names.
  * Troves can now provide "capability flags", and trove requirements
    can now include references to the capability flags.
    r.ComponentProvides(('ASDF', 'FDSA')) will cause all components built
    from the current recipe to provide the 'ASDF' and 'FDSA' capability
    flags, and r.Requires('/path/to/file', 'foo:runtime(ASDF FDSA)')
    will make /path/to/file require the foo:runtime component built
    with the ASDF and FDSA capability flags.
  * Dependency components can contain : characters now.

Changes in 0.50.14:
  * Dependency checking now returns reordering information (which isn't
    used yet)
  * Allow groups to include other groups defined in the same recipe (but
    explicitly disallow cycles in groups)
  * Fixed bug in building multiple groups with a single recipe when some
    of the groups already exist, but others don't

Changes in 0.50.13:
  * Added automatic :data component for /usr/share, to which you should
    add any platform-independent files that are needed by :lib components
    but not in a libdir-derived path.  These might include configuration
    files and supporting data files needed by both library and runtime
    programs.
  * Added automatic intra-package inter-component dependencies; now within
    a single package, the :devel component will automatically require the
    :lib component if both components exist.  These dependency sets can be
    modified with the ComponentRequires policy.
  * The build/buildpackage.py file has variable and function names changed
    to better match our terminology for packages and components.
  * Change flavor specified in the conaryrc to a flavor path -- accept the 
    flavor config parameter multiple times to create a flavor path
  * Added a "filewrap" argument to r.Run() that inserts an LD_PRELOAD
    wrapper that overrides some library funtions to look in %(destdir)s
    first before looking in the filesystem.  This is subject to change
    as we experiment with it!

Changes in 0.50.12:
  * Implemented --quiet for conary update changeset commands, and cvc cook.
    Also implemented the 'quiet' configuration value. This option suppresses
    progress indicators.
  * Split loadRecipe into loadInstalled and loadSuperClass, depending on the 
    purpose of the recipe loading.  loadInstalled will examine the local
    system to look for a matching installed trove, and load that version, 
    while loadSuperClass will not.
  * Logs of builds are now stored in cooked changesets in the :debuginfo 
    component -- generally in 
    /usr/src/debug/buildlogs/<name>-<version>-log.bz2, controlled by 
    macros.buildlogpath
  * Added lib/logger.py
  * Fixed conarybugz.py to work with Conary's new site-packages location
  * Cleaned up yuck, rpm2cpio, and rpm2ccs scripts to use new "import conary"
    mechanism for finding conary.
  * Check sha1s for all files written into the repository or file system
  * conary scs --deps works again

Changes in 0.50.11:
  * Reworked file addition to local database a bit for better performance
  * Fixed sorting for --info
  * Don't make --info installs require a writeable database
  * Added an exception to group updating, restricting removal of existing 
    troves to match the group's contents to troves on the same branch
  * Groups which had the same trove added (via a referenced trove) and
    removed (from the primary trove) got confused
  * conary showcs now takes trove version
  * conary showcs will display erased troves in changesets, and erased troves
    that are referenced but not within the changeset
  * conary changeset now support trove=<version>-- to create a changeset that
    erases the trove
  * Cache user id to name mapping
  * Improved the progress indicators for preparingUpdate and
    creatingDatabaseTransaction
  * Implemented progress indicator on source downloads
  * Fixed bug in update process which caused files to be incorrectly skipped

Changes in 0.50.10:
  * Added callback for creating database transaction, so that it does 
    not look like we spend an inordinate amount of time executing tag
    pre scripts.
  * Added findtrove.py to the Makefile so that it is included in
    the distributed version of conary.
  * Added distcheck rule to Makefile to try and avoid missing files in the
    future

Changes in 0.50.9:
  * reimplemented StreamSet in C
  * moved findTroves out to findtrove.py, reworked it to be more modular
  * getSourceVersion now correctly handles branched binaries by looking
    up the branch to find the source component.
  * reimplemented StringStream in C
  * fixed bugs in --info

Changes in 0.50.8:
  * sort update --info alphabetically, display old versions, and display
    a letter summarizing the type of change
  * NormalizeInterpreterPaths() policy now looks in the package currently
    being built, as well as on the installed system, to determine how to
    resolve #!/usr/bin/env scripts.
  * groupName argument to addTrove() can now be a list of group names as
    well as a single group name.
  * --no-recurse works on the erase path
  * fix to walkTroveSet (which was horribly broken)
  * enable (optional) dependency checking when building groups
  * 'cvc cook' error output when there are unresolved build
    requirements is more user friendly
  * filesystem conflicts are handled properly when applying a rollback
  * updating a package to a version that comes from a different
    repository when that package had an uninstalled component works
    now.
  * conary now resides in /usr/$LIB/python$PYVERSION/site-packages/conary/
  * calling r.Replace on a non-regular file results in a warning instead
    of an unhandled exception
  * implemented basic callbacks for update, erase, and changesets

Changes in 0.50.7:
  * Added the XInetdService action to avoid having to include
    /etc/xinetd.d/ files separately, and to make xinetd.d files
    be consistent, making recipe-provided changes less likely to
    conflict with local configuration changes.
  * groups are no longer allowed to contain redirects
  * added setLabelPath to group recipe
  * Allow r.Provides("soname: libfoo.so(FLAGS)", "/some/file") (added
    the "(FLAGS)" part).
  * don't allow spaces and commas in revisions

Changes in 0.50.6:
  * conaryclient.updateChangeSet should have recursed by default
  * Metadata retrieval now works along distributed branches and shadows.
  * reworked troves being added to database to handle missing parts
    of packages and groups properly (and make things faster and more
    elegant)
  * merged update and erase code paths in conaryclient
  * update and erase now take +,- modifiers on trove names
  * added --info to see what an update or erase command will do
  * a single group recipe can now build multiple groups

Changes in 0.50.5:
  * Streams return their value through __call__ instead of value()
  * Reimplemented ShortStream and IntStream in C
  * conary config now takes --show-passwords option, and does not pretty
    print config file values when not printing to screen.  This means that 
    conary config > <file> will result in a valid configuration file.
  * Updating groups didn't work when the group referenced troves as new
    which were already installed on the system
  * r.ComponentSpec('somecomponent', '.*') will no longer override the
    file specifications for packaging :debuginfo and :test components.
  * loadRecipe now takes a troveSpec as its first parameter, and uses that
    troveSpec to find the trove on the local system that matches the source
    component that is being loaded.  loadRecipe also automatically searches 
    the labels that are parents of the current recipe, so if you shadow a 
    recipe, any loadRecipe lines contained in that recipe should still do 
    what you want. 
  * merge didn't handle files converging
  * merge doesn't need to deal with autosource files
  * diffs between groups failed when members disappeared

Changes in 0.50.4:
  * Most rollback information is stored as a reference to a repository
    instead of storing full rollback data on the local system. The
    localRollbacks flag in conaryrc allows the old behavior to remain.
  * The CONARY state after a merge operation on a shadow now has the
    correct fileId for files that are not different than the parent
    version.
  * Added /usr/lib/conary/conarybugz.py to make it easy to automatically
    populate bugzilla databases from repositories.
  * Sped up Strip, NormalizeInitscriptLocation, NormalizePamConfig,
    TagDescription, and TagHandler policies by limiting them to
    only appropriate directories.
  * Fixed :debuginfo to work with binaries built from more than one
    source file, and made it less aggressive by only stripping debug
    information out to the :debuginfo files, which both makes stack
    traces better without :debuginfo installed and makes libraries
    stripped for :debuginfo more likely to work.
  * When existing fileId's had no streams but the streams are provided
    by a later commit, those streams weren't always merged properly if
    there were multiple files for that fileId
  * conary config output masks user/password info in repository maps
  * the config option useDir has been changed to useDirs, and archDir has been
    changed to archDirs, to allow for tiered use/arch flag definitions, and 
    the tweaking of use and arch flag settings.  By default, useDirs and 
    archDirs look in /etc/conary/<dir>, followed by /etc/conary/distro/<dir>, 
    follwed by ~/.conary/<dir>, where dir is use or arch, depending on the 
    context.
  * Arch files can now contain arbitrary macro definitions, and in the future
    will contain values for macros like %(lib)s, which is lib64 
    on some platforms.
  * when using --keep-existing, the install label path and install flavor
    are used to determine which version to install instead of using affinity 
    to install something close to what you already have.   
  * a bug that prevented a changeset from applying to the system when
    the changeset removed a component from a package and the component
    is not installed on the system has been fixed.

Changes in 0.50.3:
  * database findTrove now has an interface that is much closer to the 
    repository findTrove function -- this enables conary q to work like 
    conary rq.
  * Group handling didn't work for multiple levels of group inclusion.
  * Database.hasTrove() no longer needs to instantiate troves.
  * Fixed overly-aggressive cleaning of the cache.
  * Added repository findTroves call to parallelize findTrove calls.
  * Added the NonMultilibDirectories policy to prevent 32-bit troves from
    utilizing lib64 directories.
  * the NormalizeInterpreterPath policy can now handle unwriteable files
  * fixed the network client code to return file contents properly when
    multiple file contents are requested from the server (bz#50)
  * rewrote Database.getTroveLatestVersion()
  * Added :debuginfo handling in Strip policy, which requires debugging
    to be turned on in optflags and elfutils's eu-strip and debugedit to
    be installed.  Like :test components, :debuginfo components are not
    installed by default.
  * File versions are now properly set to a branched version after a
    merge operation
  * cvc commit aborts again when the current versions of files are not
    the latest versions

Changes in 0.50.2:
  * Any %(lib)s-derived path (/%(lib)s, %(libdir)s, %(krbprefix)s/%(lib)s,
    or %(x11prefix)s/%(lib)s) will now cause the entire package and all
    components to be flavored with the base instruction set flavor, so
    that architecture-sensitive but non-code files in (say) /usr/lib64
    do not show up on 32-bit platforms.
  * Sped up dependency resolution on the client
  * The reworked getFileContents call now asks for contents from the
    correct server when contents from more than one server are requested

Changes in 0.50.1:
  * Add support for trove=<troveVersion> in rq, cvc co, and other places that 
    use findTrove
  * Add conary q --info option to display flavors
  * changeset command uses system flavor if no flavor is specified, skips
    troves which are not included in packages and groups by default,
    takes a --no-recurse option, and filters based on the excludeTroves
    configuration setting
  * Added automatic :perl component that works like the :python component,
    and extended the multilib-friendly-or-architecture-neutral policy to
    work with perl as well as python.
  * client/server protocol negotiation is a whole lot smarter now
  * getChangeSet() results in a single URL rather than one per primary trove
  * group, fileset, and redirect recipes have macros that contain the
    buildlabel and buildbranch.
  * fixed a bug with merging absolute change sets which contain config files
  * redirections to troves w/ older versions already installed didn't work
  * the pathId generation code has changed.  For cooked troves, the
    pathId will be the same for any particular version of a path.
    Code must not depend on this behavior, however; it may change in the
    future.

Changes in 0.50.0:
  * Redirections work
  * Sped up group generation
  * Troves which reference other troves (groups and packages) can now specify
    whether a trove is installed by default or not. Packages now reference 
    :test, but don't install it by default
  * Added optional 'recurse' parameter to netclient.createChangeSetFile
  * The first argument to the Requires and TagSpec commands can now have
    macros interpolated, as in r.Requires('%(bindir)s/foo', ...)
  * Groups can have requirements now
  * protocol-level getFileContents works on multiple files simultaneously
  * repository log had too many files added to it
  * set instruction set flavor for a cooked trove whenever any Arch flags are 
    checked

Changes in 0.14.12:
  * The shadow command looks at buildLabel instead of following
    installLabelPath
  * In some cases, troves with an incompatible flavor were chosen when
    --resolve was used. The proper flavor is now used, or the
    dependency is reported as unsatisfiable.
  * Several more instances of %(lib)s were moved out of the default
    specification for generic components like :runtime and :devel for
    better multilib support.
  * Policy now helps ensure that :python components are either
    architecture-neutral or multilib-friendly.
  * Better error messages for "%(foo)/" (which should be "%(foo)s/")
  * Looking up files in the local database gave erroneous results in 
    some cases (this was noticeably primarily when distributed change
    sets were being generated)

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
