Merge 'kn/for-each-tag-branch' into kn/for-each-tag
* kn/for-each-tag-branch: for-each-ref: add '--contains' option ref-filter: implement '--contains' option parse-options.h: add macros for '--contains' option parse-option: rename parse_opt_with_commit() for-each-ref: add '--merged' and '--no-merged' options ref-filter: implement '--merged' and '--no-merged' options ref-filter: add parse_opt_merge_filter() for-each-ref: add '--points-at' option ref-filter: implement '--points-at' option tag: libify parse_opt_points_at() t6302: for-each-ref tests for ref-filter APIs
This commit is contained in:
@ -56,6 +56,10 @@ static int match_pattern(const char **patterns, const char *ref)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is currently duplicated in ref-filter.c, and will eventually be
|
||||
* removed as we port tag.c to use the ref-filter APIs.
|
||||
*/
|
||||
static const unsigned char *match_points_at(const char *refname,
|
||||
const unsigned char *sha1)
|
||||
{
|
||||
@ -82,6 +86,11 @@ static int in_commit_list(const struct commit_list *want, struct commit *c)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* The entire code segment for supporting the --contains option has been
|
||||
* copied over to ref-filter.{c,h}. This will be deleted evetually when
|
||||
* we port tag.c to use ref-filter APIs.
|
||||
*/
|
||||
enum contains_result {
|
||||
CONTAINS_UNKNOWN = -1,
|
||||
CONTAINS_NO = 0,
|
||||
@ -546,23 +555,6 @@ static int strbuf_check_tag_ref(struct strbuf *sb, const char *name)
|
||||
return check_refname_format(sb->buf, 0);
|
||||
}
|
||||
|
||||
static int parse_opt_points_at(const struct option *opt __attribute__((unused)),
|
||||
const char *arg, int unset)
|
||||
{
|
||||
unsigned char sha1[20];
|
||||
|
||||
if (unset) {
|
||||
sha1_array_clear(&points_at);
|
||||
return 0;
|
||||
}
|
||||
if (!arg)
|
||||
return error(_("switch 'points-at' requires an object"));
|
||||
if (get_sha1(arg, sha1))
|
||||
return error(_("malformed object name '%s'"), arg);
|
||||
sha1_array_append(&points_at, sha1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int parse_opt_sort(const struct option *opt, const char *arg, int unset)
|
||||
{
|
||||
int *sort = opt->value;
|
||||
@ -610,25 +602,15 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
|
||||
|
||||
OPT_GROUP(N_("Tag listing options")),
|
||||
OPT_COLUMN(0, "column", &colopts, N_("show tag list in columns")),
|
||||
OPT_CONTAINS(&with_commit, N_("print only tags that contain the commit")),
|
||||
OPT_WITH(&with_commit, N_("print only tags that contain the commit")),
|
||||
{
|
||||
OPTION_CALLBACK, 0, "sort", &tag_sort, N_("type"), N_("sort tags"),
|
||||
PARSE_OPT_NONEG, parse_opt_sort
|
||||
},
|
||||
{
|
||||
OPTION_CALLBACK, 0, "contains", &with_commit, N_("commit"),
|
||||
N_("print only tags that contain the commit"),
|
||||
PARSE_OPT_LASTARG_DEFAULT,
|
||||
parse_opt_with_commit, (intptr_t)"HEAD",
|
||||
},
|
||||
{
|
||||
OPTION_CALLBACK, 0, "with", &with_commit, N_("commit"),
|
||||
N_("print only tags that contain the commit"),
|
||||
PARSE_OPT_HIDDEN | PARSE_OPT_LASTARG_DEFAULT,
|
||||
parse_opt_with_commit, (intptr_t)"HEAD",
|
||||
},
|
||||
{
|
||||
OPTION_CALLBACK, 0, "points-at", NULL, N_("object"),
|
||||
N_("print only tags of the object"), 0, parse_opt_points_at
|
||||
OPTION_CALLBACK, 0, "points-at", &points_at, N_("object"),
|
||||
N_("print only tags of the object"), 0, parse_opt_object_name
|
||||
},
|
||||
OPT_END()
|
||||
};
|
||||
|
Reference in New Issue
Block a user