summaryrefslogtreecommitdiff
path: root/builtin-prune.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtin-prune.c')
-rw-r--r--builtin-prune.c100
1 files changed, 0 insertions, 100 deletions
diff --git a/builtin-prune.c b/builtin-prune.c
deleted file mode 100644
index 44df59e4a7..0000000000
--- a/builtin-prune.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "cache.h"
-#include "commit.h"
-#include "diff.h"
-#include "revision.h"
-#include "builtin.h"
-#include "reachable.h"
-
-static const char prune_usage[] = "git-prune [-n]";
-static int show_only;
-
-static int prune_object(char *path, const char *filename, const unsigned char *sha1)
-{
- if (show_only) {
- enum object_type type = sha1_object_info(sha1, NULL);
- printf("%s %s\n", sha1_to_hex(sha1),
- (type > 0) ? typename(type) : "unknown");
- } else
- unlink(mkpath("%s/%s", path, filename));
- return 0;
-}
-
-static int prune_dir(int i, char *path)
-{
- DIR *dir = opendir(path);
- struct dirent *de;
-
- if (!dir)
- return 0;
-
- while ((de = readdir(dir)) != NULL) {
- char name[100];
- unsigned char sha1[20];
- int len = strlen(de->d_name);
-
- switch (len) {
- case 2:
- if (de->d_name[1] != '.')
- break;
- case 1:
- if (de->d_name[0] != '.')
- break;
- continue;
- case 38:
- sprintf(name, "%02x", i);
- memcpy(name+2, de->d_name, len+1);
- if (get_sha1_hex(name, sha1) < 0)
- break;
-
- /*
- * Do we know about this object?
- * It must have been reachable
- */
- if (lookup_object(sha1))
- continue;
-
- prune_object(path, de->d_name, sha1);
- continue;
- }
- fprintf(stderr, "bad sha1 file: %s/%s\n", path, de->d_name);
- }
- if (!show_only)
- rmdir(path);
- closedir(dir);
- return 0;
-}
-
-static void prune_object_dir(const char *path)
-{
- int i;
- for (i = 0; i < 256; i++) {
- static char dir[4096];
- sprintf(dir, "%s/%02x", path, i);
- prune_dir(i, dir);
- }
-}
-
-int cmd_prune(int argc, const char **argv, const char *prefix)
-{
- int i;
- struct rev_info revs;
-
- for (i = 1; i < argc; i++) {
- const char *arg = argv[i];
- if (!strcmp(arg, "-n")) {
- show_only = 1;
- continue;
- }
- usage(prune_usage);
- }
-
- save_commit_buffer = 0;
- init_revisions(&revs, prefix);
- mark_reachable_objects(&revs, 1);
-
- prune_object_dir(get_object_directory());
-
- sync();
- prune_packed_objects(show_only);
- return 0;
-}