VSCode使用Msys2中的git

VSCode中直接使用Msys2中的git时,自带的源代码管理功能和一些扩展无法正常使用。其原因在于rev-parse命令返回代码仓的格式为Msys格式,即/d/code/repo,而git-for-windows则返回的是Windows所使用的D:\code\repo格式。这就造成了VSCode无法正常解析代码仓地址。

为了解决这一问题,VSCode在GitHub的Issue中给出了一个解决办法,使用git-wrap.bat脚本把git命令包装一下:

@echo off
setlocal

rem If you don't add path for msys2 into %PATH%, enable following line.
rem set PATH=c:\msys64\usr\bin;%PATH%

if "%1" equ "rev-parse" goto rev_parse
git %*
goto :eof
:rev_parse
for /f %%1 in ('git %*') do cygpath -w %%1

这虽然可以解决VSCode自带的源代码管理无法使用的问题,但是其他一些扩展如GitLensGit Graph等部分功能还是会有问题。经过多方搜索和尝试,终于从这个Issue里找到了问题所在:bat脚本需要通过cmd.exe调用执行,但是有问题的扩展所使用的spawn并不会使用cmd.exe执行bat脚本,从而导致部分功能失效。

此时只需要手撸一段程序替代上边bat脚本中的过程,编译成git-wrap.exe文件,然后在VSCode中将git的路径写成git-wrap.exe就可以解决问题了。

添加新评论