[PATCH] clean up git script
Makes git work with a pure POSIX shell (tested with bash --posix and ash). Right now git causes ash to choke on the redundant shift on line two. Reduces the number of system calls git makes just to do a usage statement from 22610 to 1122, and the runtime for same from 349ms to 29ms on my x86 Linux box. Presents a standard usage statement, and pretty prints the available commands in a form that does not scroll off small terminals. [jc: while shifting when $# was zero was a bug, the original patch failed to shift when it needs to, which I fixed up.] Signed-off-by: Amos Waterland <apw@rossby.metr.ou.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
2ad77e67c7
commit
b0c6f8d767
33
git
33
git
|
@ -1,19 +1,22 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
cmd="$1"
|
|
||||||
|
cmd=
|
||||||
|
path=$(dirname $0)
|
||||||
|
case "$#" in
|
||||||
|
0) ;;
|
||||||
|
*) cmd="$1"
|
||||||
shift
|
shift
|
||||||
if which git-$cmd-script >& /dev/null
|
test -x $path/git-$cmd-script && exec $path/git-$cmd-script "$@"
|
||||||
then
|
test -x $path/git-$cmd && exec $path/git-$cmd "$@" ;;
|
||||||
exec git-$cmd-script "$@"
|
esac
|
||||||
|
|
||||||
|
echo "Usage: git COMMAND [OPTIONS] [TARGET]"
|
||||||
|
if [ -n "$cmd" ]; then
|
||||||
|
echo " git command '$cmd' not found: commands are:"
|
||||||
|
else
|
||||||
|
echo " git commands are:"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if which git-$cmd >& /dev/null
|
alternatives=$(cd $path &&
|
||||||
then
|
ls git-*-script | sed -e 's/git-//' -e 's/-script//')
|
||||||
exec git-$cmd "$@"
|
echo $alternatives | fmt | sed 's/^/ /'
|
||||||
fi
|
|
||||||
|
|
||||||
alternatives=($(echo $PATH | tr ':' '\n' | while read i; do ls $i/git-*-script 2> /dev/null; done))
|
|
||||||
|
|
||||||
echo Git command "'$cmd'" not found. Try one of
|
|
||||||
for i in "${alternatives[@]}"; do
|
|
||||||
echo $i | sed 's:^.*/git-: :' | sed 's:-script$::'
|
|
||||||
done | sort | uniq
|
|
||||||
|
|
Loading…
Reference in New Issue