Merge branch 'md/list-objects-filter-parse-msgfix'
authorJunio C Hamano <gitster@pobox.com>
Fri, 21 Jun 2019 18:24:10 +0000 (11:24 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Jun 2019 18:24:10 +0000 (11:24 -0700)
Make an end-user facing message localizable.

* md/list-objects-filter-parse-msgfix:
list-objects-filter-options: error is localizeable

1  2 
list-objects-filter-options.c
index a15d0f782923f6bbb0aa9534c80f53c2942e7a79,d0a5362331991fa73e9a24aef9348d500a591368..1cb20c659c82b151a652da0528d0673ac629cc6c
@@@ -18,9 -18,8 +18,9 @@@
   * See Documentation/rev-list-options.txt for allowed values for <arg>.
   *
   * 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,
                }
  
        } 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:<depth>'"));
                        }
                        return 1;
                }
 -              filter_options->choice = LOFC_TREE_NONE;
 +              filter_options->choice = LOFC_TREE_DEPTH;
                return 0;
  
        } else if (skip_prefix(arg, "sparse:oid=", &v0)) {
                 * 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));
  }