package VCI::VCS::Git; use Moose; our $VERSION = '0.7.1'; # Assure that we die immediately upon use if somebody tries to use us # without the proper prerequisite installed. use Git; extends 'VCI'; __PACKAGE__->meta->make_immutable; 1; __END__ =head1 NAME VCI::VCS::Git - Object-oriented interface to Git =head1 SYNOPSIS use VCI; my $repository = VCI->connect(type => 'Git', repo => 'path/above/clone/'); =head1 DESCRIPTION This is a "driver" for L<VCI> for the Git version-control system. You can find out more about Git at L<http://git-scm.com/>. For information on how to use VCI::VCS::Git, see L<VCI>. Due to the design of Git, VCI::VCS::Git is limited to interacting with local repositories. Limited interaction with remote repositories may be possible in the future, depending on what is desired from VCI users. =head1 CONNECTING TO A GIT REPOSITORY For the L<repo|VCI/repo> argument to L<VCI/connect>, choose the directory above where your projects are kept. For example, if you have a project whose path is C</var/git/project>, then the C<repo> would be C</var/git/>. =head1 REVISION IDENTIFIERS Commit, File, and Directory objects use the full sha1 id of the Commit (not the abbreviated sha1 hash) as their identifier. =head1 TAINT SAFETY C<VCI::VCS::Git> is not yet safe to use in taint mode. It currently uses C<Git.pm>, which is not itself taint-safe. =head1 LIMITATIONS AND EXTENSIONS These are limitations of VCI::VCS::Git compared to the general API specified in the C<VCI::Abstract> modules. =head2 VCI::VCS::Git You can only C<connect> to a local repository. Remote repositories are not supported. =head2 VCI::VCS::Repository C<projects> generates the list of projects by finding all directories in the repository that have F<.git> directories in them (or directories that are a "bare" repository). So if there are projects further down in the directory hierarchy, they won't be found. =head2 VCI::VCS::Directory Calling C<first_revision> or C<last_revision> on a Directory will fail, as Directories are not tracked in any History. (This may be fixed in a future version.) =head1 PERFORMANCE Git itself is extremely fast, but many optimizations have not yet been implemented in VCI itself. However, VCI::VCS::Git should still be fairly fast on all operations for medium-sized repositories (under 10000 commits and with under 10000 files). =head1 SEE ALSO L<VCI> =head1 AUTHOR Max Kanat-Alexander <firstname.lastname@example.org> =head1 COPYRIGHT AND LICENSE Copyright 2007-2010 by Everything Solved, Inc. L<http://www.everythingsolved.com> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.