fix(autoversion): filter tags in other branches
All checks were successful
ci/woodpecker/push/pages Pipeline was successful
ci/woodpecker/push/gradle Pipeline was successful

This commit is contained in:
Johannes Frohnmeyer 2024-10-15 16:21:30 +02:00
parent 04f130951e
commit 4b7a5ac5e9
Signed by: Johannes
GPG Key ID: E76429612C2929F4

View File

@ -37,6 +37,7 @@ fun Git.log(since: AnyObjectId? = null, until: AnyObjectId? = null): List<Commit
fun Git.getTags(): List<Tag> = repository.refDatabase.getRefsByPrefix(Constants.R_TAGS)
.map { it.resolveTag(repository) }
.filter { it.checkInTree(repository) }
.sortedByDescending { it.dateTime }
fun Ref.resolveTag(repo: Repository): Tag = RevWalk(repo).use { walk ->
@ -55,6 +56,10 @@ fun Ref.resolveTag(repo: Repository): Tag = RevWalk(repo).use { walk ->
return rev.resolve((target as RevCommit).resolve(repo))
}
fun Tag.checkInTree(repo: Repository): Boolean = RevWalk(repo).use { walk ->
walk.isMergedInto(walk.parseCommit(commit.id), walk.parseCommit(repo.resolve("HEAD")))
}
fun RevTag.resolve(commit: Commit): Tag {
val ident = taggerIdent
return Tag(