【发布时间】:2022-01-02 17:06:33
【问题描述】:
当从 git hooks (例如预提交等)执行时,我需要在控制台应用程序中显示彩色输出。这是我的一个开源项目的问题,您可以查看 here
假设我们有一个带有以下代码的控制台应用程序:
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("Hello World");
当我们从 git hooks 运行它时,输出是 white。
我也尝试使用 VT100 转义码和enabling console virtual terminal 序列,但结果相同。
// ENABLE_VIRTUAL_TERMINAL_PROCESSING ...
// set color vt100
public static void SetForegroundColor(int r, int g, int b)
{
Console.Write($"\x1b[38;2;{r};{g};{b}m");
}
例如预提交
#!/bin/sh
# run the application.
husky run
感谢任何可以帮助我找到导致此问题的原因的信息。问题是我不确定在哪里看,是 git 特定的问题吗? Shell 脚本问题还是 C# 问题?
【问题讨论】:
-
绝对不是 Git,它对输出没有任何影响。它也绝对不是 bash 本身,它也与输出无关。但是,git-bash(作为 Windows 端口 of bash)可能会在 C# 上使用某种技巧来捕获输出,这可能会导致交互不良。但是 vt100 转义颜色控件应该可以工作,因为这就是 Git 产生 它自己的 彩色输出的方式。
-
我也在想同样的事情,但我在使用 vt100 时遇到了同样的问题!可能是 git-bash 问题!任何技巧:)?
标签: c# bash git git-bash githooks