The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
0.7.0_1 Oct 15, 2010
    New Features:
      - Commits have a "uuid" accessor, that allows you to uniquely identify
        a particular Commit universally across all repositories.
      - To help implement the "uuid" accessor, VCI objects themselves now
        have two new boolean methods: revisions_are_universal, and
        revisions_are_global (documented in the POD for VCI.pm).

0.6.3 Oct 15, 2010
    - Make the CVS driver compatible with the date output format of CVS 1.12.

0.6.2 Aug 28, 2010
    - Fix the META.yml in the VCI package to have the correct version
      numbers.

0.6.0_2 Aug 23, 2010
   - The POD has all been reviewed and improved, for every module.
   - VCI is no longer alpha-quality software.
   - The VCI package now uses Module::Install instead of Module::Build
   
   New Features:
      - Added a new method to VCI.pm, "missing_requirements", to assist
        downstream consumers in figuring out what needs to be installed
        in order for certain VCI::VCS modules to work.

0.6.0_1 Aug 22, 2010
   - VCI now explicitly requires Perl 5.8. (We probably always did actually
     require 5.8, because some of our dependencies did.)
   - VCI now does nearly all of its internal class loading on-demand instead of
     during compile time. This eliminates dependency loops and probably
     helps some with startup time.

   New Features:
      - There is a new "revno" accessor for Commit objects. "revision"
        now always represents the global revision id, if the VCS has one.
      - Commit objects have an "author" accessor in addition to the
        "committer" accessor, for VCSes that understand those things
        as separate concepts.
      - Svn: More debug output available.
   
   API Changes:
      - A Commit's "moved" accessor now has Committable objects (File or
        Directory objects) for its values instead of strings.
      - Bzr: A Commit's "revision" accessor now returns a revid instead of
        a revision number. This also means that every method that takes
        "revision" as an argument works on revids intead of revision numbers.

   Bug Fixes:
      - The Cvs driver was unable to parse certain valid commit histories,
        meaning that sometimes commits would be missing. The parser has
        been re-written to be faster and more reliable.

0.5.4 Aug 13, 2010
   - Most modules that used to be optional are now required, to improve
     the amount of testing that we get, and to simplify configuration for
     downstream consumers.
  - A few minor POD and test improvements.

0.5.3 Feb 14, 2010
    Bug Fixes:
        - Cvs and Bzr: Drivers now work when IPC::Cmd > 0.41 is installed.
        - Bzr: Now works reliably with bzr > 1.15.
        - Git: $commit->message now once again returns the literal
          message, exactly as it was typed in, with modern versions of Git.
        - Hg: History and Commit info was broken with recent versions of
          hgweb, and now works.

0.5.2 Jan 7, 2009
    - Fix a test failure that only happens when using the XS in recent
      Class::MOP releases.

0.5.0_1 became 0.5.1 with no changes.

0.5.0_1 Dec 9, 2008
    - No API changes, just major performance enhancements.

    Bug Fixes:
        - Systems with cvsps 2.2 will now work, when using the Cvs driver.
          (Older versions of cvsps are still fine, also.)
        - The Svn driver was broken with newer versions of Subversion.

0.4.1 Jan 10, 2008
    - VCI is now taint-safe in all drivers except for Git.
    
    Bug Fixes:
        - SECURITY: Versions prior to this one fall victim to CPAN RT ID
          31738, meaning that drivers that interact with the command line
          were vulnerable to command injection.
        - VCI no longer throws warnings if you give it "undef" for the
          "debug" argument to VCI->connect. (This mostly affected the Bzr
          driver.)
        - Svn: root_project->root_directory now works.
        - Svn: Tests should now pass on Svn versions < 1.4.
    
    API Changes:
        - We use Moose's support for "generics" (like ArrayRef[Int]) instead
          of having our own Array types, now.
        - We use Moose's lazy_build, meaning that all build functions
          changed to "_build_blah" instead of "build_blah"
        - All of our internal subtypes now start with "VCI::Type::", since
          I found out that Moose's type names are global.

0.3.1 Dec 3, 2007
    New Features:
        - Repository has a root_project to represent the idea that in some
          VCSes, the entire repository can be looked at as one Project.
        - FileContainer has contents_history_recursive, which gives a History
          for the contents of that directory and the contents of all its
          directories, etc.

    Optimizations:
        - Calling Bzr::Project::history should now be much faster,
          particularly on large projects.
        - Calling Svn::Project::get_commit and Svn::Committable::history
          should be faster, in most situations.

    Bug Fixes:
        - Make the bzr tests work with modern versions of bzr. (Fix the
          parsing of the --version output.)
        - History::union was sorting by revision number instead of by time.
        - Getting the contents of an Svn directory would sometimes fail.
          Thanks to Sam Vilain for help with the fix!
        - Cvs always said the timezone of commits was the local timezone.
          Now it's always UTC, to be consistent on all machines.

