X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist%2FGit%2FUtil.pm;h=a7865b742e34cf952c93a403afa3128bf2d495af;hb=839da3d7b73ba6248d42f0298753220d2b09b996;hp=8564cb081aca59e7021b429727ea9a95545edd2d;hpb=832cbc818533405f74b10504d0bdd3c4258f9a75;p=catagits%2FGitalist.git diff --git a/lib/Gitalist/Git/Util.pm b/lib/Gitalist/Git/Util.pm index 8564cb0..a7865b7 100644 --- a/lib/Gitalist/Git/Util.pm +++ b/lib/Gitalist/Git/Util.pm @@ -3,7 +3,9 @@ use MooseX::Declare; class Gitalist::Git::Util { use File::Which; use Git::PurePerl; + use IPC::Run qw(run); use MooseX::Types::Common::String qw/NonEmptySimpleStr/; + has project => ( isa => 'Gitalist::Git::Project', handles => { gitdir => 'path' }, @@ -38,16 +40,10 @@ EOR method run_cmd (@args) { unshift @args, ( '--git-dir' => $self->gitdir ) if $self->has_project; -# print STDERR 'RUNNING: ', $self->_git, qq[ @args], $/; - - open my $fh, '-|', $self->_git, @args - or die "failed to run git command"; - binmode $fh, ':encoding(UTF-8)'; - my $output = do { local $/ = undef; <$fh> }; - close $fh; + run [$self->_git, @args], \my($in, $out, $err); - return $output; + return $out; } method get_gpp_object (NonEmptySimpleStr $sha1) {