git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 1/2] for-each-ref: re-structure code for moving to 'ref-filter'

From
Karthik Nayak <karthik.188@gmail.com>
Date
May 25, 2015, 17:59 UTC
Message-ID
<55636301.7060803@gmail.com>
In-Reply-To
<xmqqegm4bmtg.fsf@gitster.dls.corp.google.com>
 >
Show 6 quoted lines
> I do not see much point in renaming between these two.  The latter
> makes it sound as if this is only for "filtering" and from that
> angle of view is probably a worse name.  If you do not think of a
> better one, and if you are going to name the array that contains
> this thing "ref_list", calling "ref_list_item" would be following
> suit to what string-list did.
 >

Well I just wanted to keep it related to 'ref-filter', I think 'ref_list_item' sounds better after seeing your point of view.

Show 9 quoted lines
>
> I somehow had an impression that we are trying to move away from
> calling the name of objects as "sha1[]" as a longer term goal?  I do
> not think it is particularly a good idea to start using "struct
> object_id" in this series (it can be done after everything is done
> and you still have time left in GSoC), but I do not see how much
> value this interim renaming (because eventually we would change not
> just name but type, and the final name will _not_ be sha1[] but more
> closer to "object name") adds value.
 >

I did that to resemble whats usually being used in similar structures, a simple grep of "sha1[20];" resulted in 344 uses. I didn't know about the "we are trying to move away from calling the name of objects as "sha1[]"". Will leave it as objectname then.

Show 5 quoted lines
>
> You didn't explain why you reordered the fields, either.  Were you
> planning to make the name[] field to flex-array to reduce need for
> one level of redirection or something?
>

Yes! exactly why the re-order, was going to rebase it and squash it in, if the code seemed to be up and running.

Show 14 quoted lines
>
> I agree that "grab" part of "grab_ref_cbdata" sounds unprofessional,
> and using "ref_filter_" to signal that this callback data is about
> ref-filter API might be a good idea (I do not think the original is
> too bad, either, though).  I do not think you would use this struct
> anywhere other than as the callback data; you would want to end its
> name with "_cbdata", not just "_data", to make it clear why these
> two unrelated things are in a single struct (the only time these two
> concepts, operation and operatee, meet is when they need to be
> passed to an "apply operation to operatee" function; there is no
> such "this set of operatee always are for this operation"
> association between them---which is what I mean by 'two unrelated
> things').
>
sure, will do :) thanks for putting that out.
Show 14 quoted lines
>
> It was perfectly good name as a file-scope static; within the
> context of 'for-each-ref' implementation, when every somebody says
> "atom", you would know it is those %(atomic-data-item) things, and
> parse_atom() would be a helper function to do so.
>
> But it is *WAY* too generic a name to make public, where you are
> naming things in the whole context of Git implementation.  If you
> used the word "atom" while discussing formatting done with "git
> for-each-ref" with somebody else, it would be unambiguously clear
> what you mean; you wouldn't say "I am writing a function to parse
> 'atoms' in Git"---that's too broad and you will get "'atom', in what
> sense?" in response.
>
>
> Ditto.
>

Yes, that does seem to be too vague for a public function name, will amend it.

>
> As long as this will stay private within the new ref-filter.c after
> the move, this name is OK.
>
That'll mostly stay private, if required will change the name along.
Show 9 quoted lines
>
> I see fallouts from the two renamed fields in the above hunks.  Was
> the rename necessary?
>
> refinfo keeps two names (ref and object) and calling one "refname"
> made perfect sense (and calling other "objectname" did, too).  Has
> anything around its use changed to invalidate that rationale after
> the structure was renamed?
>
I guess it was unnecessary, my bad.
 >
Show 5 quoted lines
> When we say 'flag', it is obvious that it is a "flag word", i.e. a
> word that holds collection of flags.  Otherwise, we would have named
> each "unsigned foo_flag : 1" with meaningful names.  Was it
> necessary to make the field name longer?
>

Just felt flags to be more descriptive, well "Otherwise, we would have named each "unsigned foo_flag : 1" with meaningful names. " makes sense.

Show 13 quoted lines
> > @@ -688,7 +702,7 @@ static void populate_value(struct refinfo *ref)
> >                   v->s = xstrdup(buf + 1);
> >               }
> >               continue;
> > -        } else if (!deref && grab_objectname(name, ref->objectname,
> v)) {
> > +        } else if (!deref && grab_objectname(name, ref->sha1, v)) {
> >               continue;
>
> Mental note: grab_objectname() still remains, so I'd guess that it
> will not be moved from this file or it will stay private after it is
> moved.
>
It will be private.
 >
> Another mental note: it was a consistent naming for the function to
> grab objectname to store the result into objectname[] field.  Now it
> stores into sha1[] field.
>
yes, seems a bit off.
Show 8 quoted lines
>
> Yuck; I can see what you are doing but can you imitate what the more
> experienced people (e.g. peff, mhagger) do when restructuring
> existing code and do things in smaller increments?  For example, I
> think it should be a separate preparatory patch, even before these
> renames of structures, fields and functions, to extract this helper
> function out of grab_single_ref() function.
>
Shall do so.
>
> And extracting this could be another separate preparatory step
> before renames (but I didn't look too closely).
>
Sure.
 >
> I won't be commenting on the remainder of the patch in this message,
> as I need to step out.  I see quite a many instances of the same
> "overly generic public names" in your "s/static //".
>
Will work on it, thanks for the suggestions.
-- 
Regards,
Karthik
Previous: Junio C HamanoNext: Junio C Hamano
Message 4 of 10 in “Ref-filter: unification of 'tag -l', 'branch -l' and 'for-each-ref'”
  1. Karthik NayakMay 25, 2015
  2. 1/2 for-each-ref: re-structure code for moving to 'ref-filter'Karthik Nayak, May 25, 2015
  3. Junio C HamanoMay 25, 2015
  4. Karthik NayakMay 25, 2015
  5. Junio C HamanoMay 25, 2015
  6. Karthik NayakMay 26, 2015
  7. Matthieu MoyMay 26, 2015
  8. Karthik NayakMay 28, 2015
  9. Matthieu MoyMay 28, 2015
  10. 2/2 ref-filter: move code from 'for-each-ref'Karthik Nayak, May 25, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.