代码拉取完成,页面将自动刷新
package git
import (
"bytes"
"context"
"errors"
"os/exec"
"strings"
)
var (
ArgsCommitLog = []string{"log", "--pretty=format:\"%h\"", "-1"}
ArgsCommit = []string{"rev-parse", "--short", "HEAD"}
ArgsDirty = []string{"status", "--porcelain"}
ArgsBranch = []string{"rev-parse", "--abbrev-ref", "HEAD"}
ArgsDescribe = []string{"describe", "--tags", "--always"}
ArgsTag = []string{"describe", "--abbrev=0", "--tags"}
)
type Cmd struct {
}
func (c *Cmd) IsRepo(ctx context.Context, env []string) bool {
out, err := c.Do(ctx, env, []string{"rev-parse", "--is-inside-work-tree"}...)
return err == nil && strings.TrimSpace(out) == "true"
}
// VersionNumber sample 1.0.1
func (c *Cmd) VersionNumber(ctx context.Context, env []string) string {
ver := c.Version(ctx, env)
if ver != "" && ver[0] == 'v' {
return ver[1:]
}
return ver
}
// Version sample v1.0.1
func (c *Cmd) Version(ctx context.Context, env []string) string {
ver, err := c.Do(ctx, env, ArgsTag...)
if err != nil {
return ""
}
return ver
}
func (c *Cmd) Do(ctx context.Context, env []string, args ...string) (string, error) {
a := append([]string{"-c", "log.showSignature=false"}, args...)
return c.DoCmd(ctx, env, a...)
}
func (c *Cmd) DoCmd(ctx context.Context, env []string, args ...string) (string, error) {
cmd := exec.CommandContext(ctx, "git", args...)
stdout := bytes.Buffer{}
stderr := bytes.Buffer{}
cmd.Stdout = &stdout
cmd.Stderr = &stderr
cmd.Env = append(cmd.Env, env...)
err := cmd.Run()
if err != nil {
return "", errors.New(stderr.String())
}
return stdout.String(), nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。