Create object subdirectories on demand (phase II)
authorLinus Torvalds <torvalds@osdl.org>
Sun, 9 Oct 2005 09:30:17 +0000 (02:30 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 28 Oct 2005 09:01:42 +0000 (02:01 -0700)
This removes the unoptimization.  The previous round does not mind
missing fan-out directories, but still makes sure they exist, lest
older versions choke on a repository created/packed by it.

This round does not play that nicely anymore -- empty fan-out
directories are not created by init-db, and will stay removed by
prune-packed.  The prune command also removes empty fan-out directories.

Signed-off-by: Junio C Hamano <junkio@cox.net>
git-prune.sh
init-db.c
prune-packed.c
t/t0000-basic.sh

index 9657dbf..b28630c 100755 (executable)
@@ -22,6 +22,7 @@ sed -ne '/unreachable /{
 }' | {
        cd "$GIT_OBJECT_DIRECTORY" || exit
        xargs $echo rm -f
+       rmdir 2>/dev/null [0-9a-f][0-9a-f]
 }
 
 git-prune-packed $dryrun
index 2a4aa3c..ca6fa4d 100644 (file)
--- a/init-db.c
+++ b/init-db.c
@@ -281,10 +281,6 @@ int main(int argc, char **argv)
        memcpy(path, sha1_dir, len);
 
        safe_create_dir(sha1_dir);
-       for (i = 0; i < 256; i++) {
-               sprintf(path+len, "/%02x", i);
-               safe_create_dir(path);
-       }
        strcpy(path+len, "/pack");
        safe_create_dir(path);
        strcpy(path+len, "/info");
index 1e0fc0c..16685d1 100644 (file)
@@ -27,8 +27,7 @@ static void prune_dir(int i, DIR *dir, char *pathname, int len)
                        error("unable to unlink %s", pathname);
        }
        pathname[len] = 0;
-       if (!rmdir(pathname))
-               mkdir(pathname, 0777);
+       rmdir(pathname);
 }
 
 static void prune_packed_objects(void)
index 5c5f854..dff7d69 100755 (executable)
@@ -28,12 +28,12 @@ test_expect_success \
     '.git/objects should be empty after git-init-db in an empty repo.' \
     'cmp -s /dev/null should-be-empty' 
 
-# also it should have 258 subdirectories; 256 fan-out anymore, pack, and info.
-# 259 is counting "objects" itself
+# also it should have 2 subdirectories; no fan-out anymore, pack, and info.
+# 3 is counting "objects" itself
 find .git/objects -type d -print >full-of-directories
 test_expect_success \
-    '.git/objects should have 258 subdirectories.' \
-    'test $(wc -l < full-of-directories) = 259'
+    '.git/objects should have 3 subdirectories.' \
+    'test $(wc -l < full-of-directories) = 3'
 
 ################################################################
 # Basics of the basics