使用node.js确定是否在git目录中

时间:2016-05-12 22:47:47

标签: javascript node.js git bash

我正在尝试确定我的节点进程是否在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控件下的目录中?

基本上,我正在尝试使用等同于

的bash
if git rev-parse --git-dir > /dev/null 2>&1; then
    ... do something
fi

2 个答案:

答案 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'});