0.7.1 Oct 31, 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.1 Aug 24, 2010
- VCI now explicitly requires Perl 5.8. (We probably always did actually
require 5.8, because some of our dependencies did.)
- The POD has all been reviewed and improved, for every module.
- VCI is no longer alpha-quality software, and so all such statements
to that effect have been removed from the POD.
- The VCI package now uses Module::Install instead of Module::Build
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.
- 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.
- 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.
Optimizations:
- 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.
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, 2009
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.1 Jan 2, 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.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.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.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.