git-cmd.exeのソースコードgit-wrapper.c を読んだ

Git for Windowsでは、コンソールプロセスで実行した対話型コマンド実行環境のpowershell.exeやcmd.exeやbash.exeから、キャラクターモードアプリケーションとしてgit.exeを実行する。

コンソールプロセスやキャラクターモードアプリケーションについてはMicrosoft Documentation(昔のMSDN?)に書かれてる。

そのために用意されているのが、同じgit-wrapper.cをコンパイル、リンクしたgit-cmd.exeやgit-bash.exeだった(cmd/git.exeもそうだとは知らなかった)。

Makefile

名前を頼りにリポジトリを眺めていると見つかる。

mingw-w64-git/mingw-w64-git.mak#L21-L25

git-bash.exe git-cmd.exe compat-bash.exe \
cmd/git.exe cmd/gitk.exe cmd/git-gui.exe: \
                %.exe: git-wrapper.o git.res
        @mkdir -p cmd
        $(QUIET_LINK)$(CC) $(ALL_LDFLAGS) $(COMPAT_CFLAGS) -o $@ $^ -lshlwapi

git-wrapper.c

順番に読んでいるだけで、実際の使われ方と対応付けることはしてない。

mingw-w64-git/git-wrapper.c