зеркало из https://github.com/microsoft/git.git
Merge branch 'jk/repack-ref-racefix'
"git pack-refs" that ran in parallel to another process that created new refs had a nasty race. * jk/repack-ref-racefix: refs: do not use cached refs in repack_without_ref
This commit is contained in:
Коммит
229096a591
5
refs.c
5
refs.c
|
@ -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);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче