Skip to content

Commit

Permalink
invalidate_ref_cache(): take the submodule as parameter
Browse files Browse the repository at this point in the history
Instead of invalidating the ref cache on an all-or-nothing basis,
invalidate the cache for a specific submodule.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael Haggerty authored and Junio C Hamano committed Oct 17, 2011
1 parent 79c7ca5 commit 3870a0d
Showing 1 changed file with 4 additions and 8 deletions.
12 changes: 4 additions & 8 deletions refs.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,13 +202,9 @@ static struct ref_cache *get_ref_cache(const char *submodule)
return refs;
}

static void invalidate_ref_cache(void)
static void invalidate_ref_cache(const char *submodule)
{
struct ref_cache *refs = ref_cache;
while (refs) {
clear_ref_cache(refs);
refs = refs->next;
}
clear_ref_cache(get_ref_cache(submodule));
}

static void read_packed_refs(FILE *f, struct ref_array *array)
Expand Down Expand Up @@ -1228,7 +1224,7 @@ int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
ret |= repack_without_ref(refname);

unlink_or_warn(git_path("logs/%s", lock->ref_name));
invalidate_ref_cache();
invalidate_ref_cache(NULL);
unlock_ref(lock);
return ret;
}
Expand Down Expand Up @@ -1527,7 +1523,7 @@ int write_ref_sha1(struct ref_lock *lock,
unlock_ref(lock);
return -1;
}
invalidate_ref_cache();
invalidate_ref_cache(NULL);
if (log_ref_write(lock->ref_name, lock->old_sha1, sha1, logmsg) < 0 ||
(strcmp(lock->ref_name, lock->orig_ref_name) &&
log_ref_write(lock->orig_ref_name, lock->old_sha1, sha1, logmsg) < 0)) {
Expand Down

0 comments on commit 3870a0d

Please sign in to comment.