NAME
Git::Repository::Command - Command objects for running git
SYNOPSIS
use Git::Repository::Command;
# invoke an external git command, and return an object
$cmd = Git::Repository::Command->(@cmd);
# a Git::Repository object can provide more context
$cmd = Git::Repository::Command->( $r, @cmd );
# options can be passed as a hashref
$cmd = Git::Repository::Command->( $r, @cmd, \%option );
# $cmd is basically a hash, with keys / accessors
$cmd->stdin(); # filehandle to the process' stdin (write)
$cmd->stdout(); # filehandle to the process' stdout (read)
$cmd->stderr(); # filehandle to the process' stdout (read)
$cmd->pid(); # pid of the child process
# done!
$cmd->close();
# exit information
$cmd->exit(); # exit status
$cmd->signal(); # signal
$cmd->core(); # core dumped? (boolean)
DESCRIPTION
Git::Repository::Command
is a class that actually launches a git commands, allowing to interact with it through its STDIN
, STDOUT
and STDERR
.
This module is meant to be invoked through Git::Repository
.
METHODS
Git::Repository::Command
supports the following methods:
new( @cmd )
Runs a git command with the parameters in @cmd
.
If @cmd
contains a Git::Repository
object, it is used to provide context to the git command.
If @cmd
contains a hash reference, it is taken as an option hash. The recognized keys are:
git
-
The actual git binary to run. By default, it is just
git
. cwd
-
The current working directory in which the git command will be run.
env
-
A hashref containing key / values to add to the git command environment.
input
-
A string that is send to the git command standard input, which is then closed.
Using the empty string as
input
will close the git command standard input without writing to it.Using
undef
asinput
will not do anything. This behaviour provides a way to modify options inherited fromnew()
or a hash populated by some other part of the program.On some systems, some git commands may close standard input on startup, which will cause a SIGPIPE when trying to write to it. This will raise an exception.
If the Git::Repository
object has its own option hash, it will be used to provide default values that can be overriden by the actual option hash passed to new()
.
If several option hashes are passed to new()
, only the first one will be used.
The Git::Repository::Command
object returned by new()
has a number of attributes defined (see below).
close()
Close all pipes to the child process, and collects exit status, etc. and defines a number of attributes (see below).
Accessors
The attributes of a Git::Repository::Command
object are also accessible through a number of accessors.
The object returned by new()
will have the following attributes defined:
- cmdline()
-
Return the command-line actually executed, as a list of strings.
- pid()
-
The PID of the underlying git command.
- stdin()
-
A filehandle opened in write mode to the child process' standard input.
- stdout()
-
A filehandle opened in read mode to the child process' standard output.
- stderr()
-
A filehandle opened in read mode to the child process' standard error output.
After the call to close()
, the following attributes will be defined:
- exit()
-
The exit status of the underlying git command.
- core()
-
A boolean value indicating if the command dumped core.
- signal()
-
The signal, if any, that killed the command.
AUTHOR
Philippe Bruhat (BooK), <book at cpan.org>
COPYRIGHT
Copyright 2010 Philippe Bruhat (BooK), all rights reserved.
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.