aboutsummaryrefslogtreecommitdiff
path: root/git-status.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-02-10 00:45:59 -0800
committerJunio C Hamano <junkio@cox.net>2006-02-10 00:54:49 -0800
commitcf7bb589af739563c90dc32b4901bea73aaaa9d0 (patch)
treea563b00d8ca1acf56262ffa972d4b8155f1e5bfe /git-status.sh
parent4dc870d90cf4cd30b30b59054603fbb09dca1f41 (diff)
downloadgit-cf7bb589af739563c90dc32b4901bea73aaaa9d0.tar.gz
git-cf7bb589af739563c90dc32b4901bea73aaaa9d0.tar.xz
git-status -v
This revamps the git-status command to take the same set of parameters as git commit. It gives a preview of what is being committed with that command. With -v flag, it shows the diff output between the HEAD commit and the index that would be committed if these flags were given to git-commit command. git-commit also acquires -v flag (it used to mean "verify" but that is the default anyway and there is --no-verify to turn it off, so not much is lost), which uses the updated git-status -v to seed the commit log buffer. This is handy for writing a log message while reviewing the changes one last time. Now, git-commit and git-status are internally share the same implementation. Unlike previous git-commit change, this uses a temporary index to prepare the index file that would become the real index file after a successful commit, and moves it to the real index file once the commit is actually made. This makes it safer than the previous scheme, which stashed away the original index file and restored it after an aborted commit. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-status.sh')
-rwxr-xr-xgit-status.sh115
1 files changed, 0 insertions, 115 deletions
diff --git a/git-status.sh b/git-status.sh
deleted file mode 100755
index 10d781c92..000000000
--- a/git-status.sh
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2005 Linus Torvalds
-#
-
-USAGE=''
-SUBDIRECTORY_OK='Yes'
-
-. git-sh-setup
-
-if [ "$#" != "0" ]
-then
- usage
-fi
-
-report () {
- header="#
-# $1:
-# ($2)
-#
-"
- trailer=""
- while read status name newname
- do
- printf '%s' "$header"
- header=""
- trailer="#
-"
- case "$status" in
- M ) echo "# modified: $name";;
- D*) echo "# deleted: $name";;
- T ) echo "# typechange: $name";;
- C*) echo "# copied: $name -> $newname";;
- R*) echo "# renamed: $name -> $newname";;
- A*) echo "# new file: $name";;
- U ) echo "# unmerged: $name";;
- esac
- done
- printf '%s' "$trailer"
- [ "$header" ]
-}
-
-branch=$(GIT_DIR="$GIT_DIR" git-symbolic-ref HEAD)
-case "$branch" in
-refs/heads/master) ;;
-*) echo "# On branch $branch" ;;
-esac
-
-git-update-index -q --unmerged --refresh || exit
-
-if GIT_DIR="$GIT_DIR" git-rev-parse --verify HEAD >/dev/null 2>&1
-then
- git-diff-index -M --cached --name-status --diff-filter=MDTCRA HEAD |
- sed -e '
- s/\\/\\\\/g
- s/ /\\ /g
- ' |
- report "Updated but not checked in" "will commit"
-
- committable="$?"
-else
- echo '#
-# Initial commit
-#'
- git-ls-files |
- sed -e '
- s/\\/\\\\/g
- s/ /\\ /g
- s/^/A /
- ' |
- report "Updated but not checked in" "will commit"
-
- committable="$?"
-fi
-
-git-diff-files --name-status |
-sed -e '
- s/\\/\\\\/g
- s/ /\\ /g
-' |
-report "Changed but not updated" "use git-update-index to mark for commit"
-
-
-if test -f "$GIT_DIR/info/exclude"
-then
- git-ls-files -z --others --directory \
- --exclude-from="$GIT_DIR/info/exclude" \
- --exclude-per-directory=.gitignore
-else
- git-ls-files -z --others --directory \
- --exclude-per-directory=.gitignore
-fi |
-perl -e '$/ = "\0";
- my $shown = 0;
- while (<>) {
- chomp;
- s|\\|\\\\|g;
- s|\t|\\t|g;
- s|\n|\\n|g;
- s/^/# /;
- if (!$shown) {
- print "#\n# Untracked files:\n";
- print "# (use \"git add\" to add to commit)\n#\n";
- $shown = 1;
- }
- print "$_\n";
- }
-'
-
-case "$committable" in
-0)
- echo "nothing to commit"
- exit 1
-esac
-exit 0