diff options
author | Junio C Hamano <junkio@cox.net> | 2006-02-10 11:45:59 +0300 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-02-10 11:54:49 +0300 |
commit | cf7bb589af739563c90dc32b4901bea73aaaa9d0 (patch) | |
tree | a563b00d8ca1acf56262ffa972d4b8155f1e5bfe /git-status.sh | |
parent | 4dc870d90cf4cd30b30b59054603fbb09dca1f41 (diff) |
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-x | git-status.sh | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/git-status.sh b/git-status.sh deleted file mode 100755 index 10d781c92f..0000000000 --- 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 |