From 80b74276367f423a899579b43581b8d9d06ebfa5 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 15 Jul 2025 20:44:47 +0000 Subject: [PATCH] knotserver/git: refactor command runner Signed-off-by: oppiliappan --- knotserver/git/cmd.go | 42 ++++++++++++++++++++++++++++++++++++++++++ knotserver/git/git.go | 21 --------------------- 2 file(s) changed, 42 insertion(s)(+), 21 deletion(s)(-) diff --git a/knotserver/git/cmd.go b/knotserver/git/cmd.go new file mode 100644 --- /dev/null +++ b/knotserver/git/cmd.go @@ -0,0 +1,42 @@ +package git + +import ( + "fmt" + "os/exec" +) + +const ( + fieldSeparator = "\x1f" // ASCII Unit Separator + recordSeparator = "\x1e" // ASCII Record Separator +) + +func (g *GitRepo) runGitCmd(command string, extraArgs ...string) ([]byte, error) { + var args []string + args = append(args, command) + args = append(args, extraArgs...) + + cmd := exec.Command("git", args...) + cmd.Dir = g.path + + out, err := cmd.Output() + if err != nil { + if exitErr, ok := err.(*exec.ExitError); ok { + return nil, fmt.Errorf("%w, stderr: %s", err, string(exitErr.Stderr)) + } + return nil, err + } + + return out, nil +} + +func (g *GitRepo) revList(extraArgs ...string) ([]byte, error) { + return g.runGitCmd("rev-list", extraArgs...) +} + +func (g *GitRepo) forEachRef(extraArgs ...string) ([]byte, error) { + return g.runGitCmd("for-each-ref", extraArgs...) +} + +func (g *GitRepo) revParse(extraArgs ...string) ([]byte, error) { + return g.runGitCmd("rev-parse", extraArgs...) +} diff --git a/knotserver/git/git.go b/knotserver/git/git.go --- a/knotserver/git/git.go +++ b/knotserver/git/git.go @@ -6,9 +6,7 @@ "bytes" "fmt" "io" "io/fs" - "os/exec" "path" - "sort" "strconv" "strings" "time" @@ -168,25 +166,6 @@ return 0, err } return count, nil -} - -func (g *GitRepo) revList(extraArgs ...string) ([]byte, error) { - var args []string - args = append(args, "rev-list") - args = append(args, extraArgs...) - - cmd := exec.Command("git", args...) - cmd.Dir = g.path - - out, err := cmd.Output() - if err != nil { - if exitErr, ok := err.(*exec.ExitError); ok { - return nil, fmt.Errorf("%w, stderr: %s", err, string(exitErr.Stderr)) - } - return nil, err - } - - return out, nil } func (g *GitRepo) Commit(h plumbing.Hash) (*object.Commit, error) { -- tangled.sh