From 2de3f6772d3bf7b6917727193eabb2046df8feb3 Mon Sep 17 00:00:00 2001 From: longxu0509 <108991596+longxu0509@users.noreply.github.com> Date: Thu, 9 Mar 2023 16:07:13 +0800 Subject: [PATCH] fix: add aheadCnt in sysinfo (#1632) * feat: add sync module to bi-sync mysql * feat: fix the delay problem * feat: fix go mod * feat: fix the varchar(100) parse error * fix: fix go.mod space inconsistency * fix: fix go.mod space inconsistency * fix: use sql builder instead of concatenation * fix: remove serverId * fix: fix file is not `gofumpt`-ed (gofumpt) error * feat: add mysql bi-sync * feat: fix some data inconsistency problems * feat: add function atuo get server uuid * fix: encapsulate the struct to optimize the code * fix: fix incorrect Casdoor version in system info page * fix: fix incorrect root path * Update sysytem_test.go * feat: add aheadCnt means that the commit is ahead of version several times --------- Co-authored-by: hsluoyz --- controllers/system_info.go | 12 +++++++----- util/system.go | 18 +++++++++++------- util/sysytem_test.go | 18 ++++++++++++------ 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/controllers/system_info.go b/controllers/system_info.go index 8d52e9ec..de349f54 100644 --- a/controllers/system_info.go +++ b/controllers/system_info.go @@ -26,8 +26,9 @@ type SystemInfo struct { } type GitRepoInfo struct { - Commit string `json:"commit"` - Version string `json:"version"` + AheadCnt int `json:"ahead_cnt"` + Commit string `json:"commit"` + Version string `json:"version"` } // GetSystemInfo @@ -76,15 +77,16 @@ func (c *ApiController) GetSystemInfo() { // @Success 200 {string} local latest version hash of casdoor // @router /get-release [get] func (c *ApiController) GitRepoVersion() { - commit, version, err := util.GetGitRepoVersion() + aheadCnt, commit, version, err := util.GetGitRepoVersion() if err != nil { c.ResponseError(err.Error()) return } c.Data["json"] = GitRepoInfo{ - Commit: commit, - Version: version, + AheadCnt: aheadCnt, + Commit: commit, + Version: version, } c.ServeJSON() } diff --git a/util/system.go b/util/system.go index 2a902784..9abc301b 100644 --- a/util/system.go +++ b/util/system.go @@ -48,20 +48,20 @@ func GetMemoryUsage() (uint64, uint64, error) { } // get github current commit and repo release version -func GetGitRepoVersion() (string, string, error) { +func GetGitRepoVersion() (int, string, string, error) { _, filename, _, _ := runtime.Caller(0) rootPath := path.Dir(path.Dir(filename)) r, err := git.PlainOpen(rootPath) if err != nil { - return "", "", err + return -1, "", "", err } ref, err := r.Head() if err != nil { - return "", "", err + return -1, "", "", err } tags, err := r.Tags() if err != nil { - return "", "", err + return -1, "", "", err } tagMap := make(map[plumbing.Hash]string) err = tags.ForEach(func(t *plumbing.Reference) error { @@ -74,11 +74,12 @@ func GetGitRepoVersion() (string, string, error) { return nil }) if err != nil { - return "", "", err + return -1, "", "", err } cIter, err := r.Log(&git.LogOptions{From: ref.Hash()}) + aheadCnt := 0 releaseVersion := "" // iterates over the commits err = cIter.ForEach(func(c *object.Commit) error { @@ -88,11 +89,14 @@ func GetGitRepoVersion() (string, string, error) { releaseVersion = tag } } + if releaseVersion == "" { + aheadCnt++ + } return nil }) if err != nil { - return "", "", err + return -1, "", "", err } - return ref.Hash().String(), releaseVersion, nil + return aheadCnt, ref.Hash().String(), releaseVersion, nil } diff --git a/util/sysytem_test.go b/util/sysytem_test.go index 41dfa482..2c206b47 100644 --- a/util/sysytem_test.go +++ b/util/sysytem_test.go @@ -41,15 +41,15 @@ func TestGetMemoryUsage(t *testing.T) { } func TestGetGitRepoVersion(t *testing.T) { - commit, version, err := GetGitRepoVersion() + aheadCnt, commit, version, err := GetGitRepoVersion() assert.Nil(t, err) - t.Log(commit, version) + t.Log(aheadCnt, commit, version) } func TestGetVersion(t *testing.T) { _, filename, _, _ := runtime.Caller(0) - rootPath := path.Dir(path.Dir(filename)) - r, err := git.PlainOpen(rootPath) + root := path.Dir(path.Dir(filename)) + r, err := git.PlainOpen(root) if err != nil { t.Log(err) } @@ -68,9 +68,10 @@ func TestGetVersion(t *testing.T) { return nil }) - testHash := plumbing.NewHash("16b1d0e1f001c1162a263ed50c1a892c947d5783") + testHash := plumbing.NewHash("f8bc87eb4e5ba3256424cf14aafe0549f812f1cf") cIter, err := r.Log(&git.LogOptions{From: testHash}) + aheadCnt := 0 releaseVersion := "" // iterates over the commits err = cIter.ForEach(func(c *object.Commit) error { @@ -80,7 +81,12 @@ func TestGetVersion(t *testing.T) { releaseVersion = tag } } + if releaseVersion == "" { + aheadCnt++ + } return nil }) - assert.Equal(t, "v1.260.0", releaseVersion) + + assert.Equal(t, 3, aheadCnt) + assert.Equal(t, "v1.257.0", releaseVersion) }