fix: 隐藏 Windows 上 git 子进程的控制台窗口

This commit is contained in:
zyj
2026-03-10 09:26:18 +08:00
parent a50af3f07a
commit 423a6a8b42
3 changed files with 23 additions and 0 deletions

View File

@@ -38,6 +38,7 @@ func (g *GitClient) Run(path string, args ...string) (string, error) {
argsArr := append(header, args...) argsArr := append(header, args...)
log.Println(argsArr) log.Println(argsArr)
cmd := exec.CommandContext(ctx, "git", argsArr...) cmd := exec.CommandContext(ctx, "git", argsArr...)
hideWindow(cmd)
var stdout, stderr bytes.Buffer var stdout, stderr bytes.Buffer
cmd.Stdout = &stdout cmd.Stdout = &stdout
cmd.Stderr = &stderr cmd.Stderr = &stderr

View File

@@ -0,0 +1,8 @@
//go:build !windows
package git
import "os/exec"
// hideWindow 非 Windows 平台无需处理
func hideWindow(cmd *exec.Cmd) {}

View File

@@ -0,0 +1,14 @@
package git
import (
"os/exec"
"syscall"
)
// hideWindow 在 Windows 上隐藏子进程的控制台窗口
func hideWindow(cmd *exec.Cmd) {
cmd.SysProcAttr = &syscall.SysProcAttr{
HideWindow: true,
CreationFlags: 0x08000000, // CREATE_NO_WINDOW
}
}