From: Junio C Hamano Date: Fri, 21 Jun 2019 18:24:10 +0000 (-0700) Subject: Merge branch 'md/list-objects-filter-parse-msgfix' X-Git-Tag: v2.23.0-rc0~102 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/ca02d3669f3db502efaa9cb5a41a825c532cbabe?ds=inline;hp=-c Merge branch 'md/list-objects-filter-parse-msgfix' Make an end-user facing message localizable. * md/list-objects-filter-parse-msgfix: list-objects-filter-options: error is localizeable --- ca02d3669f3db502efaa9cb5a41a825c532cbabe diff --combined list-objects-filter-options.c index a15d0f7829,d0a5362331..1cb20c659c --- a/list-objects-filter-options.c +++ b/list-objects-filter-options.c @@@ -18,9 -18,8 +18,9 @@@ * See Documentation/rev-list-options.txt for allowed values for . * * Capture the given arg as the "filter_spec". This can be forwarded to - * subordinate commands when necessary. We also "intern" the arg for - * the convenience of the current command. + * subordinate commands when necessary (although it's better to pass it through + * expand_list_objects_filter_spec() first). We also "intern" the arg for the + * convenience of the current command. */ static int gently_parse_list_objects_filter( struct list_objects_filter_options *filter_options, @@@ -51,15 -50,16 +51,15 @@@ } } else if (skip_prefix(arg, "tree:", &v0)) { - unsigned long depth; - if (!git_parse_ulong(v0, &depth) || depth != 0) { + if (!git_parse_ulong(v0, &filter_options->tree_exclude_depth)) { if (errbuf) { strbuf_addstr( errbuf, - _("only 'tree:0' is supported")); + _("expected 'tree:'")); } return 1; } - filter_options->choice = LOFC_TREE_NONE; + filter_options->choice = LOFC_TREE_DEPTH; return 0; } else if (skip_prefix(arg, "sparse:oid=", &v0)) { @@@ -71,27 -71,20 +71,27 @@@ * command, but DO NOT complain if we don't have the blob or * ref locally. */ - if (!get_oid_with_context(v0, GET_OID_BLOB, + if (!get_oid_with_context(the_repository, v0, GET_OID_BLOB, &sparse_oid, &oc)) filter_options->sparse_oid_value = oiddup(&sparse_oid); filter_options->choice = LOFC_SPARSE_OID; return 0; } else if (skip_prefix(arg, "sparse:path=", &v0)) { - filter_options->choice = LOFC_SPARSE_PATH; - filter_options->sparse_path_value = strdup(v0); - return 0; + if (errbuf) { + strbuf_addstr( + errbuf, + _("sparse:path filters support has been dropped")); + } + return 1; } + /* + * Please update _git_fetch() in git-completion.bash when you + * add new filters + */ if (errbuf) - strbuf_addf(errbuf, "invalid filter-spec '%s'", arg); + strbuf_addf(errbuf, _("invalid filter-spec '%s'"), arg); memset(filter_options, 0, sizeof(*filter_options)); return 1; @@@ -119,26 -112,12 +119,26 @@@ int opt_parse_list_objects_filter(cons return parse_list_objects_filter(filter_options, arg); } +void expand_list_objects_filter_spec( + const struct list_objects_filter_options *filter, + struct strbuf *expanded_spec) +{ + strbuf_init(expanded_spec, strlen(filter->filter_spec)); + if (filter->choice == LOFC_BLOB_LIMIT) + strbuf_addf(expanded_spec, "blob:limit=%lu", + filter->blob_limit_value); + else if (filter->choice == LOFC_TREE_DEPTH) + strbuf_addf(expanded_spec, "tree:%lu", + filter->tree_exclude_depth); + else + strbuf_addstr(expanded_spec, filter->filter_spec); +} + void list_objects_filter_release( struct list_objects_filter_options *filter_options) { free(filter_options->filter_spec); free(filter_options->sparse_oid_value); - free(filter_options->sparse_path_value); memset(filter_options, 0, sizeof(*filter_options)); }