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自带的源代码管理无法使用的问题,但是其他一些扩展如GitLens
和Git Graph
等部分功能还是会有问题。经过多方搜索和尝试,终于从这个Issue里找到了问题所在:bat
脚本需要通过cmd.exe
调用执行,但是有问题的扩展所使用的spawn
并不会使用cmd.exe
执行bat
脚本,从而导致部分功能失效。
此时只需要手撸一段程序替代上边bat
脚本中的过程,编译成git-wrap.exe
文件,然后在VSCode中将git
的路径写成git-wrap.exe
就可以解决问题了。