【架构优化】合并 gitwork/workbranch.go 中 push/pull 重复的默认提交身份注入为 withFallbackIdentity

Đang mở
#488 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@fx-kurumi đang làm issue này rồi.

Từ ngày 13/11/2026.

  • #489 của @fx-kurumi — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
40/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
go
Lĩnh vực
devtools

Hướng nghiên cứu

Both copies live in internal/gitwork/workbranch.go: one in pushWorkBranch before the commit args are built, one in pullWorkBranch before the rebase args. Add package-level withFallbackIdentity(ctx, workspace, args) beside them and swap both call sites without changing argument order. Add a test file using a real temp repository for the configured and unconfigured cases, then run gofmt, go vet ./internal/gitwork/ and go test ./internal/gitwork/. PR #489 already touches this file, so check it before starting.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

现状问题

internal/gitwork/workbranch.go 里有两处一模一样的“仓库没配 user.email 时补默认提交身份”的代码:

  • pushWorkBranch:拼 commit 参数前
  • pullWorkBranch:拼 rebase 参数前
if email, _ := C(ctx, workspace, "config", "user.email"); strings.TrimSpace(email) == "" {
	args = append([]string{"-c", "user.name=LoopForge", "-c", "user.email=loopforge@local"}, args...)
}

两份代码都写死了 LoopForge / loopforge@local,以后改了一处容易漏掉另一处。

重构方案

在 workbranch.go 里新增包内函数 withFallbackIdentity(ctx, workspace, args) []string:仓库没配 user.email 时,在 args 前加上 -c user.name=LoopForge -c user.email=loopforge@local,配了就原样返回。两处调用改用这个函数,其余逻辑不动。

影响范围

  • 只改 internal/gitwork/workbranch.go 一个文件,另加一个测试文件;
  • 不改导出函数,不改 git 命令参数和执行顺序,行为不变;
  • 和 PR #452(同文件、verifyOffWorkBranch)改的不是同一段代码。

验证方式

  • 新增单元测试:用真实临时仓库验证“没配身份时加前缀”和“已配身份时原样返回”两种情况;
  • gofmt、go vet ./internal/gitwork/、go test ./internal/gitwork/ 全部通过。
Ngôn ngữ chính
Go
Star
141
Fork
28
Merge trung bình
1 ngày 15 giờ
Pull request đã merge (30 ngày)
113

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Tencent/LoopForge

Tất cả issue của Tencent/LoopForge

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.