Commit 47ad178

mo khan <mo@mokhan.ca>
2026-02-02 06:16:48
fix: compare page generate on bare repos
1 parent 22172c0
Changed files (2)
internal
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 {