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

Re: [Outreachy] [PATCH] blame: Convert pickaxe_blame defined constants to enums

From
WKWambui Karuga <wambui.karugax@gmail.com>
Date
Oct 11, 2019, 08:52 UTC
Message-ID
<20191011085217.GA8481@wambui>
In-Reply-To
<20191010184439.94173-1-jonathantanmy@google.com>
On Thu, Oct 10, 2019 at 11:44:39AM -0700, Jonathan Tan wrote:
Show 13 quoted lines
> > Convert pickaxe_blame preprocessor constants in blame.h to an enum.
> > Also replace previous instances of the constants with the new enum values.
> 
> First of all, thanks for your initiative in finding a microproject and
> making a patch for it!
> 
> About your commit message title, I know that 50 characters is a soft
> limit, but we should adhere to it if possible. Also, in Git, the letter
> following the colon is usually in lowercase. So I would write it like:
> 
>   blame: make PICKAXE_BLAME_* an enum
> 
> (Feel free to use that or think of a different one.)
Okay, thanks for the suggestion. I'll use it.
Show 15 quoted lines
> 
> > -	if ((opt & PICKAXE_BLAME_COPY_HARDEST)
> > -	    || ((opt & PICKAXE_BLAME_COPY_HARDER)
> > +	if ((opt & BLAME_COPY_HARDEST)
> > +	    || ((opt & BLAME_COPY_HARDER)
> 
> Any reason why the names are renamed to omit "PICKAXE_"? In particular,
> these names are still global, so it is good to retain the extra context.
> 
> (This doesn't mean that you are wrong to remove them - I just gave my
> opinion, and a reason for my opinion. If you had a reason to remove
> them, you can mention that, and we can discuss this together. Or, if you
> read my reason and agree with it, you can say that and put the
> "PICKAXE_" back.)
> 
I wasn't really sure about omitting the "PICKAXE_" prefix, but I looked
at some of the other defined enums and it seemed like what would act as
the prefix in #defines was only used in the enum declaration. For
example I looked at:
	enum apply_ws_error_action {
		nowarn_ws_error,
		warn_on_ws_error,
		die_on_ws_error,
		correct_ws_error
	};

For comparison, I took "apply_" as the prefix that would translate to "#define APPLY_" which isn't included in the member variables. I do agree about retaining the extra context though, so I can definitely put the "PICKAXE_" back.

Show 22 quoted lines
> > -#define PICKAXE_BLAME_MOVE		01
> > -#define PICKAXE_BLAME_COPY		02
> > -#define PICKAXE_BLAME_COPY_HARDER	04
> > -#define PICKAXE_BLAME_COPY_HARDEST	010
> > -
> >  #define BLAME_DEFAULT_MOVE_SCORE	20
> >  #define BLAME_DEFAULT_COPY_SCORE	40
> >  
> > +enum pickaxe_blame_action {
> > +	BLAME_MOVE = 01,
> > +	BLAME_COPY,
> > +	BLAME_COPY_HARDER = 04,
> > +	BLAME_COPY_HARDEST = 010,
> > +};
> 
> In Git, we often look at historical commits, so it is good to keep
> history as clean as possible. In particular, we shouldn't move things
> around unless we have another reason to. Here, for example, you are
> moving the constants from above BLAME_DEFAULT_* to below. You should
> move them back. (Or if you have a reason for moving, mention that and we
> can discuss it.)
> 

I'll move them back. I have experience with all the "#define" constants being immediately after the "#includes" which is why I moved them, but I'll try to stick to the convention from now on.

> Also, I have a slight preference for putting "= 02" on the BLAME_COPY
> line but that is not necessary.
> 
Noted.
Show 7 quoted lines
> Apart from all that, one thing that I expected in this patch is the
> changing of the type of local variables and parameters. For example, in
> blame.c, I would have expected find_copy_in_parent() (for example) to
> have its "opt" parameter changed from "int" to "enum
> pickaxe_blame_option". One of the reasons why we want to use enums is
> for type safety, and that can only be done if we use the enum type when
> possible.

I overlooked this, sorry for that. I'll send an updated patch with these corrections.

Thanks!
Previous: SZEDER GáborNext: Jonathan Tan
Message 11 of 13 in “blame: Convert pickaxe_blame defined constants to enums”
  1. Wambui KarugaOct 10, 2019
  2. Jonathan TanOct 10, 2019
  3. Junio C HamanoOct 11, 2019
  4. Jonathan TanOct 11, 2019
  5. Junio C HamanoOct 12, 2019
  6. Jonathan TanOct 14, 2019
  7. Wambui KarugaOct 14, 2019
  8. Jonathan TanOct 14, 2019
  9. Wambui KarugaOct 15, 2019
  10. SZEDER GáborOct 15, 2019
  11. Wambui KarugaOct 11, 2019
  12. Jonathan TanOct 11, 2019
  13. Wambui KarugaOct 11, 2019

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.