bisect: quote pathnames for eval safety.
[gitweb.git] / git-add.sh
index 7d91eeb65705fba291b3baf0e006c9ec90f96276..b5fe46aa20865d6785390fd22406d32b00a77845 100755 (executable)
@@ -1,2 +1,43 @@
 #!/bin/sh
-git-update-index --add -- "$@"
+
+usage() {
+    die "usage: git add [-n] [-v] <file>..."
+}
+
+show_only=
+verbose=
+while : ; do
+  case "$1" in
+    -n)
+       show_only=true
+       ;;
+    -v)
+       verbose=--verbose
+       ;;
+    -*)
+       usage
+       ;;
+    *)
+       break
+       ;;
+  esac
+  shift
+done
+
+GIT_DIR=$(git-rev-parse --git-dir) || exit
+
+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