読者です 読者をやめる 読者になる 読者になる

かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot で書籍の貸出状況確認・貸出申請する Web アプリケーションを作る ( 番外編 )( Git for Windows を 2.5.1 → 2.5.3 へ その2 )

Git for Windows 2.5.3 をインストール先を変更せずに C:\Git\2.5.1 にインストールすると C:\Git\2.5.1\git-bash.exe は問題なく起動しますが、1度アンインストールして C:\Git にインストールし直すと C:\Git\git-bash.exe が起動しない件について、C:\Git にインストールし直したかったのでもう少し調査してみました。

調査内容

  • アンインストールしてから C:\Git にインストールし直した後、C:\Git の下に 2.5.1 ディレクトリを作成して C:\Git の下のディレクトリ・ファイル ( 2.5.1 ディレクトリを除く ) を全て C:\Git\2.5.1 の下にコピーしてから C:\Git\git-bash.exe を起動すると、これは起動しませんでした。ただし、この状態から C:\Git\2.5.1\git-bash.exe を起動すると、これは起動しました。同じ git-bash.exe を起動しているのに、起動する git-bash.exe のパスが異なるだけで起動する/しないが変わりました。

    この時のディレクトリ構成は以下のようになっています。

C:\Git
├ git-bash.exe  ← これを実行しても起動せずに終了する
├ usr
│ └ bin
│    └ bash.exe
└ 2.5.1            ← C:\Git の下のディレクトリ・ファイルを丸ごとこの下にコピーする
   ├ git-bash.exe  ← これを実行すると起動する
   └ usr
      └ bin
         └ bash.exe
  • ConEmu の GitHub で以下の Issue を見つけました。

    can't attach new Git For Windows 2.0 #176
    https://github.com/Maximus5/ConEmu/issues/176

    これによると git-bash.exe ではなく git-cmd.exe で c:\git\git-cmd.exe --command=usr/bin/bash.exe -l -i と指定すれば起動できるようです。

    実際に c:\git\git-cmd.exe --command=usr/bin/bash.exe -l -i で起動してみましたが、問題なく起動し rebase 時にも日本語が表示されました。

    f:id:ksby:20150923193531p:plain

    f:id:ksby:20150923193632p:plain

  • git-bash.exe が起動している時のプロセスの状況を確認したいと思い、Process Explorer というソフトをインストールして確認してみました。

    Process Explorer
    https://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx

    C:\Git\2.5.1\git-bash.exe で起動したプロセスは以下のようになっていました。

    f:id:ksby:20150923192512p:plain

    c:\git\git-cmd.exe --command=usr/bin/bash.exe -l -i で起動したプロセスは以下のようになっていました。

    f:id:ksby:20150923193808p:plain

    確認した結果をまとめると、

    • オプションを指定せずに単に git-bash.exe を起動した場合、cmd.exe 経由で C:\Git\2.5.1\usr\bin\bash.exe が起動されていました。
    • git-cmd.exe でオプションを指定して起動した場合には cmd.exe は呼び出されず、直接 bash.exe が起動されていました。
    • おそらく C:\Git\git-bash.exe をオプションを指定せずに起動した場合、cmd.exe 経由で bash.exe を起動しようとして、bash.exe のパスが正しくないため「指定されたパスが見つかりません。」のメッセージが出力されているものと思われます。
  • git-cmd.exe を単に実行するとコマンドプロンプトが起動しただけでした。bash.exe が実行されないため rebase 時に日本語が文字化けします。

結論

  • 結局 git-bash.exe を単に実行する方法は見つけられず。
  • ただし c:\git\git-cmd.exe --command=usr/bin/bash.exe -l -i で実行すればよいことが分かりましたので、今後は ConEmu からこのコマンド文字列で起動することとし、C:\Git にインストールし直したままにします。
  • ConEmu は1度ダイアログからコマンドを実行すれば次回からは history メニューから選択するだけで起動できるようになりますので、オプションの指定が必要になったとしても手間はかかりません。

    f:id:ksby:20150923200845p:plain

    f:id:ksby:20150923201043p:plain

  • コピーした C:\Git\2.5.1 ディレクトリは削除します。

  • IntelliJ IDEA の git.exe のパスは C:\Git\cmd\git.exe に変更します。

アンインストールした時に削除されていないデータがあると思うのですが、それが何なのか全く分からないんですよね。。。