0.3.0_1 Sat, Oct 13, 2007
    New Features:
        - Repository has a root_project to represent the idea that in some
          VCSes, the entire repository can be looked at as one Project.
        - Directory has contents_history_recursive, which gives a History
          for the contents of that directory and the contents of all its
          directories, etc.
    
    Optimizations:
        - Calling Bzr::Project::history should now be much faster,
          particularly on large projects.
    
    Bug Fixes:
        - Make the bzr tests work with modern versions of bzr. (Fix the
          parsing of the --version output.)
        - History::union was sorting by revision number instead of by time.

0.2.1 Fri, Sep 17, 2007
    - We now explicitly require Perl 5.6.0, which is what
      Perl::MinimumVersion says we require. No promises that all our
      dependencies work with 5.6.0, though.
    
    New Features:
        - Added File::content, which allows you to get the actual raw content
          of a file at its particular revision.
        - Added File::content_size, which allows you to get the size of the
          file in bytes at its particular revision.
        - Added Project::head_revision, which returns the revision ID
          that represents "head" in the Project.
        - You can now specify "revision" to get_file to get a particular
          revision of that file.
    
    API Changes:
        - Project::get_commit now takes named parameters instead of a single
          positional parameter.
        - Project::get_history_by_time no longer has an "at" argument. (Use
          get_commit(time => 'blah') instead.)
        - Svn's FileOrDirectory is now *both* a VCI::Abstract::File and a
          VCI::Abstract::Directory, instead of being neither.
    
    Optimizations:
        - Hg's File::history should now be much faster, as gets the
          information directly from Hg instead of building it from the
          Project's History.
    
    Bug Fixes:
        - Sometimes Cvs's File::content was including extra garbage at the
          end of the actual file content.
        - Specifying a value greater than 1 for "debug" in VCI->connect
          was throwing an error.
        - Cvs wasn't dying correctly when a command failed.
        - File::is_executable wasn't correctly specified as being Bool.
        - Svn should now correctly delete temp files created by
          Commit::as_diff after build_as_diff returns.

0.2.0_2 Fri, Sep 14, 2007
    New Features:
        - Added Project::head_revision, which returns the revision identifier
          that represents "head" in the Project.
        - You can now specify "revision" to get_file to get a particular
          revision of that file.
    
    API Changes:
        - Renamed get_commit's "as_of" to "at_or_before", which is more
          correct English-wise. (Thanks to LTJake on IRC.)
    
    Optimizations:
        - Hg's File::history should now be much faster, as gets the
          information directly from Hg instead of building it from the
          Project's History.
    
    Bug Fixes:
        - Sometimes Cvs's File::content was including CVS's header at the
          end of the content.
        - Specifying a value greater than 1 for "debug" in VCI->connect
          was throwing an error.
        - Cvs wasn't dying correctly when a command failed.

0.2.0_1 Thu, Sep 13, 2007
    New Features:
        - Added File::content, which allows you to get the actual raw content
          of a file at its particular revision.
        - Added File::content_size, which allows you to get the size of the
          file in bytes at its particular revision.
        - In addition to specifying a revision ID, you can now specify "time"
          and "as_of" to Project::get_commit.
    
    API Changes:
        - Project::get_commit now takes named parameters instead of a single
          positional parameter.
        - Project::get_history_by_time no longer has an "at" argument. (Use
          get_commit(time => 'blah') instead.)
        - Svn's FileOrDirectory is now *both* a VCI::Abstract::File and a
          VCI::Abstract::Directory, instead of being neither.
    
    Bug Fixes:
        - File::is_executable wasn't correctly specified as being Bool.
        - Svn should now correctly delete temp files created by
          Commit::as_diff after build_as_diff returns.

0.1.2 Tue, Sep 11, 2007
    - Added tests for Committable ::history, ::first_revision,
      and ::last_revision.
    - Committable was always returning a Bzr::History instead of the
      correct History object.
    
    Hg:
        - History was in reverse order.
        - Commit::contents would fail if there were no changes to any files
          in the commit.
        - Files in Commit ::added, ::modified, ::removed, and ::contents
          didn't have their "revision" and "time" set.
    
    Svn:
        -Commit ::last_revision and ::first_revision were broken.

0.1.1 Mon, Sep 10, 2007
    New Features:
        - Commit objects now have an as_diff accessor, which allows you to
          get that particular commit as a "diff" from the VCS. This adds
          a requirement of Text::Diff::Parser 0.07.
    
    API Changes:
        - get_path, get_file, and get_directory now take a single named
          argument, "path", instead of a single un-named argument.
    
    Bugs Fixed:
        - Added tests for all the drivers, which fixed a lot of bugs. In short,
          don't use any version of VCI before this one.
    
    For VCI Developers:
        - If you set the VCI_TEST_DEBUG environment variable, it will be
          passed as the "debug" argument to VCI->connect, allowing you to
          see more information from the driver about what's going on in the
          test.
        - You can set VCI_REMOTE_TESTS = 1 in your environment to run
          tests that involve accessing machines over the Internet.

