Code

prune-packed: don't call display_progress() for every file
authorNicolas Pitre <nico@cam.org>
Tue, 30 Oct 2007 18:57:31 +0000 (14:57 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 30 Oct 2007 23:08:40 +0000 (16:08 -0700)
The progress count is per fanout directory, so it is useless to call
it for every file as the count doesn't change that often.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-prune-packed.c

index 015c8bb7cca4867b2dc0d54091f5901d209f52cf..907e36828f61ee925adfe5eff111abb2fe3f0681 100644 (file)
@@ -15,6 +15,9 @@ static void prune_dir(int i, DIR *dir, char *pathname, int len, int opts)
        struct dirent *de;
        char hex[40];
 
+       if (opts == VERBOSE)
+               display_progress(&progress, i + 1);
+
        sprintf(hex, "%02x", i);
        while ((de = readdir(dir)) != NULL) {
                unsigned char sha1[20];
@@ -26,8 +29,6 @@ static void prune_dir(int i, DIR *dir, char *pathname, int len, int opts)
                if (!has_sha1_pack(sha1, NULL))
                        continue;
                memcpy(pathname + len, de->d_name, 38);
-               if (opts == VERBOSE)
-                       display_progress(&progress, i + 1);
                if (opts & DRY_RUN)
                        printf("rm -f %s\n", pathname);
                else if (unlink(pathname) < 0)