Git.pm: Handle failed commands' output
Currently if an external command returns error exit code, a generic exception is thrown and there is no chance for the caller to retrieve the command's output. This patch introduces a Git::Error::Command exception class which is thrown in this case and contains both the error code and the captured command output. You can use the new git_cmd_try statement to fatally catch the exception while producing a user-friendly message. It also adds command_close_pipe() for easier checking of exit status of a command we have just a pipe handle of. It has partial forward dependency on the next patch, but basically only in the area of documentation. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
97b16c0674
commit
8b9150e3e3
@ -7,6 +7,7 @@
|
||||
|
||||
use strict;
|
||||
use Git;
|
||||
use Error qw(:try);
|
||||
|
||||
my $repo = Git->repository();
|
||||
|
||||
@ -31,7 +32,17 @@ sub andjoin {
|
||||
}
|
||||
|
||||
sub repoconfig {
|
||||
my ($val) = $repo->command_oneline('repo-config', '--get', 'merge.summary');
|
||||
my $val;
|
||||
try {
|
||||
$val = $repo->command_oneline('repo-config', '--get', 'merge.summary');
|
||||
} catch Git::Error::Command with {
|
||||
my ($E) = shift;
|
||||
if ($E->value() == 1) {
|
||||
return undef;
|
||||
} else {
|
||||
throw $E;
|
||||
}
|
||||
};
|
||||
return $val;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user