Use git-ls-files to detect whether the user has supplied an invalid pathspec. Note that the run_cmd_pipe function unfortunately does not transmit the exit status of the child process, so there is no way to use it in conjunction with a command like "git-ls-files --error-unmatch". The alternative is to use Perl's system() function, but that floods the standard output. So here we make use of the new -q switch to git-ls-files so that we can both obtain the exit status of the command and not have to worry about the standard output. Error conditions are still echoed back to the user because they come through on the standard error. Signed-off-by: Wincent Colaiuta <win@xxxxxxxxxxx> --- git-add--interactive.perl | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/git-add--interactive.perl b/git-add--interactive.perl index 5fc48a5..8706528 100755 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@ -775,6 +775,12 @@ add untracked - add contents of untracked files to the staged set of changes EOF } +sub check_args { + return unless @ARGV; + exit $? if system(qw(git ls-files -q --exclude-standard + --error-unmatch --with-tree=HEAD --), @ARGV); +} + sub main_loop { my @cmd = ([ 'status', \&status_cmd, ], [ 'update', \&update_cmd, ], @@ -804,5 +810,6 @@ sub main_loop { } refresh(); +check_args(); status_cmd(); main_loop(); -- 1.5.3.6.886.g3364 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html