Usage message clean-up, take #2
There were some problems with the usage message clean-up patch series. I hadn't realised that subdirectory aware scripts can't source git-sh-setup. I propose that we change this and let the scripts which are subdirectory aware set a variable, SUBDIRECTORY_OK, before they source git-sh-setup. The scripts will also set USAGE and possibly LONG_USAGE before they source git-sh-setup. If LONG_USAGE isn't set it defaults to USAGE. If we go this way it's easy to catch --help in git-sh-setup, print the (long) usage message to stdout and exit cleanly. git-sh-setup can define a 'usage' shell function which can be called by the scripts to print the short usage string to stderr and exit non-cleanly. It will also be easy to change $0 to basename $0 or something else, if would like to do that sometime in the future. What follows is a patch to convert a couple of the commands to this style. If it's ok with everyone to do it this way I will convert the rest of the scripts too. [jc: thrown in to proposed updates queue for comments.] Signed-off-by: Junio C Hamano <junkio@cox.net>maint
							parent
							
								
									01f49e3453
								
							
						
					
					
						commit
						d025524d9d
					
				|  | @ -1,4 +1,15 @@ | ||||||
| #!/bin/sh | #!/bin/sh | ||||||
|  |  | ||||||
|  | USAGE='[start|bad|good|next|reset|visualize]' | ||||||
|  | LONG_USAGE='git bisect start [<pathspec>]	reset bisect state and start bisection. | ||||||
|  | git bisect bad [<rev>]		mark <rev> a known-bad revision. | ||||||
|  | git bisect good [<rev>...]	mark <rev>... known-good revisions. | ||||||
|  | git bisect next			find next bisection to test and check it out. | ||||||
|  | git bisect reset [<branch>]	finish bisection search and go back to branch. | ||||||
|  | git bisect visualize            show bisect status in gitk. | ||||||
|  | git bisect replay <logfile>	replay bisection log | ||||||
|  | git bisect log			show bisect log.' | ||||||
|  |  | ||||||
| . git-sh-setup | . git-sh-setup | ||||||
|  |  | ||||||
| sq() { | sq() { | ||||||
|  | @ -11,19 +22,6 @@ sq() { | ||||||
| 	' "$@" | 	' "$@" | ||||||
| } | } | ||||||
|  |  | ||||||
| usage() { |  | ||||||
|     echo >&2 'usage: git bisect [start|bad|good|next|reset|visualize] |  | ||||||
| git bisect start [<pathspec>]	reset bisect state and start bisection. |  | ||||||
| git bisect bad [<rev>]		mark <rev> a known-bad revision. |  | ||||||
| git bisect good [<rev>...]	mark <rev>... known-good revisions. |  | ||||||
| git bisect next			find next bisection to test and check it out. |  | ||||||
| git bisect reset [<branch>]	finish bisection search and go back to branch. |  | ||||||
| git bisect visualize            show bisect status in gitk. |  | ||||||
| git bisect replay <logfile>	replay bisection log |  | ||||||
| git bisect log			show bisect log.' |  | ||||||
|     exit 1 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| bisect_autostart() { | bisect_autostart() { | ||||||
| 	test -d "$GIT_DIR/refs/bisect" || { | 	test -d "$GIT_DIR/refs/bisect" || { | ||||||
| 		echo >&2 'You need to start by "git bisect start"' | 		echo >&2 'You need to start by "git bisect start"' | ||||||
|  |  | ||||||
|  | @ -1,21 +1,12 @@ | ||||||
| #!/bin/sh | #!/bin/sh | ||||||
|  |  | ||||||
| GIT_DIR=`git-rev-parse --git-dir` || exit $? | USAGE='[-d <branch>] | [[-f] <branch> [start-point]]' | ||||||
|  | LONG_USAGE='If no arguments, show available branches and mark current branch with a star. | ||||||
| die () { |  | ||||||
|     echo >&2 "$*" |  | ||||||
|     exit 1 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| usage () { |  | ||||||
|     echo >&2 "usage: $(basename $0)"' [-d <branch>] | [[-f] <branch> [start-point]] |  | ||||||
|  |  | ||||||
| If no arguments, show available branches and mark current branch with a star. |  | ||||||
| If one argument, create a new branch <branchname> based off of current HEAD. | If one argument, create a new branch <branchname> based off of current HEAD. | ||||||
| If two arguments, create a new branch <branchname> based off of <start-point>. | If two arguments, create a new branch <branchname> based off of <start-point>.' | ||||||
| ' |  | ||||||
|     exit 1 | SUBDIRECTORY_OK='Yes' | ||||||
| } | . git-sh-setup | ||||||
|  |  | ||||||
| headref=$(git-symbolic-ref HEAD | sed -e 's|^refs/heads/||') | headref=$(git-symbolic-ref HEAD | sed -e 's|^refs/heads/||') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ -11,13 +11,37 @@ | ||||||
| # exporting it. | # exporting it. | ||||||
| unset CDPATH | unset CDPATH | ||||||
|  |  | ||||||
| : ${GIT_DIR=.git} |  | ||||||
| : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} |  | ||||||
|  |  | ||||||
| die() { | die() { | ||||||
| 	echo >&2 "$@" | 	echo >&2 "$@" | ||||||
| 	exit 1 | 	exit 1 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | usage() { | ||||||
|  | 	die "Usage: $0 $USAGE" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if [ -z "$LONG_USAGE" ] | ||||||
|  | then | ||||||
|  | 	LONG_USAGE="Usage: $0 $USAGE" | ||||||
|  | else | ||||||
|  | 	LONG_USAGE="Usage: $0 $USAGE | ||||||
|  |  | ||||||
|  | $LONG_USAGE" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | case "$1" in | ||||||
|  | 	--h|--he|--hel|--help) | ||||||
|  | 	echo "$LONG_USAGE" | ||||||
|  | 	exit | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | if [ -z "$SUBDIRECTORY_OK" ] | ||||||
|  | then | ||||||
|  | 	: ${GIT_DIR=.git} | ||||||
|  | 	: ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} | ||||||
|  |  | ||||||
| 	# Make sure we are in a valid repository of a vintage we understand. | 	# Make sure we are in a valid repository of a vintage we understand. | ||||||
| 	GIT_DIR="$GIT_DIR" git-var GIT_AUTHOR_IDENT >/dev/null || exit | 	GIT_DIR="$GIT_DIR" git-var GIT_AUTHOR_IDENT >/dev/null || exit | ||||||
|  | else | ||||||
|  | 	GIT_DIR=$(git-rev-parse --git-dir) || exit | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | @ -2,7 +2,16 @@ | ||||||
| # | # | ||||||
| # Copyright (c) 2005 Linus Torvalds | # Copyright (c) 2005 Linus Torvalds | ||||||
| # | # | ||||||
| GIT_DIR=$(git-rev-parse --git-dir) || exit |  | ||||||
|  | USAGE='' | ||||||
|  | SUBDIRECTORY_OK='Yes' | ||||||
|  |  | ||||||
|  | . git-sh-setup | ||||||
|  |  | ||||||
|  | if [ "$#" != "0" ] | ||||||
|  | then | ||||||
|  |   usage | ||||||
|  | fi | ||||||
|  |  | ||||||
| report () { | report () { | ||||||
|   header="# |   header="# | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Fredrik Kuivinen
						Fredrik Kuivinen