diff --git a/chglog.go b/chglog.go
index 1a084c8a..5d51af71 100644
--- a/chglog.go
+++ b/chglog.go
@@ -162,7 +162,7 @@ func (gen *Generator) Generate(w io.Writer, query string) error {
return err
}
- if len(versions) == 0 {
+ if len(versions) == 0 && query != "" {
return fmt.Errorf("commits corresponding to \"%s\" was not found", query)
}
@@ -284,7 +284,8 @@ func (gen *Generator) getTags(query string) ([]*Tag, string, error) {
}, tags...)
}
- if len(tags) == 0 {
+ // Error only when you explicitly set a query
+ if len(tags) == 0 && query != "" {
return nil, "", errors.New("git-tag does not exist")
}
diff --git a/chglog_test.go b/chglog_test.go
index a00359bb..a70ab050 100644
--- a/chglog_test.go
+++ b/chglog_test.go
@@ -70,7 +70,7 @@ func cleanup() {
func TestGeneratorNotFoundTags(t *testing.T) {
assert := assert.New(t)
- testName := "not_found"
+ testName := "no_tags"
setup(testName, func(commit commitFunc, _ tagFunc, _ gitcmd.Client) {
commit("2018-01-01 00:00:00", "feat(*): New feature", "")
@@ -91,9 +91,8 @@ func TestGeneratorNotFoundTags(t *testing.T) {
err := gen.Generate(buf, "")
expected := strings.TrimSpace(buf.String())
- assert.Error(err)
- assert.Contains(err.Error(), "git-tag does not exist")
- assert.Equal("", expected)
+ assert.Nil(err)
+ assert.Contains(expected, "\n## [Unreleased]")
}
func TestGeneratorNotFoundCommits(t *testing.T) {
diff --git a/cmd/git-chglog/kac_template_builder.go b/cmd/git-chglog/kac_template_builder.go
index e0956d2f..edf72edf 100644
--- a/cmd/git-chglog/kac_template_builder.go
+++ b/cmd/git-chglog/kac_template_builder.go
@@ -57,7 +57,7 @@ func (t *kacTemplateBuilderImpl) unreleased(style, format string) string {
title = fmt.Sprintf("[%s]", title)
}
- return fmt.Sprintf(`{{ if .Versions -}}
+ return fmt.Sprintf(`{{ if .Unreleased -}}
%s## %s
{{ if .Unreleased.CommitGroups -}}
@@ -156,24 +156,28 @@ func (*kacTemplateBuilderImpl) footer(style string) string {
case styleGitHub, styleGitLab:
return `
-{{- if .Versions }}
-[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
+{{- if .Unreleased }}
+{{ $latest := index .Unreleased.Commits 0 }}
+{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }}
+[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD
+{{ end -}}
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
-{{ end -}}
{{ end -}}`
case styleBitbucket:
return `
-{{- if .Versions }}
-[Unreleased]: {{ .Info.RepositoryURL }}/compare/HEAD..{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}
+{{- if .Unreleased }}
+{{ $latest := index .Unreleased.Commits 0 }}
+{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }}
+[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD
+{{ end -}}
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Name }}..{{ .Tag.Previous.Name }}
{{ end -}}
-{{ end -}}
{{ end -}}`
default:
return ""
diff --git a/cmd/git-chglog/kac_template_builder_test.go b/cmd/git-chglog/kac_template_builder_test.go
index 70170aac..62cb5e22 100644
--- a/cmd/git-chglog/kac_template_builder_test.go
+++ b/cmd/git-chglog/kac_template_builder_test.go
@@ -19,7 +19,7 @@ func TestKACTemplateBuilderDefault(t *testing.T) {
})
assert.Nil(err)
- assert.Equal(`{{ if .Versions -}}
+ assert.Equal(`{{ if .Unreleased -}}
## [Unreleased]
@@ -67,13 +67,15 @@ func TestKACTemplateBuilderDefault(t *testing.T) {
{{ end -}}
{{ end -}}
-{{- if .Versions }}
-[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
+{{- if .Unreleased }}
+{{ $latest := index .Unreleased.Commits 0 }}
+{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }}
+[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD
+{{ end -}}
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
-{{ end -}}
{{ end -}}`, out)
}
@@ -90,7 +92,7 @@ func TestKACTemplateBuilderNone(t *testing.T) {
})
assert.Nil(err)
- assert.Equal(`{{ if .Versions -}}
+ assert.Equal(`{{ if .Unreleased -}}
## Unreleased
{{ if .Unreleased.CommitGroups -}}
@@ -150,7 +152,7 @@ func TestKACTemplateBuilderSubject(t *testing.T) {
})
assert.Nil(err)
- assert.Equal(`{{ if .Versions -}}
+ assert.Equal(`{{ if .Unreleased -}}
## Unreleased
{{ if .Unreleased.CommitGroups -}}
diff --git a/testdata/no_tags.md b/testdata/no_tags.md
new file mode 100644
index 00000000..081bc7bd
--- /dev/null
+++ b/testdata/no_tags.md
@@ -0,0 +1,51 @@
+{{ if .Unreleased -}}
+
+## [Unreleased]
+
+{{ if .Unreleased.CommitGroups -}}
+{{ range .Unreleased.CommitGroups -}}
+### {{ .Title }}
+{{ range .Commits -}}
+- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
+{{ end }}
+{{ end -}}
+{{ end -}}
+{{ end -}}
+
+{{ range .Versions }}
+
+## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
+{{ range .CommitGroups -}}
+### {{ .Title }}
+{{ range .Commits -}}
+- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
+{{ end }}
+{{ end -}}
+
+{{- if .RevertCommits -}}
+### Reverts
+{{ range .RevertCommits -}}
+- {{ .Revert.Header }}
+{{ end }}
+{{ end -}}
+
+{{- if .NoteGroups -}}
+{{ range .NoteGroups -}}
+### {{ .Title }}
+{{ range .Notes }}
+{{ .Body }}
+{{ end }}
+{{ end -}}
+{{ end -}}
+{{ end -}}
+
+{{- if .Unreleased }}
+{{ $latest := index .Unreleased.Commits 0 }}
+{{ if .Unreleased.CommitGroups }}{{ $latest = index .Unreleased.CommitGroups 0 }}{{ end }}
+[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest.Hash }}...HEAD
+{{ end -}}
+{{ range .Versions -}}
+{{ if .Tag.Previous -}}
+[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
+{{ end -}}
+{{ end -}}
\ No newline at end of file