summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2007-02-22 00:28:49 -0800
committerLibravatar Junio C Hamano <junkio@cox.net>2007-02-22 00:31:51 -0800
commit2b5f9a8c0cff511f2bb0833b1ee02645b79323f4 (patch)
tree7b9f4e8259e225995a59a805e1984248f153e43b
parentGIT 1.5.0 (diff)
downloadtgif-2b5f9a8c0cff511f2bb0833b1ee02645b79323f4.tar.xz
git-status: do not be totally useless in a read-only repository.
This makes git-status work semi-decently in a read-only repository. Earlier, the command simply died with "cannot lock the index file" before giving any useful information to the user. Because index won't be updated in a read-only repository, stat-dirty paths appear in the "Changed but not updated" list. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-xgit-commit.sh21
1 files changed, 11 insertions, 10 deletions
diff --git a/git-commit.sh b/git-commit.sh
index ec506d956f..cfa15110f6 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -13,10 +13,10 @@ git-rev-parse --verify HEAD >/dev/null 2>&1 || initial_commit=t
case "$0" in
*status)
status_only=t
- unmerged_ok_if_status=--unmerged ;;
+ ;;
*commit)
status_only=
- unmerged_ok_if_status= ;;
+ ;;
esac
refuse_partial () {
@@ -389,16 +389,17 @@ else
USE_INDEX="$THIS_INDEX"
fi
-GIT_INDEX_FILE="$USE_INDEX" \
- git-update-index -q $unmerged_ok_if_status --refresh || exit
-
-################################################################
-# If the request is status, just show it and exit.
-
-case "$0" in
-*status)
+case "$status_only" in
+t)
+ # This will silently fail in a read-only repository, which is
+ # what we want.
+ GIT_INDEX_FILE="$USE_INDEX" git-update-index -q --unmerged --refresh
run_status
exit $?
+ ;;
+'')
+ GIT_INDEX_FILE="$USE_INDEX" git-update-index -q --refresh || exit
+ ;;
esac
################################################################