The new function will be reused by prune_all() in the next patch. Signed-off-by: Lars Hjemli <hjemli@xxxxxxxxx> --- builtin-remote.c | 67 +++++++++++++++++++++++++++++------------------------ 1 files changed, 37 insertions(+), 30 deletions(-) diff --git a/builtin-remote.c b/builtin-remote.c index 4cb763f..626256e 100644 --- a/builtin-remote.c +++ b/builtin-remote.c @@ -537,6 +537,41 @@ static int show(int argc, const char **argv) return result; } +static int prune_one(const char *name, int dry_run) +{ + struct ref_states states; + int result = 0; + int i; + + memset(&states, 0, sizeof(states)); + get_remote_ref_states(name, &states, 1); + + if (states.stale.nr) { + printf("Pruning %s\n", name); + printf("URL: %s\n", + states.remote->url_nr + ? states.remote->url[0] + : "(no URL)"); + } + + for (i = 0; i < states.stale.nr; i++) { + const char *refname = states.stale.items[i].util; + + if (!dry_run) + result |= delete_ref(refname, NULL); + + printf(" * [%s] %s\n", dry_run ? "would prune" : "pruned", + abbrev_ref(refname, "refs/remotes/")); + } + + /* NEEDSWORK: free remote */ + string_list_clear(&states.new, 0); + string_list_clear(&states.stale, 0); + string_list_clear(&states.tracked, 0); + + return result; +} + static int prune(int argc, const char **argv) { int dry_run = 0, result = 0; @@ -545,42 +580,14 @@ static int prune(int argc, const char **argv) OPT__DRY_RUN(&dry_run), OPT_END() }; - struct ref_states states; argc = parse_options(argc, argv, options, builtin_remote_usage, 0); if (argc < 1) usage_with_options(builtin_remote_usage, options); - memset(&states, 0, sizeof(states)); - for (; argc; argc--, argv++) { - int i; - - get_remote_ref_states(*argv, &states, 1); - - if (states.stale.nr) { - printf("Pruning %s\n", *argv); - printf("URL: %s\n", - states.remote->url_nr - ? states.remote->url[0] - : "(no URL)"); - } - - for (i = 0; i < states.stale.nr; i++) { - const char *refname = states.stale.items[i].util; - - if (!dry_run) - result |= delete_ref(refname, NULL); - - printf(" * [%s] %s\n", dry_run ? "would prune" : "pruned", - abbrev_ref(refname, "refs/remotes/")); - } - - /* NEEDSWORK: free remote */ - string_list_clear(&states.new, 0); - string_list_clear(&states.stale, 0); - string_list_clear(&states.tracked, 0); - } + for (; argc; argc--, argv++) + result |= prune_one(*argv, dry_run); return result; } -- 1.6.0.2.309.gc1f46 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html