В чем разница между msys/git и git -for-windows/mingw-w64-x86_64- git?

Чтобы иметь возможность запускать тестовые скрипты для моего кросс-платформенного приложения также в Windows, я установил MSYS2 и использовал pacman для установки любых пакетов, на которые полагаются мои тестовые сценарии.

Так как MSYS2 предоставляет порт git (msys/git), я думаю, что нет необходимости устанавливать git для Windows. Но каковы различия между версией git, предоставленной в репозитории MSYS2, и тем, который предоставляется git для Windows?

Я заметил эти различия:

  • msys/git завершится сбой при запуске pip freeze на виртуальном сервере, где в режиме разработки установлен пакет Python из git клона:

    FileNotFoundError: [WinError 3] The system cannot find the path specified: '/c/users/user/documents/project/.git\\..'
    

    git -for-windows/mingw-w64-x86_64- git не прерывается, поэтому существуют некоторые различия в отношении обработки пути.

  • Git для Windows gitk и git gui работают из коробки. Нет необходимости устанавливать переменную среды GIT_GUI_LIB_DIR как описано здесь.

Кажется, что git из репозитория git для Windows предлагает лучший опыт на этом этапе.

P.S. Вы можете установить git для Windows git в MSYS2, добавив следующее в /etc/pacman.conf, выше записи [mingw32], [mingw64] и [msys]. Но лучше было бы установить git для Windows SDK, который в основном специальный выпуск MSYS2, включая git для Windows. В противном случае процедура ниже (и более) также описана здесь.

[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

После этого (и, возможно, a pacman -Sy) вы можете установить git для Windows git:

pacman -S mingw-w64-x86_64-git

Я полагаю, нет причин не устанавливать git для Windows git в MSYS2?

EDIT Установщик git для Windows (un) оставил C:\ProgramData\Git\config. Это указывает на git в неправильном месте для сертификатов SSL. Вы можете удалить C:\ProgramData\Git\config, чтобы исправить это.

Ответ 1

msys/ git связан с динамической библиотекой, предоставляемой MSYS2, для обеспечения совместимости с POSIX-Windows (эмуляция POSIX) способом, подобным тому, как работает cygwin (MSYS2 разветвляется с cygwin), поэтому для работы требуется среда MSYS2.

git -for-windows/mingw-w64-x86_64- git, скомпилируется с использованием компилятора MinGW, который выполняет перевод на собственные вызовы Windows во время компиляции, что приводит к значительно более быстрому двоичному алгоритму по сравнению с подходом эмуляции и требует выполнения только собственных библиотек Windows.

От Разница между MSYS2 и MinGW:

Уровень эмуляции POSIX двоичных файлов MSYS2 удобен, но стоит дорого: обычно программы MSYS2 заметно медленнее, чем их аналоги MinGW (если есть такие аналоги). Как следствие, проект Git для Windows пытается обеспечить как можно больше компонентов в качестве MinGW двоичных файлов.

Смотрите также: Как отличается MSYS2 от Cygwin?