【发布时间】:2015-06-26 21:24:26
【问题描述】:
我正在尝试使用 gulp-git 触发 git 命令,但我遇到了麻烦,因为我有额外的参数需要包含在我的 git 命令中。即 git-dir 和 work-tree。 git命令如下:
git --git-dir=../git_repos/dev --work-tree=../dev status
当我从与我的 gulpfile.js 相同的文件夹中的命令行运行它时,它可以正常工作,但我无法找出包含额外参数的正确方法。
我的基本测试 gulp 任务如下所示:
var gulp = require('gulp');
var git = require('gulp-git');
gulp.task('gitDevStatus', function(){
git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, function (err, stdout) {
if (err) throw err;
console.log(JSON.stringify(stdout));
console.log("DONE");
});
});
我遇到的问题是:
git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, ...
如果我在没有任何参数的情况下运行它,我当然会失败,因为它找不到 git 文件:
git.status({ }, ...
fatal: Not a git repository (or any of the parent directories): .git
如果我将额外的变量作为 args 我得到:
git.status({ args: "--git-dir=../git_repos/dev --work-tree=../dev" },
fatal: Not a git repository (or any of the parent directories): .git
这表明这种情况下的 args 不会改变执行的 git 命令
最后,如果我在 cwd 中添加它们:就像在我的完整任务示例中一样,我得到:
git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, ...
Error: spawn ENOENT
这个错误我理解是因为找不到文件或目录,但至少它不再抱怨没有.git
我尝试过的其他方法包括将目录定义用嵌套引号括起来:
git.status({ cwd: "--git-dir='../git_repos/dev' --work-tree='../dev'" }, ...
所有尝试都以相同的 spawn ENOENT 错误结束。
谁能指出我应该如何在 gulp-git 中处理这种更复杂的 git 命令的正确方向?
【问题讨论】: