Colors
Git尋呼機少了,但是是什麼導致了輸出著色?
less
根據這個執行緒,它本身不能進行語法高亮顯示。但是,
git diff
它的預設尋呼機 less 很好地顯示了彩色輸出。當我將輸出重定向git diff
到文件中時,看不到任何顏色轉義序列。是否
git diff
知道它被發送到哪裡,並相應地格式化輸出?如何做到這一點?我剛剛注意到 git 會為
diff
輸出著色(例如git diff
),但是,它通常不知道如何進行語法高亮顯示。例如git show 415fec6:log.tex
不啟用任何類似 TeX 的語法。
閱讀
git
資料,我發現了以下提示在
diff.h
:int use_color;
我之前指的是語法高亮,但那是不正確的。我的意思是輸出著色,參見例如
Git 用於
isatty()
檢查 stdout 是否為 tty:這用於查看是否必須使用分頁器(pager.c)以及顏色(color.c)。
跑步:
git diff --color=always > output
顯示顏色轉義。
該死的,我在
git
’s 的color.c
文件中找到了它:static int check_auto_color(void) { if (color_stdout_is_tty < 0) color_stdout_is_tty = isatty(1); if (color_stdout_is_tty || (pager_in_use() && pager_use_color)) { char *term = getenv("TERM"); if (term && strcmp(term, "dumb")) return 1; } return 0; }