Skip to content

Commit

Permalink
commit: discard index after setting up partial commit
Browse files Browse the repository at this point in the history
There may still be some entries from the original index that
should be discarded before we show the status. In
particular, if a file was added in the index but not
included in the partial commit, it would still show up in
the status listing as staged for commit.

Ultimately the correct fix is to keep the two states in
separate index_state variables. Then we can avoid having
to reload the cache from the temporary file altogether, and
just point wt_status_print at the correct index.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
peff authored and gitster committed Feb 16, 2008
1 parent 1fe32cb commit 959ba67
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
4 changes: 4 additions & 0 deletions builtin-commit.c
Expand Up @@ -317,6 +317,10 @@ static char *prepare_index(int argc, const char **argv, const char *prefix)
if (write_cache(fd, active_cache, active_nr) ||
close_lock_file(&false_lock))
die("unable to write temporary index file");

discard_cache();
read_cache_from(false_lock.filename);

return false_lock.filename;
}

Expand Down
21 changes: 21 additions & 0 deletions t/t7502-status.sh
Expand Up @@ -128,4 +128,25 @@ test_expect_success 'status without relative paths' '
'

cat <<EOF >expect
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: dir1/modified
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# dir1/untracked
# dir2/
# expect
# output
# untracked
EOF
test_expect_success 'status of partial commit excluding new file in index' '
git status dir1/modified >output &&
diff -u expect output
'

test_done

0 comments on commit 959ba67

Please sign in to comment.