From caf4f582b2bb4d5582540aa49d29749b2600cd03 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 14 Oct 2005 21:56:46 -0700 Subject: Improve "git add" again. This makes it possible to add paths that have funny characters (TAB and LF) in them, and makes adding many paths more efficient in general. New flag "--stdin" to update-index was initially added for different purpose, but it turns out to be a perfect match for feeding "ls-files --others -z" output to improve "git add". It also adds "--verbose" flag to update-index for use with "git add" command. Signed-off-by: Junio C Hamano --- git-add.sh | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'git-add.sh') diff --git a/git-add.sh b/git-add.sh index 3d364db25..a8498c729 100755 --- a/git-add.sh +++ b/git-add.sh @@ -6,10 +6,9 @@ while : ; do case "$1" in -n) show_only=true - verbose=true ;; -v) - verbose=true + verbose=--verbose ;; *) break @@ -19,14 +18,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 -- cgit v1.2.1