diff/status: refactor opportunistic index update

When we had to refresh the index internally before running diff or status,
we opportunistically updated the $GIT_INDEX_FILE so that later invocation
of git can use the lstat(2) we already did in this invocation.

Make them share a helper function to do so.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2011-03-21 10:16:10 -07:00
parent 87b50542a0
commit ccdc4ec304
4 changed files with 16 additions and 13 deletions

View File

@ -1545,6 +1545,18 @@ static int ce_write_entry(git_SHA_CTX *c, int fd, struct cache_entry *ce)
return result;
}
/*
* Opportunisticly update the index but do not complain if we can't
*/
void update_index_if_able(struct index_state *istate, struct lock_file *lockfile)
{
if (istate->cache_changed &&
!write_index(istate, lockfile->fd))
commit_locked_index(lockfile);
else
rollback_lock_file(lockfile);
}
int write_index(struct index_state *istate, int newfd)
{
git_SHA_CTX c;