4

使用 Grunt 构建、添加、提交并将我的代码推送到 Heroku。

构建、添加和提交工作得很好。

当我在 grunt shell 中指定“git push heroku master”时,进程运行时我没有得到标准输出。

这是 Grunt.js 中的代码:

'git-push':             {
    command: 'git push heroku master',
    options: {
                failOnError: true,
                stdout: true,
                execOptions: { cwd: '../deploy'}
             }
}

但我只在进程运行时看到以下内容:

$ grunt push
Running "shell:git-push" (shell) task
Done, without errors.

我想在推送过程中查看推送的输出。

无论如何要这样做?

更新:完整的 grunt shell 脚本

shell: {
    'git-add':              {
        command: 'git --no-pager add .',
        options: {
            stdout: true,
            execOptions: { cwd: '../deploy'}
        }
    },
    'git-commit':           {
        command: 'git --no-pager commit -m "update"',
        options: {
            stdout: true,
            execOptions: { cwd: '../deploy'}
        }
    },
    'git-push':             {
        command: 'git --no-pager push heroku master',
        options: {
            failOnError: true,
            stdout: true,
            execOptions: { cwd: '../deploy'}
        }
    }
}

最终的 Grunt Shell(工作):

shell: {
    'git-add':              {
        command: 'git --no-pager add .',
        options: {
            stdout: true,
            stderr: true,
            execOptions: { cwd: '../deploy'}
        }
    },
    'git-commit':           {
        command: 'git --no-pager commit -m "update"',
        options: {
            stdout: true,
            stderr: true,
            execOptions: { cwd: '../deploy'}
        }
    },
    'git-push':             {
        command: 'git --no-pager push heroku master',
        options: {
            failOnError: true,
            stdout: true,
            stderr: true,
            execOptions: { cwd: '../deploy'}
        }
    }
}
4

1 回答 1

2

看:

如何让 git diff 写入标准输出?

添加 --no-pager 作为选项,会给出输出。

git --no-pager <subcommand> <options>

此外,某些 git 命令会写入 stderr,如下所述:

http://git.661346.n2.nabble.com/git-push-output-goes-into-stderr-td6758028.html

通过在 grunt 任务中包含标志并捕获 stderr,我能够获得 heroku 推送过程的最后一部分的输出(但不是跟踪上传的部分):

Fetching repository, done.

-----> Node.js app detected

       PRO TIP: Specify a node version in package.json
       See https://devcenter.heroku.com/articles/nodejs-support
于 2014-02-20T23:16:15.650 回答