2014-04-16 80 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