To be able to run the test scripts for my cross-platform application also on Windows, I installed MSYS2 and used pacman to install any packages my test scripts rely on.
Since MSYS2 provides a port of git (msys/git), I think there is no need to install Git for Windows as well. But what are the differences between the git version provided in the MSYS2 repository and the one provided by Git for Windows?
I noticed these differences so far:
msys/git will fail when running pip freeze
on a virtualenv where a Python package from a git clone is installed in develop mode:
FileNotFoundError: [WinError 3] The system cannot find the path specified: '/c/users/user/documents/project/.git\\..'
git-for-windows/mingw-w64-x86_64-git doesn't fail, so there are at least some differences with respect to path handling.
Git for Windows's gitk and git gui work out of the box. There's no need to set the GIT_GUI_LIB_DIR
environment variable as described here.
It seems git from the Git for Windows repository offers the best experience at this point.
P.S. You can install Git for Windows's git in MSYS2 by adding the following to /etc/pacman.conf
, above the [mingw32]
, [mingw64]
and [msys]
entries. But it might be a better idea to install the Git for Windows SDK instead, which is basically a special edition of MSYS2 including Git for Windows. Otherwise, the procedure below (and more) is also described here.
[git-for-windows] Server = https://dl.bintray.com/$repo/pacman/$arch [git-for-windows-mingw32] Server = https://dl.bintray.com/git-for-windows/pacman/i686
After this (and perhaps a pacman -Sy
), you can install the Git for Windows's git:
pacman -S mingw-w64-x86_64-git
I suppose there's no reason not to install Git for Windows's git in MSYS2?
EDIT The Git for Windows (un)installer left behind C:\ProgramData\Git\config
. This points git at the wrong location for the SSL certificates. You can remove C:\ProgramData\Git\config
to fix this.
msysGit is the development environment to compile Git for Windows. It is complete, in the sense that you just need to install msysGit, and then you can build Git. Without installing any 3rd-party software. msysGit is not Git for Windows; that is an installer which installs Git -- and only Git.
MINGW refers to executables that are compiled using the MINGW GCC Compiler and target the Win32 API. MSYS2 refers to executables that are compiled by MSYS2 GCC Compiler and make use of a POSIX emulation layer.
MINGW64 is the new icon being used with Git for Windows 2. x The MINGW64 is the value from the MSYSTEM environment variable. This has been included in the bash prompt by setting PS1 in the /etc/bash. bashrc file.
Git for Windows leverages MSYS2 and ships with a subset of its files. MSYS2 even sports a package management system called " pacman " to install more tools (including Git...).
msys/git is linked against a dynamic library provided by MSYS2 to provide POSIX-to-Windows compatibility (POSIX emulation) in a manner similar to how cygwin does (MSYS2 is forked from cygwin), thus it requires the MSYS2 environment to be present to run.
git-for-windows/mingw-w64-x86_64-git on the other hand, is compiled using the MinGW compiler, which performs the translation to native Windows calls at compile time, which results in a much faster binary compared to the emulation approach, and does only require native Windows libraries to run.
From The difference between MSYS2 and MinGW:
The POSIX emulation layer of MSYS2 binaries is convenient, but comes at a cost: Typically, MSYS2 programs are noticably slower than their MinGW counterparts (if there are such counterparts). As a consequence, the Git for Windows project tries to provide as many components as possible as MinGW binaries.
See also: How does MSYS2 differ from Cygwin?
git-for-windows/git issue 2688 adds a more recent (2020) perspective, from the maintainer of Git for Windows Johannes Schindelin:
The purpose of Git for Windows is really to bring Git to Windows.
While that implies that we have to ship quite a few Unix-like tools, it does not mean that we will include such tools unless they are needed for Git's own operations, or at least for historical reasons (needs of active contributors are sometimes a factor in deciding whether to include a tool or not).
Having said that, what you really are looking for is MSYS2.
Git for Windows leverages MSYS2 and ships with a subset of its files. MSYS2 even sports a package management system called "pacman
" to install more tools (including Git...).
The documentation is "Install inside MSYS2 proper" as noted in the question, but it has recently changed, since Pacboy is removed from the base installation.
So it needs to be added back with:
# pacman -Fy :: Synchronizing package databases... [...] # pacman -F pacboy.exe # pacman -F pacboy msys/pactoys-git r2.07ca37f-1 (base base-devel) usr/bin/pacboy usr/share/bash-completion/completions/pacboy
Then:
Copying
/var/lib/pacman/local
files over from mymsys2
installation intogit-bash
's, I was able to installtmux
(as I planned/showed in OP), and it is working fine for me.
So, having
/var/lib/pacman/local
files is all it take formsys2
andpacman
to work withingit-bash
(I meant git-for-windows).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With