我在macOS Monterey(v12.5)上运行了一个电子应用程序(Electron v17.4.10),它在启动时会尝试执行命令git lfs install
。它通过使用Node child_process包的spawn命令来调用对独立git可执行文件的直接调用。
当电子版应用安装时,它会提供自己的git版本,但不会添加到PATH中,以防止干扰已经安装的任何git版本。独立版本的git(v2.33.0)的文件夹结构如下图所示,git-lfs二进制文件(v3.2.0)包含在/PortableGit/git/libexec/git-core/
中
Standalone Git Directory Structure
执行的完整命令为:"/Applications/MyApp/Utilities/PortableGit/bin/git" lfs install
输出为:
git: 'lfs' is not a git command. See 'git --help'.
The most similar command is
log
我怎样才能让git的独立安装识别子命令lfs
而不把它放在PATH中呢?像我描述的那样拥有一个独立的git包是否可行?或者我应该放弃这种方法,并确保git在目标机器上正确安装?
1条答案
按热度按时间niwlg2el1#
这个问题的答案是Electron的进程.env和目标系统的env不同。所以虽然Git会在PATH中寻找子模块,但终端中使用的PATH和子进程使用的PATH是不同的。
在
process.env.PATH
中添加一个':',后面跟着git-lfs二进制文件的存储路径,可以让独立的git安装正确识别git-lfs子命令。即