Commit 47ad178
Changed files (2)
internal
generator
git
internal/generator/compare.go
@@ -24,6 +24,8 @@ func GenerateComparePages(tags []git.Tag, branches []git.Ref, params Params) err
return err
}
+ tags = filterValidTags(tags, params.RepoDir)
+
if len(tags) > 0 {
latestTag := tags[0].Name
if err := generateComparePage(latestTag, "HEAD", params); err != nil {
@@ -197,3 +199,13 @@ func generateComparePage(base, head string, params Params) error {
}
return f.Close()
}
+
+func filterValidTags(tags []git.Tag, repoDir string) []git.Tag {
+ valid := make([]git.Tag, 0, len(tags))
+ for _, tag := range tags {
+ if git.RefExists(tag.Name, repoDir) {
+ valid = append(valid, tag)
+ }
+ }
+ return valid
+}
internal/git/git.go
@@ -26,6 +26,11 @@ func gitCmd(repoDir string, args ...string) ([]byte, error) {
return out, nil
}
+func RefExists(ref, repoDir string) bool {
+ _, err := gitCmd(repoDir, "rev-parse", "--verify", "--quiet", ref)
+ return err == nil
+}
+
func Branches(repoDir string) ([]Ref, error) {
out, err := gitCmd(repoDir, "for-each-ref", "--format=%(refname:short)", "refs/heads/")
if err != nil {