Git storage: be more careful when checking if this SHA is already loaded

In commit 8c1cc4524d ("Don't reload identical data") I got a little
carried away. Before comparing SHAs we need to make sure that
a) this is a git repository at all
b) we have an actual SHA before we claim to have the data loaded

Reported-by: Paul-Erik Törrönen <poltsi@777-team.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-12-28 08:21:03 -08:00
parent 04054c0429
commit c7c9fb0bb0

View file

@ -435,7 +435,7 @@ static int parse_file_buffer(const char *filename, struct memblock *mem)
int parse_file(const char *filename)
{
struct git_repository *git;
const char *branch;
const char *branch = NULL;
struct memblock mem;
char *fmt;
int ret;
@ -448,14 +448,17 @@ int parse_file(const char *filename)
* give up here and don't send errors about git repositories */
return 0;
/* do we already have this exact state loaded ?
/* if this is a git repository, do we already have this exact state loaded ?
* get the SHA and compare with what we currently have */
const char * sha = get_sha(git, branch);
if (same_string(sha, saved_git_id) && !unsaved_changes()) {
fprintf(stderr, "already have loaded SHA %s - don't load again\n", sha);
return 0;
if (git && git != dummy_git_repository) {
const char *sha = get_sha(git, branch);
if (!same_string(sha, "") &&
same_string(sha, saved_git_id) &&
!unsaved_changes()) {
fprintf(stderr, "already have loaded SHA %s - don't load again\n", sha);
return 0;
}
}
if (git && !git_load_dives(git, branch))
return 0;