aboutsummaryrefslogtreecommitdiff
path: root/git-commit.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-02-22 00:28:49 -0800
committerJunio C Hamano <junkio@cox.net>2007-02-22 00:31:51 -0800
commit2b5f9a8c0cff511f2bb0833b1ee02645b79323f4 (patch)
tree7b9f4e8259e225995a59a805e1984248f153e43b /git-commit.sh
parent437b1b20df4b356c9342dac8d38849f24ef44f27 (diff)
downloadgit-2b5f9a8c0cff511f2bb0833b1ee02645b79323f4.tar.gz
git-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>
Diffstat (limited to 'git-commit.sh')
-rwxr-xr-xgit-commit.sh21
1 files changed, 11 insertions, 10 deletions
diff --git a/git-commit.sh b/git-commit.sh
index ec506d956..cfa15110f 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
################################################################