use Path::Class;
use Gitalist::Git::Util;
+ our $SHA1RE = qr/[0-9a-fA-F]{40}/;
+
has name => ( isa => NonEmptySimpleStr,
is => 'ro' );
has path => ( isa => "Path::Class::Dir",
return $last_change;
}
+=head2 head_hash
+
+Find the hash of a given head (defaults to HEAD).
+
+=cut
+
+ method head_hash (Str $head?) {
+ my $output = $self->run_cmd(qw/rev-parse --verify/, $head || 'HEAD' );
+ return unless defined $output;
+
+ my($sha1) = $output =~ /^($SHA1RE)$/;
+ return $sha1;
+ }
+
method project_dir (Path::Class::Dir $project) {
my $dir = $project->stringify;
$dir .= '/.git'
BEGIN { use_ok 'Gitalist::Git::Project' }
use Path::Class;
+my $gitdir = dir("$Bin/../lib/repositories/repo1");
+
my $proj = Gitalist::Git::Project->new(
- path => dir("$Bin/../lib/repositories/repo1"),
+ path => $gitdir,
name => "repo1",
);
isa_ok($proj, 'Gitalist::Git::Project');
-like($proj->path, qr#/repositories/repo1#, 'repository path is set');
+is($proj->path, $gitdir, 'repository path is set');
is($proj->name, qw/repo1/, 'repository name is set');
is($proj->description, qq/some test repository/, 'repository description loaded');
isa_ok($proj->last_change, 'DateTime', 'last_change');
-
+is($proj->head_hash, qw/36c6c6708b8360d7023e8a1649c45bcf9b3bd818/, 'head_hash for HEAD is correct');
BEGIN { use_ok 'Gitalist::Git::Repo' }
-my $repo = Gitalist::Git::Repo->new( repo_dir => "$Bin/../lib/repositories" );
+my $repo_dir = "$Bin/../lib/repositories";
+my $repo = Gitalist::Git::Repo->new( repo_dir => $repo_dir );
isa_ok($repo, 'Gitalist::Git::Repo');
-is($repo->repo_dir, "$Bin/../lib/repositories", "repo->repo_dir is correct" );
+is($repo->repo_dir, $repo_dir, "repo->repo_dir is correct" );
my $project_list = $repo->list_projects;
-warn(Dumper($project_list));
isa_ok(@$project_list[0], 'Gitalist::Git::Project');
BEGIN { use_ok 'Gitalist::Git::Util' }
use Path::Class;
+my $gitdir = dir("$Bin/../lib/repositories/repo1");
+
my $proj = Gitalist::Git::Util->new(
- gitdir => dir("$Bin/../lib/repositories/repo1"),
+ gitdir => $gitdir,
);
isa_ok($proj, 'Gitalist::Git::Util');
like( $proj->_git, qr#/git$#, 'git binary found');
isa_ok($proj->_gpp, 'Git::PurePerl', 'gpp instance created');
-like($proj->gitdir, qr#/repositories/repo1#, 'repository path is set');
+is($proj->gitdir, $gitdir, 'repository path is set');