Subject: RE: bug#21789: 25.0.50; Can' build Emacs (my first build since GIT migration)

From: Vincent Belaïche <[email-masked]>
Date: Sat, 31 Oct 2015 18:57:37 +0100

Dear Eli,

----------------------------------------
> Date: Sat, 31 Oct 2015 15:42:09 +0200
> From: [email-masked]
> Subject: Re: bug#21789: 25.0.50; Can' build Emacs (my first build since GIT migration)
> To: [email-masked]
> CC: [email-masked]
>

[...]

>> Ok, I will do that. It surprises me that you need to tamper with the
>> git system setting that affect all the projects using git, just for
>> the sake of one project.
>
> It's not for the sake of one project. Installing Git as I indicated is
> the only sensible thing for _any_ project. For some reason, Git for
> Windows doesn't have that as default; moreover, in the past I remember
> some people arguing with me that what I suggest is actually wrong (I
> disagree with their arguments).
>

My own opinion is that in the end everybody/every-system is going to use
LF as an EOL, so even on MSW this is going to become a standard EOL
character, just as `/' has become a supported file separator in pathes.

So, as much as possible we should strive to keep LF as EOL, as anyway on
MSW most editors support it and keep it after edit. Maybe you can
remember the discussion we already had concerning Texinfo.

The only potential problem is when you are on MSW and you create a new
file, in that case you need some do translation to LF, either manual
(e.g.  dos2unix) or automatically with the help of the VC system
(e.g. git by setting eol attribute to lf through a wildcard, or by
setting the core.eol configuration parameter).

A similar problem is that of text files that are generated by a tool
(e.g. .dbk, .html, etc from a .texinfo), in such a case on MSW you will
have CRLF at generatation and you need either manual or automatic
conversion before making the file public.

So, to get to the point, removing the core.autocrlf and suchlikes from
the config is probably a good thing, but IMHO that is not enough,
setting file eol attributes with discriminating wildcard should also be
done.

> I would encourage you to report this to the msysGit project as a bug.

Done : https://github.com/msysgit/msysgit/issues/322#issue-114421155
>
>> I am using git also for fmtcount and I have some changes pending, so
>> I think that I will have to restore the original system settings
>> when I come back to fmtcount. That is not a very practical solution.
>
> The setting is on ~/.gitconfig and can be overridden by the
> project-local .git/config file, if you need. But my recommendation is
> to switch all your Git-based projects to this default.

I will do that for fmtcount once I am done with the on-going
changes. For the time being I have just done this:

git config --system --unset core.autocrlf cd /path/to/project/fmtcount
git config --local --bool -add core.autocrlf true cd
/path/to/project/emacs git config --local --bool -add core.autocrlf
false

The two last instructions are probably useless, but I made it so that in
the future people on MSW wanting to build Emacs from source with msysGit
won't fail like me.

> Otherwise, if the project has files that need special EOL format, you
> will get in trouble.
>
>> I am quite novice with git, but just wondering whether it isn't
>> possible to get the same effect with affecting emacs only by writing
>> in the local config file (emacs/.git/config) some setting that would
>> supersede the global and system settings, e.g. you would have
>>
>> [core] autocrlf =
>>
>> in the local config.
>
> It's possible, yes. Just make sure you have neither autocrlf nor eol
> settings in your .git/config file, in the [core] section.

I have now the following setting in the .git/config [core] section

   autocrlf = false

That means, hopefully, that in the future anybody on MSW with
core.autocrlf=true at system level will be able to build from sources
without any question. OK, that will make potentially fewer people
barking on msysGit issue tracker.

Well, I am not so sure, I have read in the git manual that autocrlf
could have setting `true', `warn', and `input', but nothing was said
about `false', maybe I should have typed:

   git config --local --bool -add core.autocrlf ""

>
> Once again, using anything else in other projects is just waiting for
> trouble, so I really recommend this as a global setting.

VBR and thank you for the advice,
    Vincent