X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=builtin-prune.c;h=b469c43bc55440d982005b81252ebfd711faa074;hb=8f905eb139aa2284ca9001de1265d25b661f907c;hp=e79b515c76d9eac9f1ce8e5d88ba0f7058ca53fb;hpb=194db7e3bbab9669c511133549e6ae74481c9a4f;p=git.git diff --git a/builtin-prune.c b/builtin-prune.c index e79b515c7..b469c43bc 100644 --- a/builtin-prune.c +++ b/builtin-prune.c @@ -16,8 +16,15 @@ static struct rev_info revs; static int prune_object(char *path, const char *filename, const unsigned char *sha1) { + char buf[20]; + const char *type; + if (show_only) { - printf("would prune %s/%s\n", path, filename); + if (sha1_object_info(sha1, buf, NULL)) + type = "unknown"; + else + type = buf; + printf("%s %s\n", sha1_to_hex(sha1), type); return 0; } unlink(mkpath("%s/%s", path, filename)); @@ -174,12 +181,28 @@ static void walk_commit_list(struct rev_info *revs) } } +static int add_one_reflog_ent(unsigned char *osha1, unsigned char *nsha1, char *datail, void *cb_data) +{ + struct object *object; + + object = parse_object(osha1); + if (object) + add_pending_object(&revs, object, ""); + object = parse_object(nsha1); + if (object) + add_pending_object(&revs, object, ""); + return 0; +} + static int add_one_ref(const char *path, const unsigned char *sha1, int flag, void *cb_data) { struct object *object = parse_object(sha1); if (!object) die("bad object ref: %s:%s", path, sha1_to_hex(sha1)); add_pending_object(&revs, object, ""); + + for_each_reflog_ent(path, add_one_reflog_ent, NULL); + return 0; } @@ -230,6 +253,8 @@ int cmd_prune(int argc, const char **argv, const char *prefix) usage(prune_usage); } + save_commit_buffer = 0; + /* * Set up revision parsing, and mark us as being interested * in all object types, not just commits. @@ -255,5 +280,7 @@ int cmd_prune(int argc, const char **argv, const char *prefix) prune_object_dir(get_object_directory()); + sync(); + prune_packed_objects(show_only); return 0; }