Subject: Re: [PATCH v2 1/3] ident: stop assuming that `gw_gecos` is writable

From: Junio C Hamano <[email-masked]>
Date: Thu, 06 Mar 2025 08:33:43 -0800

"Johannes Schindelin via GitGitGadget" <[email-masked]>
writes:

> In other words, contrary to my expectations, the `win+Meson` job is
> ill-equipped to replace the `win build` job because it exercises a
> completely different tool version/compiler flags vector than what Git
> for Windows needs.

It is apparent that meson support is a new procedure to build our
codebase that is untested and unproven on Windows at all, given that
among all people who may have stake in Windows you are discovering
problems in it this late in the cycle.  Nobody knows what other
breakages, other than something obvious and easy to catch like "ah,
compiler refuses to go further", are lurking under the radar.

I would be reluctant to trust the build artifact out of meson-based
build on Windows after seeing your report, especially the above
part.

A reasonable alternative may be to declare that meson-based build is
not ready yet at this point, and possibly disable win+Meson jobs to
punt and divert our engineering resources elsewhere in the meantime.
For a new thing, having an uneven support depending on the platform
early in the evolution is not unusual or to be ashamed of.

> Nevertheless, there is currently this huge push, including breaking
> changes after -rc1 and all, for switching to Meson. Therefore, we need
> to make it work, somehow, even in Git for Windows' SDK, hence this
> patch, at this point in time.

As I said earlier already, I do not mind turning the type of this
pointer, which is only used to read from a struct member, like this
patch does.  It is the right thing to do, so I'll apply.

But I personally would not be comfortable with the product built
with "completely different tool version/compiler flags vector than
what G4W needs", even the compilation passes with just this small
change.  If I were using Windows, that is.

> Signed-off-by: Johannes Schindelin <[email-masked]>
> ---
>  ident.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Thanks, will apply.

> diff --git a/ident.c b/ident.c
> index caf41fb2a98..967895d8850 100644
> --- a/ident.c
> +++ b/ident.c
> @@ -59,7 +59,7 @@ static struct passwd *xgetpwuid_self(int *is_bogus)
>  
>  static void copy_gecos(const struct passwd *w, struct strbuf *name)
>  {
> -	char *src;
> +	const char *src;
>  
>  	/* Traditionally GECOS field had office phone numbers etc, separated
>  	 * with commas.  Also & stands for capitalized form of the login name.