0.1.0_4 Fri, Sep 7, 2007
    - This release will probably be released as 0.1.1 in a few days,
      with a few POD improvements, unless there are terrible test failures
      that I don't know about.
    - Added tests for Hg, which found and fixed several bugs, listed lower
      in these notes.
    - We now require Text::Diff::Parser 0.07 which fixes bugs that affect us.
    - In Project, get_path, get_file, and get_directory now take named
      parameters instead of positional parameters, to prepare for future
      API improvements.
    
    Tests:
        - You can set VCI_TEST_DEBUG = 1 in the environment to have VCI
          connect with "debug" turned on during tests.
        - Set VCI_REMOTE_TESTS to 1 in the environment to run tests that
          involve accessing things across the Internet.
    
    Hg:
        - If you had a url like http://domain.com/repos/ for your Hg repo,
          Project names would look like "repos/project" instead of just
          "project".
        - Repository::projects returned an extra project that had an
          empty name.
        - Slashes at the start of a project name will be stripped, now.
        - Getting the contents of any directory other than the root_directory
          wasn't working.
        - Sometimes Committable objects would die when asked for their time,
          in certain timezones.
        - Commit::added, Commit::modified, and Commit::removed didn't work
          at all.
        - Messages had "<br/>" included in them, often.

0.1.0_3 Wed, Sep 3, 2007
    - The XML output format of bzr-xmloutput changed as of revision 18 of
      that plugin. The Bzr driver now supports both the old and the new
      format.
    - Calling Bzr::Repository->projects would sometimes fail because
      Repository.pm wasn't using VCI::VCS::Bzr::Project.
    - Tests were always failing because they weren't properly checking
      for non-perl-module prerequisites.

0.1.0_2 Mon, Sep 3, 2007
    - 0.1.0_1 was completely broken for several drivers (couldn't connect
      to a Repository).
    - Various fixes to Diffs in various drivers (compared to 0.1.0_1).
    - Project objects now remove trailing and starting forward-slashes
      from their names when they are initialized. So "/project/" will be the
      same as "project".
    - Various POD fixes.
    - Doing "./Build dist" will now always run tests before building the
      distribution. This is necessary because running the tests properly
      sets up t/repos/ for distribution.
    - Added tests for Cvs, Svn, Git, and Bzr, which caused a lot of re-arch
      and various bug fixes:
    
    Svn:
        - Support for local repositories, including relative paths.
        - "time" on objects from get_path, get_file, and get_directory
          was wrong. (Svn returns microseconds and we were interpreting
          them as seconds.)
        - The 'R' action is now interepreted as the file being modified,
          not added and then deleted.
        - Properly strip the final newline from Commit::message.
        - Copied/moved files now handled correctly (and how they are
          handled is better documented).
        - File and Directory objects from other Projects won't show up
          in your Project's Commit objects.
    
    Cvs:
        - Support for local repositories, including relative paths.
        - Repository now supports "projects".
        - File and Directory objects now return the correct time if gotten
          from get_path, get_file, or get_directory.
        - We weren't passing the "-u" argument to cvsps, so the History
          wasn't being updated if there was a new commit to the repository
          since the very first time anybody ever called "history" on this
          project.
    
    Git:
        - Calling "contents" on a versioned Directory now correctly returns
          the contents of that Directory at that time in history.
        - Commit::message was always returning an empty string. It now
          correctly returns the message.
        - File objects now return their most recent revision instead of
          'HEAD' if you got them from get_path or get_file.
        - Support for relative paths to local repos.
        - Repository::projects now also detects "bare" repositories.
    
    Bzr:
        - Commit:message no longer has an extra space at the start or an
          extra newline at the end.

0.1.0_1 Fri, Aug 31, 2007
    - Added "as_diff" to VCI::Abstract::Commit, and implemented it in all
      drivers. This allows you to get the actual changes done during
      the commit both as a raw diff from the VCS and as an object
      representing that diff.
    - Repository objects now fix "root" to end with a slash (if it doesn't
      already) on most VCSes, and fix it to *not* end with a slash on
      CVS.
    - Slightly improved debug output for Bzr.

0.0.3 Fri, Aug 31, 2007
    - Svn history was broken when the repo history contained copied items.

0.0.2 Fri, Aug 31, 2007
    - Bzr's history and contents were broken.
    - Svn's history was broken.
    - Git driver had some debug code left in that was breaking history.

0.0.1 Tue, Aug 28, 2007
    - Support for CVS
    - Test::Warn was missing from build_requires
    - Cleaned up documentation
    - Committables now can never be created with just time and no revision.

0.0.0_1 Mon, Aug 27, 2007
    - Initial release, supporting Bzr, Svn, Hg, and Git