Git v2系のWindows版がGit for Windowsの方で少し前から公開され始めていたことを今さら知ったので、更新した。2015/05/05現在はv2.4.0がリリースされている。インストールから動かすまでけっこう手間取ったので、メモがてら記事に残しておく。Git v2の使い勝手とかについては特に書かない。
このGit for Windowsでは、デフォルトで無理やり~/.bashrc
を読みに行くことがなくなった。~/.bash_profile
は読みに行くので、~/.bash_profile
から~/.bashrc
を読みに行くように、つまり普通にBashを設定してやれば良い。
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
これだけ書いた~/.bash_profile
を作成するのが良い。あまり関係ないイシューではそのうち~/.bash_profile
がなかったら作成するようにするというような事を言っているので、これについてはそのうち直りそうだ。
様々なコマンドから使われるlibeay32.dll
が、その読み込み優先順の問題で、システムにインストールされているlibeay32.dll
を呼びに行ってしまうようだ。もしバージョンが古いOpenSSLが何らかの理由でシステムにインストールされていたりすると、エラーで落ちたりする。僕の場合はgit-remote-https.exe
が「プロシージャ エントリ ポイント EVP_aes_128_ctr がダイナミック リンク ライブラリ LIBEAY32.dll から見つかりませんでした。」というエラーで落ち、push
やfetch
などがまったくできなかった。
libeay32.dll
がらみでエラーが出る人は、Git for Windows v2.4.0では最新版の1.0.2aを使っているようなので、それと同じものをシステムにインストールするのが良いだろう。インストーラーで配布しているところもあるが、OpenSSLの公式サイトからリンクされているページで配布されているZIPアーカイブを展開してコピーする方が良い。
64bit版Windowsを使っている人はopenssl-1.0.2-x64_86-win64.zip
をダウンロードして、展開し、中に入っているlibeay32.dll
とssleay32.dll
をC:\Windows\System32
へコピーする。
デフォルトでインストールされるGit Bash (実体はMinTTY)を使う場合は問題ないが、他のターミナルを使うとうまく判定されない事があり、パスが上手く通らないことがあるようだ(ConEmuで上手く通らなかった)。パスの最適化は環境変数MSYSTEM
を見て行われるようなので、新規ユーザー環境変数としてMSYSTEM
を作り、その値をMINGW64
(32bit版をインストールした人はMINGW32
)に設定してやれば良い。
上記OpenSSLがらみのエラーもこのあたりが怪しいが、Git CMDでも同じエラーでダメだったので、アップデートは必須だと思われる。
全て一箇所に集約されていたv1系とは違い、多くの実行ファイルがインストール先フォルダーのmingw64/bin/
以下に移動した。curl.exe
などもここにある。またその他の実行ファイルもusr/bin/
に移動されている。bash.exe
やvim.exe
など、MSYS関係の実行ファイルはこちらにある。
Vimなど他のプログラムから気軽に呼び出したい場合、両者にパスが通っていることが必要になることもあるので、うまいことパスを通す方法を模索する必要がある。僕は~/.vim/vimrc
の先頭で無理やり$PATH
を最適化してお茶を濁した。
if has('win32')
let $PATH = substitute($PATH, '\\', '/', 'g');
if $PATH !~? '\(^\|;\)C:/git/usr/bin\(;\|$\)'
let $PATH = 'C:/git/usr/bin;' . $PATH
endif
if $PATH !~? '\(^\|;\)C:/git/mingw64/bin\(;\|$\)'
let $PATH = 'C:/git/mingw64/bin;' . $PATH
endif
endif
ちゃんとインストールできた状態だと、HTTPSでの認証もそのまま継承され、ちゃんとpush
することができた。問題なく動いている。とはいっても特に何もすごく良くなったところもない気がしないでもないので、興味ある人だけいれるのが良いだろう。