{"thread":{"id":"6246","subject":"[PATCH 2/5] builtin-prune: make file-scope static struct to an argument.","startedAt":"2007-01-06T10:16:10Z","lastAt":"2007-01-06T10:16:10Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":5},"messages":[{"id":"30963","messageId":"7v64bk795h.fsf@assigned-by-dhcp.cox.net","threadId":"6246","inReplyTo":null,"subject":"[PATCH 2/5] builtin-prune: make file-scope static struct to an argument.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2007-01-06T10:16:10Z","receivedAt":"2007-01-06T10:16:10Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"I want to make the first part of 'git prune' that marks the\nreachable objects callable as a library, so this starts the\nfirst step toward the goal by making the callchain to pass\nrev_info structure as an argument.\n\nNo functionality change should be in this step.\n\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n---\n builtin-prune.c |   33 ++++++++++++++++++---------------\n 1 files changed, 18 insertions(+), 15 deletions(-)\n\ndiff --git a/builtin-prune.c b/builtin-prune.c\nindex b469c43..9522864 100644\n--- a/builtin-prune.c\n+++ b/builtin-prune.c\n@@ -12,7 +12,6 @@\n \n static const char prune_usage[] = \"git-prune [-n]\";\n static int show_only;\n-static struct rev_info revs;\n \n static int prune_object(char *path, const char *filename, const unsigned char *sha1)\n {\n@@ -184,45 +183,48 @@ static void walk_commit_list(struct rev_info *revs)\n static int add_one_reflog_ent(unsigned char *osha1, unsigned char *nsha1, char *datail, void *cb_data)\n {\n \tstruct object *object;\n+\tstruct rev_info *revs = (struct rev_info *)cb_data;\n \n \tobject = parse_object(osha1);\n \tif (object)\n-\t\tadd_pending_object(&revs, object, \"\");\n+\t\tadd_pending_object(revs, object, \"\");\n \tobject = parse_object(nsha1);\n \tif (object)\n-\t\tadd_pending_object(&revs, object, \"\");\n+\t\tadd_pending_object(revs, object, \"\");\n \treturn 0;\n }\n \n static int add_one_ref(const char *path, const unsigned char *sha1, int flag, void *cb_data)\n {\n \tstruct object *object = parse_object(sha1);\n+\tstruct rev_info *revs = (struct rev_info *)cb_data;\n+\n \tif (!object)\n \t\tdie(\"bad object ref: %s:%s\", path, sha1_to_hex(sha1));\n-\tadd_pending_object(&revs, object, \"\");\n+\tadd_pending_object(revs, object, \"\");\n \n-\tfor_each_reflog_ent(path, add_one_reflog_ent, NULL);\n+\tfor_each_reflog_ent(path, add_one_reflog_ent, cb_data);\n \n \treturn 0;\n }\n \n-static void add_one_tree(const unsigned char *sha1)\n+static void add_one_tree(const unsigned char *sha1, struct rev_info *revs)\n {\n \tstruct tree *tree = lookup_tree(sha1);\n-\tadd_pending_object(&revs, &tree->object, \"\");\n+\tadd_pending_object(revs, &tree->object, \"\");\n }\n \n-static void add_cache_tree(struct cache_tree *it)\n+static void add_cache_tree(struct cache_tree *it, struct rev_info *revs)\n {\n \tint i;\n \n \tif (it->entry_count >= 0)\n-\t\tadd_one_tree(it->sha1);\n+\t\tadd_one_tree(it->sha1, revs);\n \tfor (i = 0; i < it->subtree_nr; i++)\n-\t\tadd_cache_tree(it->down[i]->cache_tree);\n+\t\tadd_cache_tree(it->down[i]->cache_tree, revs);\n }\n \n-static void add_cache_refs(void)\n+static void add_cache_refs(struct rev_info *revs)\n {\n \tint i;\n \n@@ -237,12 +239,13 @@ static void add_cache_refs(void)\n \t\t */\n \t}\n \tif (active_cache_tree)\n-\t\tadd_cache_tree(active_cache_tree);\n+\t\tadd_cache_tree(active_cache_tree, revs);\n }\n \n int cmd_prune(int argc, const char **argv, const char *prefix)\n {\n \tint i;\n+\tstruct rev_info revs;\n \n \tfor (i = 1; i < argc; i++) {\n \t\tconst char *arg = argv[i];\n@@ -264,11 +267,11 @@ int cmd_prune(int argc, const char **argv, const char *prefix)\n \trevs.blob_objects = 1;\n \trevs.tree_objects = 1;\n \n-\t/* Add all external refs */\n-\tfor_each_ref(add_one_ref, NULL);\n+\t/* Add all external refs, along with its reflog info */\n+\tfor_each_ref(add_one_ref, &revs);\n \n \t/* Add all refs from the index file */\n-\tadd_cache_refs();\n+\tadd_cache_refs(&revs);\n \n \t/*\n \t * Set up the revision walk - this will move all commits\n-- \n1.5.0.rc0.ge0f6\n"}]}