summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2ad77e6)
raw | patch | inline | side by side (parent: 2ad77e6)
author | Junio C Hamano <junkio@cox.net> | |
Mon, 15 Aug 2005 22:37:37 +0000 (15:37 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Mon, 15 Aug 2005 22:37:37 +0000 (15:37 -0700) |
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>
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>
git | patch | blob | history |
index 9f511956ae1dd2dcfef3e2c16e13f6ba6f69175f..0d8b382aa9a804cd3ec54591d78d8ad9b1b8766b 100755 (executable)
--- a/git
+++ b/git
#!/bin/sh
-cmd="$1"
-shift
-if which git-$cmd-script >& /dev/null
-then
- exec git-$cmd-script "$@"
-fi
-if which git-$cmd >& /dev/null
-then
- exec git-$cmd "$@"
-fi
+cmd=
+path=$(dirname $0)
+case "$#" in
+0) ;;
+*) cmd="$1"
+ shift
+ test -x $path/git-$cmd-script && exec $path/git-$cmd-script "$@"
+ test -x $path/git-$cmd && exec $path/git-$cmd "$@" ;;
+esac
-alternatives=($(echo $PATH | tr ':' '\n' | while read i; do ls $i/git-*-script 2> /dev/null; done))
+echo "Usage: git COMMAND [OPTIONS] [TARGET]"
+if [ -n "$cmd" ]; then
+ echo " git command '$cmd' not found: commands are:"
+else
+ echo " git commands are:"
+fi
-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
+alternatives=$(cd $path &&
+ ls git-*-script | sed -e 's/git-//' -e 's/-script//')
+echo $alternatives | fmt | sed 's/^/ /'