Re: [RFC/PATCH 3/9] for-each-ref: add '--points-at' option
- From
Karthik Nayak <karthik.188@gmail.com>
- Date
- Jun 9, 2015, 12:01 UTC
- Message-ID
- <5576D591.6030704@gmail.com>
- In-Reply-To
- <xmqqzj4a9fpn.fsf@gitster.dls.corp.google.com>
On 06/09/2015 12:42 AM, Junio C Hamano wrote:
Show 8 quoted lines
> > Is this intended? I would have expected if I did > > git for-each-ref --points-at master > > I would get refs/heads/master and any other refs that exactly points > at that commit. >
Thats to be changed, thanks!
Show 42 quoted lines
>>
>> FIELD NAMES
>> -----------
>> diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
>> index 4d2d024..b9d180a 100644
>> --- a/builtin/for-each-ref.c
>> +++ b/builtin/for-each-ref.c
>> @@ -7,6 +7,7 @@
>>
>> static char const * const for_each_ref_usage[] = {
>> N_("git for-each-ref [<options>] [<pattern>]"),
>> + N_("git for-each-ref [--points-at <object>]"),
>> NULL
>> };
>>
>> @@ -17,6 +18,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
>> struct ref_sorting *sorting = NULL, **sorting_tail = &sorting;
>> int maxcount = 0, quote_style = 0;
>> struct ref_filter_cbdata ref_cbdata;
>> + memset(&ref_cbdata, 0, sizeof(ref_cbdata));
>>
>> struct option opts[] = {
>> OPT_BIT('s', "shell", "e_style,
>> @@ -33,6 +35,9 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
>> OPT_STRING( 0 , "format", &format, N_("format"), N_("format to use for the output")),
>> OPT_CALLBACK(0 , "sort", sorting_tail, N_("key"),
>> N_("field name to sort on"), &parse_opt_ref_sorting),
>> + OPT_CALLBACK(0, "points-at", &ref_cbdata.filter.points_at,
>> + N_("object"), N_("print only tags of the object"),
>> + parse_opt_points_at),
>> OPT_END(),
>> };
>>
>> @@ -54,7 +59,6 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
>> /* for warn_ambiguous_refs */
>> git_config(git_default_config, NULL);
>>
>> - memset(&ref_cbdata, 0, sizeof(ref_cbdata));
>
> I cannot quite see how this change relates to the addition of the
> new option.
>Well if we memset() after calling parse_opt_points_at(), we loose all the information we would have obtained. So the memset() is moved to an earlier location.
-- Regards, Karthik