45e48120bb
This is in the same spirit as an earlier patch for git-commit. It does an extra ls-files to avoid complaining when a fully tracked directory name is given on the command line (otherwise --others restriction would say the pathspec does not match). Signed-off-by: Junio C Hamano <junkio@cox.net>
53 lines
760 B
Bash
Executable File
53 lines
760 B
Bash
Executable File
#!/bin/sh
|
|
|
|
USAGE='[-n] [-v] <file>...'
|
|
SUBDIRECTORY_OK='Yes'
|
|
. git-sh-setup
|
|
|
|
show_only=
|
|
verbose=
|
|
while : ; do
|
|
case "$1" in
|
|
-n)
|
|
show_only=true
|
|
;;
|
|
-v)
|
|
verbose=--verbose
|
|
;;
|
|
-*)
|
|
usage
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Check misspelled pathspec
|
|
case "$#" in
|
|
0) ;;
|
|
*)
|
|
git-ls-files --error-unmatch --others --cached -- "$@" >/dev/null || {
|
|
echo >&2 "Maybe you misspelled it?"
|
|
exit 1
|
|
}
|
|
;;
|
|
esac
|
|
|
|
if test -f "$GIT_DIR/info/exclude"
|
|
then
|
|
git-ls-files -z \
|
|
--exclude-from="$GIT_DIR/info/exclude" \
|
|
--others --exclude-per-directory=.gitignore -- "$@"
|
|
else
|
|
git-ls-files -z \
|
|
--others --exclude-per-directory=.gitignore -- "$@"
|
|
fi |
|
|
case "$show_only" in
|
|
true)
|
|
xargs -0 echo ;;
|
|
*)
|
|
git-update-index --add $verbose -z --stdin ;;
|
|
esac
|