git-sync-web 自动提交 2026-09-09 13:58:07
This commit is contained in:
@@ -30,16 +30,22 @@ func gitRun(repoPath string, timeout time.Duration, args ...string) (string, err
|
||||
"GIT_SSH_COMMAND=ssh -oBatchMode=yes -oStrictHostKeyChecking=accept-new",
|
||||
)
|
||||
cmd.WaitDelay = 10 * time.Second
|
||||
var buf bytes.Buffer
|
||||
cmd.Stdout = &buf
|
||||
cmd.Stderr = &buf
|
||||
// stdout 与 stderr 分开收集:成功时只返回干净的 stdout 供解析,
|
||||
// 避免 git 的环境告警(如 autocrlf、进度信息)污染解析结果;
|
||||
// 失败时优先用 stderr 作为错误信息,保证诊断信息不丢失。
|
||||
var outBuf, errBuf bytes.Buffer
|
||||
cmd.Stdout = &outBuf
|
||||
cmd.Stderr = &errBuf
|
||||
err := cmd.Run()
|
||||
out := strings.TrimSpace(buf.String())
|
||||
out := strings.TrimSpace(outBuf.String())
|
||||
if err != nil {
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
return out, fmt.Errorf("命令超时: git %s", strings.Join(args, " "))
|
||||
}
|
||||
msg := out
|
||||
msg := strings.TrimSpace(errBuf.String())
|
||||
if msg == "" {
|
||||
msg = out
|
||||
}
|
||||
if msg == "" {
|
||||
msg = err.Error()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user