Skip to content

Commit

Permalink
builtin-prune.c: prune temporary packs in <object_dir>/pack directory
Browse files Browse the repository at this point in the history
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Brandon Casey authored and Junio C Hamano committed Sep 23, 2008
1 parent 8b4eb6b commit db87e39
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions builtin-prune.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ static const char * const prune_usage[] = {
static int show_only;
static unsigned long expire;

static int prune_tmp_object(char *path, const char *filename)
static int prune_tmp_object(const char *path, const char *filename)
{
const char *fullpath = mkpath("%s/%s", path, filename);
if (expire) {
Expand Down Expand Up @@ -110,24 +110,22 @@ static void prune_object_dir(const char *path)
/*
* Write errors (particularly out of space) can result in
* failed temporary packs (and more rarely indexes and other
* files begining with "tmp_") accumulating in the
* object directory.
* files begining with "tmp_") accumulating in the object
* and the pack directories.
*/
static void remove_temporary_files(void)
static void remove_temporary_files(const char *path)
{
DIR *dir;
struct dirent *de;
char* dirname=get_object_directory();

dir = opendir(dirname);
dir = opendir(path);
if (!dir) {
fprintf(stderr, "Unable to open object directory %s\n",
dirname);
fprintf(stderr, "Unable to open directory %s\n", path);
return;
}
while ((de = readdir(dir)) != NULL)
if (!prefixcmp(de->d_name, "tmp_"))
prune_tmp_object(dirname, de->d_name);
prune_tmp_object(path, de->d_name);
closedir(dir);
}

Expand All @@ -141,6 +139,7 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
"expire objects older than <time>"),
OPT_END()
};
char *s;

save_commit_buffer = 0;
init_revisions(&revs, prefix);
Expand All @@ -163,6 +162,9 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
prune_object_dir(get_object_directory());

prune_packed_objects(show_only);
remove_temporary_files();
remove_temporary_files(get_object_directory());
s = xstrdup(mkpath("%s/pack", get_object_directory()));
remove_temporary_files(s);
free(s);
return 0;
}

0 comments on commit db87e39

Please sign in to comment.