We consider that if `git remote prune` is called without a name, we actually want to prune all remotes. Signed-off-by: Julien Danjou <julien@xxxxxxxxxxx> --- Documentation/git-remote.txt | 2 +- builtin-remote.c | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt index 9e2b4ea..c566061 100644 --- a/Documentation/git-remote.txt +++ b/Documentation/git-remote.txt @@ -15,7 +15,7 @@ SYNOPSIS 'git remote rm' <name> 'git remote set-head' <name> [-a | -d | <branch>] 'git remote show' [-n] <name> -'git remote prune' [-n | --dry-run] <name> +'git remote prune' [-n | --dry-run] [name] 'git remote update' [-p | --prune] [group | remote]... DESCRIPTION diff --git a/builtin-remote.c b/builtin-remote.c index 2ed752c..053d886 100644 --- a/builtin-remote.c +++ b/builtin-remote.c @@ -14,7 +14,7 @@ static const char * const builtin_remote_usage[] = { "git remote rm <name>", "git remote set-head <name> [-a | -d | <branch>]", "git remote show [-n] <name>", - "git remote prune [-n | --dry-run] <name>", + "git remote prune [-n | --dry-run] [name]", "git remote [-v | --verbose] update [-p | --prune] [group]", NULL }; @@ -25,6 +25,7 @@ static const char * const builtin_remote_usage[] = { static int verbose; +static int get_one_entry(struct remote *remote, void *priv); static int show_all(void); static int prune_remote(const char *remote, int dry_run); @@ -1133,10 +1134,25 @@ static int prune(int argc, const char **argv) argc = parse_options(argc, argv, options, builtin_remote_usage, 0); if (argc < 1) - usage_with_options(builtin_remote_usage, options); + { + struct string_list list = { NULL, 0, 0 }; + int result = for_each_remote(get_one_entry, &list); + + if (!result) { + int i; - for (; argc; argc--, argv++) - result |= prune_remote(*argv, dry_run); + sort_string_list(&list); + for (i = 0; i < list.nr; i++) { + struct string_list_item *item = list.items + i; + if (i && !strcmp((item - 1)->string, item->string)) + continue; + result |= prune_remote(item->string, dry_run); + } + } + } + else + for (; argc; argc--, argv++) + result |= prune_remote(*argv, dry_run); return result; } -- 1.6.2.4 -- 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