The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.2.0_1

  • 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.

Changes for version 0.1.0_4

  • 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.

Changes for version 0.1.0_3

  • 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.

Changes for version 0.1.0_2

  • 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.

Modules

VCI
A generic interface for interacting with various version-control systems.
Represents a single atomic commit to the repository.
Anything that can be committed to a repository.
An object representing a "diff" or "patch" from a Version-Control System
The changes made to a particular file, in a Diff.
A directory in the repository.
A single file in the repository.
Anything that can contain a File or Directory.
The history of a Project, File, Directory, etc.
A particular project in the Repository
A repository where version-controlled items are kept.
Types and Utility Functions used by VCI
The Bazaar implementation of VCI
The CVS implementation of VCI
The Git Implementation of VCI
The Mercurial (aka Hg) implementation of VCI
The Subversion implementation of VCI

Provides

in lib/VCI/VCS/Bzr/Commit.pm
in lib/VCI/VCS/Bzr/Committable.pm
in lib/VCI/VCS/Bzr/Directory.pm
in lib/VCI/VCS/Bzr/File.pm
in lib/VCI/VCS/Bzr/History.pm
in lib/VCI/VCS/Bzr/Project.pm
in lib/VCI/VCS/Bzr/Repository.pm
in lib/VCI/VCS/Cvs/Commit.pm
in lib/VCI/VCS/Cvs/Diff.pm
in lib/VCI/VCS/Cvs/Directory.pm
in lib/VCI/VCS/Cvs/File.pm
in lib/VCI/VCS/Cvs/History.pm
in lib/VCI/VCS/Cvs/Project.pm
in lib/VCI/VCS/Cvs/Repository.pm
in lib/VCI/VCS/Git/Commit.pm
in lib/VCI/VCS/Git/Committable.pm
in lib/VCI/VCS/Git/Diff.pm
in lib/VCI/VCS/Git/Directory.pm
in lib/VCI/VCS/Git/File.pm
in lib/VCI/VCS/Git/History.pm
in lib/VCI/VCS/Git/Project.pm
in lib/VCI/VCS/Git/Repository.pm
in lib/VCI/VCS/Hg/Commit.pm
in lib/VCI/VCS/Hg/Committable.pm
in lib/VCI/VCS/Hg/Diff.pm
in lib/VCI/VCS/Hg/Directory.pm
in lib/VCI/VCS/Hg/File.pm
in lib/VCI/VCS/Hg/History.pm
in lib/VCI/VCS/Hg/Project.pm
in lib/VCI/VCS/Hg/Repository.pm
in lib/VCI/VCS/Svn/Commit.pm
in lib/VCI/VCS/Svn/Committable.pm
in lib/VCI/VCS/Svn/Directory.pm
in lib/VCI/VCS/Svn/File.pm
in lib/VCI/VCS/Svn/FileOrDirectory.pm
in lib/VCI/VCS/Svn/History.pm
in lib/VCI/VCS/Svn/Project.pm
in lib/VCI/VCS/Svn/Repository.pm