packfile: allow install_packed_git to handle arbitrary repositories

This conversion was done without the #define trick used in the earlier
series refactoring to have better repository access, because this function
is easy to review, as it only has one caller and all lines but the first
two are converted.

We must not convert 'pack_open_fds' to be a repository specific variable,
as it is used to monitor resource usage of the machine that Git executes
on.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Stefan Beller 2018-03-23 18:45:18 +01:00 committed by Junio C Hamano
parent c235beac4e
commit 5babff16d9
4 changed files with 7 additions and 7 deletions

View File

@ -1038,7 +1038,7 @@ static void end_packfile(void)
if (!new_p)
die("core git rejected index %s", idx_name);
all_packs[pack_id] = new_p;
install_packed_git(new_p);
install_packed_git(the_repository, new_p);
free(idx_name);
/* Print the boundary */

2
http.c
View File

@ -2134,7 +2134,7 @@ int finish_http_pack_request(struct http_pack_request *preq)
return -1;
}
install_packed_git(p);
install_packed_git(the_repository, p);
free(tmp_idx);
return 0;
}

View File

@ -680,13 +680,13 @@ struct packed_git *add_packed_git(const char *path, size_t path_len, int local)
return p;
}
void install_packed_git(struct packed_git *pack)
void install_packed_git(struct repository *r, struct packed_git *pack)
{
if (pack->pack_fd != -1)
pack_open_fds++;
pack->next = the_repository->objects->packed_git;
the_repository->objects->packed_git = pack;
pack->next = r->objects->packed_git;
r->objects->packed_git = pack;
}
void (*report_garbage)(unsigned seen_bits, const char *path);
@ -782,7 +782,7 @@ static void prepare_packed_git_one(char *objdir, int local)
* corresponding .pack file that we can map.
*/
(p = add_packed_git(path.buf, path.len, local)) != NULL)
install_packed_git(p);
install_packed_git(the_repository, p);
}
if (!report_garbage)

View File

@ -36,7 +36,7 @@ extern void (*report_garbage)(unsigned seen_bits, const char *path);
extern void prepare_packed_git(void);
extern void reprepare_packed_git(void);
extern void install_packed_git(struct packed_git *pack);
extern void install_packed_git(struct repository *r, struct packed_git *pack);
struct packed_git *get_packed_git(struct repository *r);
struct list_head *get_packed_git_mru(struct repository *r);