git count-objects: handle packs bigger than 4G
Use off_t to count sizes of packs and objects to avoid overflow after 4Gb. Signed-off-by: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
66fd74ea5d
commit
c985ddf318
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
static void count_objects(DIR *d, char *path, int len, int verbose,
|
static void count_objects(DIR *d, char *path, int len, int verbose,
|
||||||
unsigned long *loose,
|
unsigned long *loose,
|
||||||
unsigned long *loose_size,
|
off_t *loose_size,
|
||||||
unsigned long *packed_loose,
|
unsigned long *packed_loose,
|
||||||
unsigned long *garbage)
|
unsigned long *garbage)
|
||||||
{
|
{
|
||||||
@ -78,7 +78,7 @@ int cmd_count_objects(int argc, const char **argv, const char *prefix)
|
|||||||
int len = strlen(objdir);
|
int len = strlen(objdir);
|
||||||
char *path = xmalloc(len + 50);
|
char *path = xmalloc(len + 50);
|
||||||
unsigned long loose = 0, packed = 0, packed_loose = 0, garbage = 0;
|
unsigned long loose = 0, packed = 0, packed_loose = 0, garbage = 0;
|
||||||
unsigned long loose_size = 0;
|
off_t loose_size = 0;
|
||||||
struct option opts[] = {
|
struct option opts[] = {
|
||||||
OPT__VERBOSE(&verbose),
|
OPT__VERBOSE(&verbose),
|
||||||
OPT_END(),
|
OPT_END(),
|
||||||
@ -104,7 +104,7 @@ int cmd_count_objects(int argc, const char **argv, const char *prefix)
|
|||||||
if (verbose) {
|
if (verbose) {
|
||||||
struct packed_git *p;
|
struct packed_git *p;
|
||||||
unsigned long num_pack = 0;
|
unsigned long num_pack = 0;
|
||||||
unsigned long size_pack = 0;
|
off_t size_pack = 0;
|
||||||
if (!packed_git)
|
if (!packed_git)
|
||||||
prepare_packed_git();
|
prepare_packed_git();
|
||||||
for (p = packed_git; p; p = p->next) {
|
for (p = packed_git; p; p = p->next) {
|
||||||
@ -117,15 +117,15 @@ int cmd_count_objects(int argc, const char **argv, const char *prefix)
|
|||||||
num_pack++;
|
num_pack++;
|
||||||
}
|
}
|
||||||
printf("count: %lu\n", loose);
|
printf("count: %lu\n", loose);
|
||||||
printf("size: %lu\n", loose_size / 1024);
|
printf("size: %lu\n", (unsigned long) (loose_size / 1024));
|
||||||
printf("in-pack: %lu\n", packed);
|
printf("in-pack: %lu\n", packed);
|
||||||
printf("packs: %lu\n", num_pack);
|
printf("packs: %lu\n", num_pack);
|
||||||
printf("size-pack: %lu\n", size_pack / 1024);
|
printf("size-pack: %lu\n", (unsigned long) (size_pack / 1024));
|
||||||
printf("prune-packable: %lu\n", packed_loose);
|
printf("prune-packable: %lu\n", packed_loose);
|
||||||
printf("garbage: %lu\n", garbage);
|
printf("garbage: %lu\n", garbage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
printf("%lu objects, %lu kilobytes\n",
|
printf("%lu objects, %lu kilobytes\n",
|
||||||
loose, loose_size / 1024);
|
loose, (unsigned long) (loose_size / 1024));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user