1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-17 20:47:50 +02:00

Merge pull request #208 from goreleaser/log

fixed first release log
This commit is contained in:
Carlos Alexandro Becker 2017-04-23 22:40:26 -03:00 committed by GitHub
commit 744e7ec465
2 changed files with 48 additions and 5 deletions

View File

@ -93,11 +93,20 @@ func getChangelog(tag string) (string, error) {
if err != nil {
return "", err
}
return git("log", "--pretty=oneline", "--abbrev-commit", prev+".."+tag)
if !prev.Tag {
return gitLog(prev.SHA, tag)
}
return gitLog(fmt.Sprintf("%v..%v", prev.SHA, tag))
}
func gitLog(refs ...string) (string, error) {
var args = []string{"log", "--pretty=oneline", "--abbrev-commit"}
args = append(args, refs...)
return git(args...)
}
func getInfo() (tag, commit string, err error) {
tag, err = cleanGit("describe", "--tags", "--abbrev=0", "--always")
tag, err = cleanGit("describe", "--tags", "--abbrev=0")
if err != nil {
return
}
@ -105,10 +114,17 @@ func getInfo() (tag, commit string, err error) {
return
}
func previous(tag string) (previous string, err error) {
previous, err = cleanGit("describe", "--tags", "--abbrev=0", "--always", tag+"^")
func previous(tag string) (result ref, err error) {
result.Tag = true
result.SHA, err = cleanGit("describe", "--tags", "--abbrev=0", tag+"^")
if err != nil {
previous, err = cleanGit("rev-list", "--max-parents=0", "HEAD")
result.Tag = false
result.SHA, err = cleanGit("rev-list", "--max-parents=0", "HEAD")
}
return
}
type ref struct {
Tag bool
SHA string
}

View File

@ -150,10 +150,37 @@ func TestChangelog(t *testing.T) {
assert.NoError(Pipe{}.Run(ctx))
assert.Equal("v0.0.2", ctx.Git.CurrentTag)
assert.Contains(ctx.ReleaseNotes, "## Changelog")
assert.NotContains(ctx.ReleaseNotes, "first")
assert.Contains(ctx.ReleaseNotes, "added feature 1")
assert.Contains(ctx.ReleaseNotes, "fixed bug 2")
}
func TestChangelogOfFirstRelease(t *testing.T) {
var assert = assert.New(t)
_, back := createAndChdir(t)
defer back()
gitInit(t)
var msgs = []string{
"initial commit",
"another one",
"one more",
"and finally this one",
}
for _, msg := range msgs {
gitCommit(t, msg)
}
gitTag(t, "v0.0.1")
var ctx = &context.Context{
Config: config.Project{},
}
assert.NoError(Pipe{}.Run(ctx))
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
assert.Contains(ctx.ReleaseNotes, "## Changelog")
for _, msg := range msgs {
assert.Contains(ctx.ReleaseNotes, msg)
}
}
func TestCustomReleaseNotes(t *testing.T) {
var assert = assert.New(t)
_, back := createAndChdir(t)