Staging
v0.5.1
Revision dff86e282fa38bf60d53b82cfa54f5f449563338 authored by Junio C Hamano on 28 March 2006, 00:08:29 UTC, committed by Junio C Hamano on 28 March 2006, 00:08:29 UTC
All of the things that were not in the "master" branch were
either cooked long enough in "next" without causing problems
(e.g. insanely fast rename detector or true built-in diff) or
isolated in a specific subsystem (e.g. tar-tree and svnimport).

So I am clearing the deck to prepare for a 1.3.0.  Remaining
wrinkles, if any, will be ironed in the "master" branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent 65b5e41
Raw File
git-rm.sh
#!/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
back to top