Code

git-help -w: do not require to be in git repository
authorJunio C Hamano <gitster@pobox.com>
Thu, 13 Dec 2007 01:34:30 +0000 (17:34 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 13 Dec 2007 01:41:58 +0000 (17:41 -0800)
The users used to be able to say "git help cat-file" from anywhere, but
the browse-help script insisted to be in a git repository, which caused
"git help -w cat-file" to barf outside.  Correct it.

While at it, remove leftover debugging "echo".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-browse-help.sh
git-sh-setup.sh

index 817b3792c8cf35cdd5e594e4fb7aca3d62a49aee..b465911c9a418d79f5ff592d9c409b70d92d49e9 100755 (executable)
 #
 
 USAGE='[--browser=browser|--tool=browser] [cmd to display] ...'
-SUBDIRECTORY_OK=Yes
-OPTIONS_SPEC=
+
+# This must be capable of running outside of git directory, so
+# the vanilla git-sh-setup should not be used.
+NONGIT_OK=Yes
 . git-sh-setup
 
 # Install data.
@@ -37,7 +39,7 @@ valid_tool() {
 }
 
 init_browser_path() {
-       browser_path=`git config browser.$1.path`
+       test -z "$GIT_DIR" || browser_path=`git config browser.$1.path`
        test -z "$browser_path" && browser_path=$1
 }
 
@@ -69,7 +71,8 @@ do
     shift
 done
 
-if test -z "$browser"; then
+if test -z "$browser" && test -n "$GIT_DIR"
+then
     for opt in "help.browser" "web.browser"
     do
        browser="`git config $opt`"
@@ -91,7 +94,7 @@ if test -z "$browser" ; then
     else
        browser_candidates="w3m links lynx"
     fi
-    echo "browser candidates: $browser_candidates"
+
     for i in $browser_candidates; do
        init_browser_path $i
        if type "$browser_path" > /dev/null 2>&1; then
index 5aa62dda15d1c24d0b01845ded4c8bc15e98bf8a..b366761b976a136144c7483de5c883a084996816 100755 (executable)
@@ -122,26 +122,33 @@ get_author_ident_from_commit () {
        LANG=C LC_ALL=C sed -ne "$pick_author_script"
 }
 
-# Make sure we are in a valid repository of a vintage we understand.
-if [ -z "$SUBDIRECTORY_OK" ]
+# Make sure we are in a valid repository of a vintage we understand,
+# if we require to be in a git repository.
+if test -n "$NONGIT_OK"
 then
-       : ${GIT_DIR=.git}
-       test -z "$(git rev-parse --show-cdup)" || {
-               exit=$?
-               echo >&2 "You need to run this command from the toplevel of the working tree."
-               exit $exit
-       }
+       if git rev-parse --git-dir >/dev/null 2>&1
+       then
+               : ${GIT_DIR=.git}
+       fi
 else
-       GIT_DIR=$(git rev-parse --git-dir) || {
-           exit=$?
-           echo >&2 "Failed to find a valid git directory."
-           exit $exit
+       if [ -z "$SUBDIRECTORY_OK" ]
+       then
+               : ${GIT_DIR=.git}
+               test -z "$(git rev-parse --show-cdup)" || {
+                       exit=$?
+                       echo >&2 "You need to run this command from the toplevel of the working tree."
+                       exit $exit
+               }
+       else
+               GIT_DIR=$(git rev-parse --git-dir) || {
+                   exit=$?
+                   echo >&2 "Failed to find a valid git directory."
+                   exit $exit
+               }
+       fi
+       test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || {
+               echo >&2 "Unable to determine absolute path of git directory"
+               exit 1
        }
+       : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"}
 fi
-
-test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || {
-    echo >&2 "Unable to determine absolute path of git directory"
-    exit 1
-}
-
-: ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"}