Fix: Issue with sorting commits after specifying hash.

This commit is contained in:
2021-05-09 20:20:04 +01:00
parent dc22f7c281
commit af71c23260
5 changed files with 69 additions and 26 deletions
+8 -8
View File
@@ -75,14 +75,14 @@ jobs:
- name: Run unit tests - name: Run unit tests
run: | run: |
make test CI_RUN=${CI} make test CI_RUN=${CI}
- name: Codeclimate # - name: Codeclimate
uses: paambaati/codeclimate-action@v2.7.5 # uses: paambaati/codeclimate-action@v2.7.5
with: # with:
coverageCommand: go test -race -coverprofile=cover.out -covermode=atomic -v -bench=. ./... # coverageCommand: go test -race -coverprofile=cover.out -covermode=atomic -v -bench=. ./...
coverageLocations: # coverageLocations:
"${{github.workspace}}/cover.out:gocov" # "${{github.workspace}}/cover.out:gocov"
env: # env:
CC_TEST_REPORTER_ID: ${{ secrets.CODECLIMATE_KEY }} # CC_TEST_REPORTER_ID: ${{ secrets.CODECLIMATE_KEY }}
code_scans: code_scans:
needs: [ prepare ] needs: [ prepare ]
+50 -8
View File
@@ -88,18 +88,30 @@ func checkMatches(content []string, targets []string) bool {
func (s *Setup) CalculateSemver() SemVer { func (s *Setup) CalculateSemver() SemVer {
for _, commit := range s.Commits { for _, commit := range s.Commits {
s.Semver.Patch++ s.Semver.Patch++
if varDebug {
fmt.Println("DEBUG: Incrementing patch (DEFAULT) on ", commit.Message)
}
commitSlice := strings.Split(commit.Message, " ") commitSlice := strings.Split(commit.Message, " ")
matchPatch := checkMatches(commitSlice, s.Wording.Patch) matchPatch := checkMatches(commitSlice, s.Wording.Patch)
matchMinor := checkMatches(commitSlice, s.Wording.Minor) matchMinor := checkMatches(commitSlice, s.Wording.Minor)
matchMajor := checkMatches(commitSlice, s.Wording.Major) matchMajor := checkMatches(commitSlice, s.Wording.Major)
if matchPatch { if matchPatch {
if varDebug {
fmt.Println("DEBUG: Incrementing patch (WORDING) on ", commit.Message)
}
s.Semver.Patch++ s.Semver.Patch++
} }
if matchMinor { if matchMinor {
if varDebug {
fmt.Println("DEBUG: Incrementing minor (WORDING) on ", commit.Message)
}
s.Semver.Minor++ s.Semver.Minor++
s.Semver.Patch = 1 s.Semver.Patch = 1
} }
if matchMajor { if matchMajor {
if varDebug {
fmt.Println("DEBUG: Incrementing major (WORDING) on ", commit.Message)
}
s.Semver.Major++ s.Semver.Major++
s.Semver.Minor = 0 s.Semver.Minor = 0
s.Semver.Patch = 1 s.Semver.Patch = 1
@@ -111,23 +123,44 @@ func (s *Setup) CalculateSemver() SemVer {
func (s *Setup) ListCommits() ([]CommitDetails, error) { func (s *Setup) ListCommits() ([]CommitDetails, error) {
var ref *plumbing.Reference var ref *plumbing.Reference
var err error var err error
if zero.IsZero(s.Force.Commit) {
ref, err = s.RepositoryHandler.Head() // if zero.IsZero(s.Force.Commit) {
} else { ref, err = s.RepositoryHandler.Head()
ref = plumbing.NewHashReference("start_commit", plumbing.NewHash(s.Force.Commit)) // } else {
} // if varDebug {
// fmt.Println("DEBUG: Forced start from commit", s.Force.Commit)
// }
// ref = plumbing.NewHashReference("start_commit", plumbing.NewHash(s.Force.Commit))
// }
if err != nil { if err != nil {
return []CommitDetails{}, err return []CommitDetails{}, err
} }
commitsList, err := s.RepositoryHandler.Log(&git.LogOptions{From: ref.Hash(), Order: git.LogOrderBSF}) commitsList, err := s.RepositoryHandler.Log(&git.LogOptions{From: ref.Hash()})
if err != nil { if err != nil {
return []CommitDetails{}, err return []CommitDetails{}, err
} }
var tmpResults []CommitDetails
commitsList.ForEach(func(c *object.Commit) error { commitsList.ForEach(func(c *object.Commit) error {
s.Commits = append(s.Commits, CommitDetails{Hash: c.Hash.String(), Author: c.Author.String(), Message: c.Message, Timestamp: c.Author.When}) tmpResults = append(tmpResults, CommitDetails{Hash: c.Hash.String(), Author: c.Author.String(), Message: c.Message, Timestamp: c.Author.When})
sort.Slice(s.Commits, func(i, j int) bool { return s.Commits[i].Timestamp.Unix() < s.Commits[j].Timestamp.Unix() }) sort.Slice(tmpResults, func(i, j int) bool { return tmpResults[i].Timestamp.Unix() < tmpResults[j].Timestamp.Unix() })
return nil return nil
}) })
if varDebug {
fmt.Println("\n---COMMITS BEFORE CUT---\n", tmpResults)
}
for commitId, cmt := range tmpResults {
if zero.IsZero(s.Force.Commit) || (!zero.IsZero(s.Force.Commit) && cmt.Hash == s.Force.Commit) {
s.Commits = tmpResults[commitId:]
}
}
if varDebug {
fmt.Println("\n---COMMITS AFTER CUT---\n", s.Commits)
}
return s.Commits, err return s.Commits, err
} }
@@ -159,12 +192,21 @@ func (s *Setup) Prepare() error {
func (s *Setup) ForcedVersioning() { func (s *Setup) ForcedVersioning() {
if !zero.IsZero(s.Force.Major) { if !zero.IsZero(s.Force.Major) {
if varDebug {
fmt.Println("DEBUG: Forced versioning (MAJOR)", s.Force.Major)
}
s.Semver.Major = s.Force.Major s.Semver.Major = s.Force.Major
} }
if !zero.IsZero(s.Force.Minor) { if !zero.IsZero(s.Force.Minor) {
if varDebug {
fmt.Println("DEBUG: Forced versioning (MINOR)", s.Force.Minor)
}
s.Semver.Minor = s.Force.Minor s.Semver.Minor = s.Force.Minor
} }
if !zero.IsZero(s.Force.Patch) { if !zero.IsZero(s.Force.Patch) {
if varDebug {
fmt.Println("DEBUG: Forced versioning (PATCH)", s.Force.Patch)
}
s.Semver.Patch = s.Force.Patch s.Semver.Patch = s.Force.Patch
} }
} }
+7 -7
View File
@@ -290,7 +290,7 @@ func (suite *Tests) TestSetup_ListCommits() {
fields: fields{ fields: fields{
RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client", RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client",
Force: Force{ Force: Force{
Commit: "69fbe2df696f40281b9104ff073d26186cde1024", Commit: "97d3682ed94168600926f9ff6da650403d1f3317",
}, },
}, },
noCommits: false, noCommits: false,
@@ -336,8 +336,8 @@ func (suite *Tests) TestSetup_CalculateSemver() {
RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client", RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client",
}, },
wantSemver: wantSemver{ wantSemver: wantSemver{
Major: 5, Major: 1,
Minor: 1, Minor: 2,
Patch: 1, Patch: 1,
}, },
}, },
@@ -346,13 +346,13 @@ func (suite *Tests) TestSetup_CalculateSemver() {
fields: fields{ fields: fields{
RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client", RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client",
Force: Force{ Force: Force{
Commit: "69fbe2df696f40281b9104ff073d26186cde1024", Commit: "97d3682ed94168600926f9ff6da650403d1f3317",
}, },
}, },
wantSemver: wantSemver{ wantSemver: wantSemver{
Major: 3, Major: 1,
Minor: 0, Minor: 2,
Patch: 5, Patch: 1,
}, },
}, },
{ {
+2
View File
@@ -58,6 +58,7 @@ var (
varRepoName, varLocalCfg string varRepoName, varLocalCfg string
varUseLocal bool varUseLocal bool
varShowVersion bool varShowVersion bool
varDebug bool
) )
func init() { func init() {
@@ -68,5 +69,6 @@ func init() {
rootCmd.PersistentFlags().StringVarP(&varLocalCfg, "config", "c", "config.yaml", "Path to config file") rootCmd.PersistentFlags().StringVarP(&varLocalCfg, "config", "c", "config.yaml", "Path to config file")
rootCmd.PersistentFlags().BoolVarP(&varUseLocal, "local", "l", false, "Use local repository") rootCmd.PersistentFlags().BoolVarP(&varUseLocal, "local", "l", false, "Use local repository")
rootCmd.PersistentFlags().BoolVarP(&varShowVersion, "version", "v", false, "Display version") rootCmd.PersistentFlags().BoolVarP(&varShowVersion, "version", "v", false, "Display version")
rootCmd.PersistentFlags().BoolVarP(&varDebug, "debug", "d", false, "Enable debug mode")
} }
} }
+2 -3
View File
@@ -1,7 +1,7 @@
version: 1 version: 1
force: force:
major: 1 major: 1
# commit: 69fbe2df696f40281b9104ff073d26186cde1024 commit: 97d3682ed94168600926f9ff6da650403d1f3317
wording: wording:
patch: patch:
- update - update
@@ -12,5 +12,4 @@ wording:
- change - change
- improve - improve
major: major:
- breaking - breaking
- the # For testing purposes