运行 git 来自 Node 的 API
Running git blame from Node's API
我正在构建一个 VS Code 扩展,它作为过程的一部分运行 git blame。
我读到我可以使用 Node 的 API 从 JavaScript 执行命令行命令,使用 child process 像这样:
var exec = require('child_process').exec;
exec(`ls`
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
运行 这个非常简单的 ls 命令确实会在控制台中打印出目录。
但是,当我用 exec(git blame -L ${startLine},${endLine} extension.ts
替换 exec(ls
时,它说我不在 git 存储库中。请注意执行 git blame 命令从我的实际终端确实有效。
我也尝试 运行 使用 sudo 命令。它抛出错误
sudo:需要终端读取密码;使用 -S 选项从标准输入读取或配置 askpass 助手
sudo: 需要密码
/private/var/folders/th/40j77cv1587_zndgl34g0m100000gn/T/AppTranslocation/C0CFF9C7-F5C7-4C37-B7BD-1990096D4E41/d/Visual工作室代码.app/Contents/Resources/app/out/bootstrap-fork.js:5
我该怎么做才能让它发挥作用?
原来 Node 的子进程是 运行 根目录的命令,而不是工作目录。
由于我正在开发 VS Code 扩展,var currentlyOpenTabfilePath = vscode.window.activeTextEditor?.document.uri.fsPath;
解决了它。
值得一提的是,我尝试了不同的方法,但均无效。它们是:
我正在构建一个 VS Code 扩展,它作为过程的一部分运行 git blame。
我读到我可以使用 Node 的 API 从 JavaScript 执行命令行命令,使用 child process 像这样:
var exec = require('child_process').exec;
exec(`ls`
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
运行 这个非常简单的 ls 命令确实会在控制台中打印出目录。
但是,当我用 exec(git blame -L ${startLine},${endLine} extension.ts
替换 exec(ls
时,它说我不在 git 存储库中。请注意执行 git blame 命令从我的实际终端确实有效。
我也尝试 运行 使用 sudo 命令。它抛出错误
sudo:需要终端读取密码;使用 -S 选项从标准输入读取或配置 askpass 助手 sudo: 需要密码
/private/var/folders/th/40j77cv1587_zndgl34g0m100000gn/T/AppTranslocation/C0CFF9C7-F5C7-4C37-B7BD-1990096D4E41/d/Visual工作室代码.app/Contents/Resources/app/out/bootstrap-fork.js:5
我该怎么做才能让它发挥作用?
原来 Node 的子进程是 运行 根目录的命令,而不是工作目录。
由于我正在开发 VS Code 扩展,var currentlyOpenTabfilePath = vscode.window.activeTextEditor?.document.uri.fsPath;
解决了它。
值得一提的是,我尝试了不同的方法,但均无效。它们是: