packfile.c: add repo_approximate_object_count()
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:
parent
d2c4e6292a
commit
5038de1937
14
packfile.c
14
packfile.c
@ -893,25 +893,25 @@ static void prepare_packed_git(struct repository *r);
|
||||
* all unreachable objects about to be pruned, in which case they're not really
|
||||
* interesting as a measure of repo size in the first place.
|
||||
*/
|
||||
unsigned long approximate_object_count(void)
|
||||
unsigned long repo_approximate_object_count(struct repository *r)
|
||||
{
|
||||
if (!the_repository->objects->approximate_object_count_valid) {
|
||||
if (!r->objects->approximate_object_count_valid) {
|
||||
unsigned long count;
|
||||
struct multi_pack_index *m;
|
||||
struct packed_git *p;
|
||||
|
||||
prepare_packed_git(the_repository);
|
||||
prepare_packed_git(r);
|
||||
count = 0;
|
||||
for (m = get_multi_pack_index(the_repository); m; m = m->next)
|
||||
for (m = get_multi_pack_index(r); m; m = m->next)
|
||||
count += m->num_objects;
|
||||
for (p = the_repository->objects->packed_git; p; p = p->next) {
|
||||
for (p = r->objects->packed_git; p; p = p->next) {
|
||||
if (open_pack_index(p))
|
||||
continue;
|
||||
count += p->num_objects;
|
||||
}
|
||||
the_repository->objects->approximate_object_count = count;
|
||||
r->objects->approximate_object_count = count;
|
||||
}
|
||||
return the_repository->objects->approximate_object_count;
|
||||
return r->objects->approximate_object_count;
|
||||
}
|
||||
|
||||
static void *get_next_packed_git(const void *p)
|
||||
|
@ -57,7 +57,8 @@ struct packed_git *get_all_packs(struct repository *r);
|
||||
* Give a rough count of objects in the repository. This sacrifices accuracy
|
||||
* for speed.
|
||||
*/
|
||||
unsigned long approximate_object_count(void);
|
||||
unsigned long repo_approximate_object_count(struct repository *r);
|
||||
#define approximate_object_count() repo_approximate_object_count(the_repository)
|
||||
|
||||
extern struct packed_git *find_sha1_pack(const unsigned char *sha1,
|
||||
struct packed_git *packs);
|
||||
|
Loading…
Reference in New Issue
Block a user