Skip to content

Commit

Permalink
Create object subdirectories on demand (phase II)
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Linus Torvalds authored and Junio C Hamano committed Oct 28, 2005
1 parent c1aaa5d commit 9106c09
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 10 deletions.
1 change: 1 addition & 0 deletions git-prune.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 0 additions & 4 deletions init-db.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
3 changes: 1 addition & 2 deletions prune-packed.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions t/t0000-basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 9106c09

Please sign in to comment.