git-blame: Use the same tests for git-blame as for git-annotate
[gitweb.git] / git-add.sh
index 7d91eeb65705fba291b3baf0e006c9ec90f96276..d6a4bc7d092f619d3c9dd20507c6659e13f82a3c 100755 (executable)
@@ -1,2 +1,56 @@
 #!/bin/sh
-git-update-index --add -- "$@"
+
+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
+       ;;
+    --)
+       shift
+       break
+       ;;
+    -*)
+       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