web-dev-qa-db-ja.com

msys / gitとgit-for-windows / mingw-w64-x86_64-gitの違いは何ですか?

Windowsでもクロスプラットフォームアプリケーションのテストスクリプトを実行できるように、MSYS2をインストールし、pacmanを使用して、テストスクリプトが依存するパッケージをインストールしました。

MSYS2はgitのポート(msys/git)を提供するので、Windows用のGitもインストールする必要はないと思います。しかし、MSYS2リポジトリで提供されるgitバージョンとGit for Windowsで提供されるgitバージョンの違いは何ですか?

私はこれまでこれらの違いに気づきました:

  1. gitクローンのPythonパッケージが開発モードでインストールされているvirtualenvでpip freezeを実行すると、msys/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は失敗しないため、パスの処理に関して少なくともいくつかの違いがあります。

  2. Git for Windowsのgitkとgit guiはそのまま使用できます。 GIT_GUI_LIB_DIR環境変数を設定する必要はありません ここで説明されているように

Git for Windowsリポジトリのgitが、現時点で最高のエクスペリエンスを提供しているようです。

追伸以下を/etc/pacman.confabove[mingw32][mingw64]および[msys]エントリに追加することで、MSYS2にGit for Windowsのgitをインストールできます。しかし、代わりにGit for Windows SDKをインストールする方が良いかもしれません。これは 基本的にMSYS2の特別版 Git for 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

この後(そしておそらくpacman -Sy)、WindowsのGitのGitをインストールできます。

pacman -S mingw-w64-x86_64-git

MSYS2にGit for Windowsのgitをインストールしない理由はないと思いますか?

[〜#〜] edit [〜#〜]Git for Windows(un)インストーラーがC:\ProgramData\Git\configを残しました。これは、gitがSSL証明書の間違った場所を指すようにします。これを修正するためにC:\ProgramData\Git\configを削除できます。

34
Brecht Machiels

msys/gitは、MSYS2によって提供される動的ライブラリにリンクされ、cygwinが行うのと同様の方法でPOSIXからWindowsへの互換性(POSIXエミュレーション)を提供します(MSYS2はcygwinからforkされています)。したがって、実行するにはMSYS2環境が存在している必要があります。

一方、git-for-windows/mingw-w64-x86_64-gitは、ネイティブWindowsへの変換を実行するMinGWコンパイラを使用してコンパイルされますコンパイル時の呼び出し。これにより、エミュレーションアプローチに比べてバイナリがはるかに高速になり、ネイティブのWindowsライブラリを実行するだけで済みます。

From MSYS2とMinGWの違い

MSYS2バイナリのPOSIXエミュレーション層は便利ですが、コストがかかります。通常、MSYS2プログラムは、MinGWの対応プログラム(対応するものがある場合)よりも著しく低速です。結果として、Git for Windowsプロジェクトは、MinGWバイナリとしてできるだけ多くのコンポーネントを提供しようとします。

参照: MSYS2とCygwinの違いは何ですか?

6
Niklas Holm