2014-04-16 81 views
0

我正在编写一个运行git命令并捕获输出的工具,并且希望将输出颜色化。 Git注意到该工具不是终端,所以color.ui需要设置为always。我真的不想在global/repo配置文件中设置它,因为它会混淆使用git的其他程序。 git book明确地也不鼓励:特定git命令的颜色输出

你很少需要color.ui = always。在大多数情况下,如果要在重定向输出中使用颜色代码,则可以将--color标志传递给Git命令,以强制使用颜色代码。 color.ui = true设置几乎总是您想要使用的。

可悲的是,并非所有的Git命令支持--color标志,最显着的git statusgit pull

那么,如何为一个git命令强制颜色?是否有可以设置的配置变量,例如为一个自定义的git配置文件?

回答

1

您可以使用-c option覆盖配置值。这适用于所有git命令。例如:

git -c color.ui=always status > status_file 

将颜色代码输出到文件中。它没有看到一个pty,所以它不会尝试分页。

1

我想你应该使用a master/slave PTY来沟通git子命令,而不是管道。这让git认为它在交互式会话中运行,而不是在管道中运行。

+0

这看起来很有希望,我会给它一个镜头。 – Yogu

+0

它似乎是最好的解决方案,但不幸的是,我现在无法在node.js中获得它的工作(有[pty.js](https://github.com/chjj/pty.js)),但那不是但与节点v0.11兼容)。不管怎样,谢谢你! – Yogu

+0

嗯,我看到:-)。不过,我想你可以使用例如简单的本地电话[节点FFI](https://github.com/rbranson/node-ffi)。或者扩展一下[node-posix](https://github.com/melor/node-posix)。毕竟,你需要一个简单的调用,它会返回给你几个int – user3159253