New tests are added to the git-rm test case to cover this as well. Signed-off-by: Carl Worth <cworth@cworth.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
USAGE='[-f] [-n] [-v] [--] <file>...'
 | 
						|
SUBDIRECTORY_OK='Yes'
 | 
						|
. git-sh-setup
 | 
						|
 | 
						|
remove_files=
 | 
						|
show_only=
 | 
						|
verbose=
 | 
						|
while : ; do
 | 
						|
  case "$1" in
 | 
						|
    -f)
 | 
						|
	remove_files=true
 | 
						|
	;;
 | 
						|
    -n)
 | 
						|
	show_only=true
 | 
						|
	;;
 | 
						|
    -v)
 | 
						|
	verbose=--verbose
 | 
						|
	;;
 | 
						|
    --)
 | 
						|
	shift; break
 | 
						|
	;;
 | 
						|
    -*)
 | 
						|
	usage
 | 
						|
	;;
 | 
						|
    *)
 | 
						|
	break
 | 
						|
	;;
 | 
						|
  esac
 | 
						|
  shift
 | 
						|
done
 | 
						|
 | 
						|
# This is typo-proofing. If some paths match and some do not, we want
 | 
						|
# to do nothing.
 | 
						|
case "$#" in
 | 
						|
0)	;;
 | 
						|
*)
 | 
						|
	git-ls-files --error-unmatch -- "$@" >/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" \
 | 
						|
	--exclude-per-directory=.gitignore -- "$@"
 | 
						|
else
 | 
						|
	git-ls-files -z \
 | 
						|
	--exclude-per-directory=.gitignore -- "$@"
 | 
						|
fi |
 | 
						|
case "$show_only,$remove_files" in
 | 
						|
true,*)
 | 
						|
	xargs -0 echo
 | 
						|
	;;
 | 
						|
*,true)
 | 
						|
	xargs -0 sh -c "
 | 
						|
		while [ \$# -gt 0 ]; do
 | 
						|
			file=\$1; shift
 | 
						|
			rm -- \"\$file\" && git-update-index --remove $verbose \"\$file\"
 | 
						|
		done
 | 
						|
	" inline
 | 
						|
	;;
 | 
						|
*)
 | 
						|
	git-update-index --force-remove $verbose -z --stdin
 | 
						|
	;;
 | 
						|
esac
 |