Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Git for Windows' system config to its top-level directory's etc/ #984

Closed

Commits on Jun 22, 2021

  1. mingw: move Git for Windows' system config where users expect it

    Git for Windows' prefix is `/mingw64/` (or `/mingw32/` for 32-bit
    versions), therefore the system config is located at the clunky location
    `C:\Program Files\Git\mingw64\etc\gitconfig`.
    
    This moves the system config into a more logical location: the `mingw64`
    part of `C:\Program Files\Git\mingw64\etc\gitconfig` never made sense,
    as it is a mere implementation detail. Let's skip the `mingw64` part and
    move this to `C:\Program Files\Git\etc\gitconfig`.
    
    Side note: in the rare (and not recommended) case a user chooses to
    install 32-bit Git for Windows on a 64-bit system, the path will of
    course be `C:\Program Files (x86)\Git\etc\gitconfig`.
    
    Background: During the Git for Windows v1.x days, the system config was
    located at `C:\Program Files (x86)\Git\etc\gitconfig`. With Git for
    Windows v2.x, it moved to `C:\Program Files\Git\mingw64\gitconfig` (or
    `C:\Program Files (x86)\Git\mingw32\gitconfig`). Rather than fixing it
    back then, we tried to introduce a "Windows-wide" config, but that never
    caught on.
    
    Likewise, we move the system `gitattributes` into the same directory.
    
    Obviously, we are cautious to do this only for the known install
    locations `/mingw64` and `/mingw32`; If anybody wants to override that
    while building their version of Git (e.g. via `make prefix=$HOME`), we
    leave the default location of the system config and gitattributes alone.
    
    Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
    dscho committed Jun 22, 2021
    Configuration menu
    Copy the full SHA
    996316d View commit details
    Browse the repository at this point in the history
  2. cmake(windows): set correct path to the system Git config

    Currently, when Git for Windows is built with CMake, the system Git config is
    expected in a different location than when building via `make`: the former
    expects it to be in `<runtime-prefix>/mingw64/etc/gitconfig`, the latter in
    `<runtime-prefix>/etc/gitconfig`.
    
    Because of this, things like `git clone` do not work correctly (because cURL is
    no longer able to find its certificate bundle that it needs to validate HTTPS
    certificates). See the full bug report and discussion here:
    git-for-windows#3071 (comment).
    
    This commit aligns the CMake-based build by mimicking what is already done in
    `config.mak.uname`.
    
    This closes git-for-windows#3071.
    
    Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
    dennisameling authored and dscho committed Jun 22, 2021
    Configuration menu
    Copy the full SHA
    e322e80 View commit details
    Browse the repository at this point in the history
  3. config: normalize the path of the system gitconfig

    Git for Windows is compiled with a runtime prefix, and that runtime
    prefix is typically `C:/Program Files/Git/mingw64`. As we want the
    system gitconfig to live in the sibling directory `etc`, we define the
    relative path as `../etc/gitconfig`.
    
    However, as reported by Philip Oakley, the output of `git config
    --show-origin --system -l` looks rather ugly, as it shows the path as
    `file:C:/Program Files/Git/mingw64/../etc/gitconfig`, i.e. with the
    `mingw64/../` part.
    
    By normalizing the path, we get a prettier path.
    
    Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
    dscho committed Jun 22, 2021
    Configuration menu
    Copy the full SHA
    01aa77d View commit details
    Browse the repository at this point in the history