fix: ignore pull request nonascii

This commit is contained in:
zzjc1234 2024-09-12 16:08:40 +08:00 committed by 周赵嘉程521432910016
parent 3cc96821ad
commit 9065d4f824

View File

@ -10,17 +10,13 @@ import (
"github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/plumbing/object"
) )
// nonAsciiMsg checks for non-ASCII characters in the commit message. // NonAsciiMsg checks for non-ASCII characters in the commit message.
// If the message starts with "Merge pull request", it skips the non-ASCII characters check. // It skips the non-ASCII characters check for lines starting with specific keywords like "Co-authored-by", "Reviewed-by", and "Co-committed-by".
// Otherwise, it iterates over each character in the message and checks if it is a non-ASCII character.
// If a non-ASCII character is found, it returns an error indicating not to use non-ASCII characters in commit messages.
// Otherwise, it returns nil indicating that the commit message is valid.
func NonAsciiMsg(root string) error { func NonAsciiMsg(root string) error {
// cmd := exec.Command("git", "log", "--encoding=UTF-8", "--format=%B")
repo, err := git.PlainOpen(root) repo, err := git.PlainOpen(root)
if err != nil { if err != nil {
slog.Error("openning git repo", "err", err) slog.Error("opening git repo", "err", err)
return fmt.Errorf("error openning git repo: %v", err) return fmt.Errorf("error opening git repo: %v", err)
} }
ref, err := repo.Head() ref, err := repo.Head()
@ -45,16 +41,38 @@ func NonAsciiMsg(root string) error {
} }
var nonAsciiMsgs []string var nonAsciiMsgs []string
// List of prefixes to ignore in the commit message
ignoredPrefixes := []string{
"Co-authored-by:",
"Reviewed-by:",
"Co-committed-by:",
"Reviewed-on:",
}
for _, msg := range msgs { for _, msg := range msgs {
if msg == "" { if msg == "" {
continue continue
} }
if strings.HasPrefix(msg, "Merge pull request") { // Split message by lines and ignore specific lines with prefixes
continue lines := strings.Split(msg, "\n")
} for _, line := range lines {
for _, c := range msg { trimmedLine := strings.TrimSpace(line)
if c > unicode.MaxASCII { ignore := false
nonAsciiMsgs = append(nonAsciiMsgs, msg) for _, prefix := range ignoredPrefixes {
if strings.HasPrefix(trimmedLine, prefix) {
ignore = true
break
}
}
if ignore {
continue
}
// Check for non-ASCII characters in the rest of the lines
for _, c := range line {
if c > unicode.MaxASCII {
nonAsciiMsgs = append(nonAsciiMsgs, msg)
break
}
} }
} }
} }