我正在尝试确定我的节点进程是否在git目录中运行。以下工作,但仍在控制台中输出致命错误。
function testForGit() {
try {
var test = execSync('git rev-parse --is-inside-work-tree', {encoding: 'utf8'});
} catch (e) {
}
return !!test;
}
console.log(testForGit());
当在git控制下的目录中时,我得到true
作为结果。但是当在git控制下的目录之外时,我得到:
fatal: Not a git repository (or any of the parent directories): .git
false
我的问题:
有没有办法抑制记录的错误?或有更好的方法来确定我是否在git控件下的目录中?
基本上,我正在尝试使用等同于
的bashif git rev-parse --git-dir > /dev/null 2>&1; then
... do something
fi
答案 0 :(得分:2)
如果您使用docker
并且不想为应用程序构建映像时安装git
作为依赖项。
@janos提供的方式无效。
另一种方法是检查项目的根路径中是否存在.git
目录。但这取决于您的要求。就我而言,就足够了。
exports.isGitSync = function isGitSync (dir) {
return fs.existsSync(path.join(dir, '.git'))
}
答案 1 :(得分:1)
您可以尝试在stdout
来电中重定向execSync
,如下所示:
var test = execSync('git rev-parse --is-inside-work-tree 2>/dev/null', {encoding: 'utf8'});