prune_remote will be used in update(), so this function was split out to avoid code duplication. Signed-off-by: Finn Arne Gangstad <finnag@xxxxxxx> --- builtin-remote.c | 56 +++++++++++++++++++++++++++++------------------------ 1 files changed, 31 insertions(+), 25 deletions(-) diff --git a/builtin-remote.c b/builtin-remote.c index 9ef846f..9804d6c 100644 --- a/builtin-remote.c +++ b/builtin-remote.c @@ -26,6 +26,7 @@ static const char * const builtin_remote_usage[] = { static int verbose; static int show_all(void); +static int prune_remote(const char *remote, int dry_run); static inline int postfixcmp(const char *string, const char *postfix) { @@ -1128,46 +1129,51 @@ static int prune(int argc, const char **argv) OPT__DRY_RUN(&dry_run), OPT_END() }; - struct ref_states states; - const char *dangling_msg; argc = parse_options(argc, argv, options, builtin_remote_usage, 0); if (argc < 1) usage_with_options(builtin_remote_usage, options); - dangling_msg = (dry_run - ? " %s will become dangling!\n" - : " %s has become dangling!\n"); + for (; argc; argc--, argv++) + result |= prune_remote(*argv, dry_run); - memset(&states, 0, sizeof(states)); - for (; argc; argc--, argv++) { - int i; + return result; +} - get_remote_ref_states(*argv, &states, GET_REF_STATES); +static int prune_remote(const char *remote, int dry_run) +{ + int result = 0; + struct ref_states states; + const char *dangling_msg = dry_run + ? " %s will become dangling!\n" + : " %s has become dangling!\n"; - if (states.stale.nr) { - printf("Pruning %s\n", *argv); - printf("URL: %s\n", - states.remote->url_nr - ? states.remote->url[0] - : "(no URL)"); - } + memset(&states, 0, sizeof(states)); + int i; - for (i = 0; i < states.stale.nr; i++) { - const char *refname = states.stale.items[i].util; + get_remote_ref_states(remote, &states, GET_REF_STATES); - if (!dry_run) - result |= delete_ref(refname, NULL, 0); + if (states.stale.nr) { + printf("Pruning %s\n", remote); + printf("URL: %s\n", + states.remote->url_nr + ? states.remote->url[0] + : "(no URL)"); + } - printf(" * [%s] %s\n", dry_run ? "would prune" : "pruned", - abbrev_ref(refname, "refs/remotes/")); - warn_dangling_symref(dangling_msg, refname); - } + for (i = 0; i < states.stale.nr; i++) { + const char *refname = states.stale.items[i].util; - free_remote_ref_states(&states); + if (!dry_run) + result |= delete_ref(refname, NULL, 0); + + printf(" * [%s] %s\n", dry_run ? "would prune" : "pruned", + abbrev_ref(refname, "refs/remotes/")); + warn_dangling_symref(dangling_msg, refname); } + free_remote_ref_states(&states); return result; } -- 1.6.2.1.471.gdeb91.dirty -- 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