Code

minor git-prune optimization
authorNicolas Pitre <nico@cam.org>
Wed, 21 Mar 2007 03:32:13 +0000 (23:32 -0400)
committerJunio C Hamano <junkio@cox.net>
Wed, 21 Mar 2007 05:17:47 +0000 (22:17 -0700)
Don't try to remove the containing directory for every pruned object but
try only once after the directory has been scanned instead.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-prune.c

index 09864b7a6d52bfb0855735418486e046438ecee4..44df59e4a70f84cdebac94f2591765ada8d4b92d 100644 (file)
@@ -14,10 +14,8 @@ static int prune_object(char *path, const char *filename, const unsigned char *s
                enum object_type type = sha1_object_info(sha1, NULL);
                printf("%s %s\n", sha1_to_hex(sha1),
                       (type > 0) ? typename(type) : "unknown");
-               return 0;
-       }
-       unlink(mkpath("%s/%s", path, filename));
-       rmdir(path);
+       } else
+               unlink(mkpath("%s/%s", path, filename));
        return 0;
 }
 
@@ -60,6 +58,8 @@ static int prune_dir(int i, char *path)
                }
                fprintf(stderr, "bad sha1 file: %s/%s\n", path, de->d_name);
        }
+       if (!show_only)
+               rmdir(path);
        closedir(dir);
        return 0;
 }