Skip to content
Snippets Groups Projects
Commit e5d117b9 authored by Christoph Witzko's avatar Christoph Witzko
Browse files

fix(create-release): try to resolve branch name if invalid sha is provided

fixes #4
parent 43a4b02b
No related branches found
No related tags found
No related merge requests found
......@@ -164,8 +164,17 @@ func (repo *Repository) GetReleases(rawRe string) ([]*semrel.Release, error) {
}
func (repo *Repository) CreateRelease(release *provider.CreateReleaseConfig) error {
hash := plumbing.NewHash(release.SHA)
if hash.IsZero() {
// hash is not valid, let's assume it is a branch name
resolvedRef, err := repo.repo.Reference(plumbing.NewBranchReferenceName(release.SHA), true)
if err != nil {
return err
}
hash = resolvedRef.Hash()
}
tag := fmt.Sprintf("v%s", release.NewVersion)
_, err := repo.repo.CreateTag(tag, plumbing.NewHash(release.SHA), &git.CreateTagOptions{
_, err := repo.repo.CreateTag(tag, hash, &git.CreateTagOptions{
Message: release.Changelog,
Tagger: &object.Signature{
Name: repo.taggerName,
......
......@@ -181,20 +181,37 @@ func createRelease(t *testing.T) {
head, err := gRepo.Head()
require.NoError(err)
testCases := []struct {
version, sha, changelog string
}{
{
version: "2.0.0",
sha: head.Hash().String(),
changelog: "new feature",
},
{
version: "3.0.0",
sha: "master",
changelog: "breaking change",
},
}
for _, testCase := range testCases {
err = repo.CreateRelease(&provider.CreateReleaseConfig{
NewVersion: "2.0.0",
SHA: head.Hash().String(),
Changelog: "new feature",
NewVersion: testCase.version,
SHA: testCase.sha,
Changelog: testCase.changelog,
})
require.NoError(err)
tagRef, err := gRepo.Tag("v2.0.0")
tagRef, err := gRepo.Tag("v" + testCase.version)
require.NoError(err)
tagObj, err := gRepo.TagObject(tagRef.Hash())
require.NoError(err)
require.Equal("new feature\n", tagObj.Message)
require.Equal(testCase.changelog+"\n", tagObj.Message)
}
}
func getReleases(t *testing.T) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment