diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-01-10 14:04:17 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-10 14:04:17 -0800 |
commit | f70eec840065ca598272979960073b1b50b5ad03 (patch) | |
tree | 6e1983b05510a9a54cd3838cc64f5636f80b32e4 /refs.c | |
parent | 8bc714b4088d162ac4a7327d672139a0c2907917 (diff) | |
parent | b3f1280ec740d8012d18e870a50a5ff76c4e3c42 (diff) | |
download | git-f70eec840065ca598272979960073b1b50b5ad03.tar.gz |
Merge branch 'jk/repack-ref-racefix' into maint
* jk/repack-ref-racefix:
refs: do not use cached refs in repack_without_ref
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -1744,7 +1744,8 @@ static struct lock_file packlock; static int repack_without_ref(const char *refname) { struct repack_without_ref_sb data; - struct ref_dir *packed = get_packed_refs(get_ref_cache(NULL)); + struct ref_cache *refs = get_ref_cache(NULL); + struct ref_dir *packed = get_packed_refs(refs); if (find_ref(packed, refname) == NULL) return 0; data.refname = refname; @@ -1753,6 +1754,8 @@ static int repack_without_ref(const char *refname) unable_to_lock_error(git_path("packed-refs"), errno); return error("cannot delete '%s' from packed refs", refname); } + clear_packed_ref_cache(refs); + packed = get_packed_refs(refs); do_for_each_ref_in_dir(packed, 0, "", repack_without_ref_fn, 0, 0, &data); return commit_lock_file(&packlock); } |