Commit 8f90ced5 by nulltoken Committed by Vicent Marti

Fix corner case in reference renaming

Renaming a packed reference should not pack another reference
which happens to be in both loose and pack state.
parent 268bee3d
......@@ -695,9 +695,18 @@ static int packed_remove_loose(git_repository *repo, git_vector *packing_list)
unsigned int i;
char full_path[GIT_PATH_MAX];
int error = GIT_SUCCESS;
git_reference *reference;
for (i = 0; i < packing_list->length; ++i) {
git_reference *ref = git_vector_get(packing_list, i);
/* Ensure the packed reference doesn't exist
* in a (more up-to-date?) state as a loose reference
*/
reference = git_hashtable_lookup(ref->owner->references.loose_cache, ref->name);
if (reference != NULL)
continue;
git__joinpath(full_path, repo->path_repository, ref->name);
if (gitfo_exists(full_path) == GIT_SUCCESS &&
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment