use MooseX::Types::Moose qw/Str Maybe Bool HashRef ArrayRef/;
use List::MoreUtils qw/any zip/;
use DateTime;
+ use Gitalist::Git::Object::Commit;
+ use Gitalist::Git::Object::Blob;
use aliased 'Gitalist::Git::Object';
our $SHA1RE = qr/[0-9a-fA-F]{40}/;
unless ( $self->_is_valid_rev($sha1) ) {
$sha1 = $self->head_hash($sha1);
}
- return Object->new(
+ my $type = $self->run_cmd('cat-file', '-t', $sha1);
+ chomp($type);
+ my $class = 'Gitalist::Git::Object';
+ use Moose::Autobox;
+ if ($type eq ['commit', 'blob']->any) {
+ $class .= '::' . ucfirst($type);
+ };
+ return $class->new(
project => $self,
sha1 => $sha1,
+ type => $type,
);
}