summaryrefslogtreecommitdiff
path: root/git-add.sh
diff options
context:
space:
mode:
Diffstat (limited to 'git-add.sh')
-rwxr-xr-xgit-add.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/git-add.sh b/git-add.sh
new file mode 100755
index 0000000..d6a4bc7
--- /dev/null
+++ b/git-add.sh
@@ -0,0 +1,56 @@
+#!/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
+ ;;
+ --)
+ 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