summaryrefslogtreecommitdiff
path: root/git-add.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-10-30 18:06:39 -0800
committerJunio C Hamano <junkio@cox.net>2005-10-30 18:06:39 -0800
commite634aec752642dcf86c3fc82025e43381d6768c2 (patch)
treea589b6756894d18c841ac61499e5d2c9beda36fd /git-add.sh
parenta1c7a69047e88244ed321b5aa2a8bcbba5a869c2 (diff)
parent80e0c0ab91e1cf6a6315d0431bf6873ebbf8bef0 (diff)
downloadgit-e634aec752642dcf86c3fc82025e43381d6768c2.tar.gz
GIT 0.99.9av0.99.9a
... to contain the RPM workaround. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-add.sh')
-rwxr-xr-xgit-add.sh37
1 files changed, 24 insertions, 13 deletions
diff --git a/git-add.sh b/git-add.sh
index 3d364db251..b5fe46aa20 100755
--- a/git-add.sh
+++ b/git-add.sh
@@ -1,15 +1,21 @@
#!/bin/sh
+usage() {
+ die "usage: git add [-n] [-v] <file>..."
+}
+
show_only=
verbose=
while : ; do
case "$1" in
-n)
show_only=true
- verbose=true
;;
-v)
- verbose=true
+ verbose=--verbose
+ ;;
+ -*)
+ usage
;;
*)
break
@@ -19,14 +25,19 @@ while : ; do
done
GIT_DIR=$(git-rev-parse --git-dir) || exit
-global_exclude=
-if [ -f "$GIT_DIR/info/exclude" ]; then
- global_exclude="--exclude-from=$GIT_DIR/info/exclude"
-fi
-for i in $(git-ls-files --others \
- $global_exclude --exclude-per-directory=.gitignore \
- "$@")
-do
- [ "$verbose" ] && echo " $i"
- [ "$show_only" ] || git-update-index --add -- "$i" || exit
-done
+
+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