JavierSegoviaCordoba / semver-gradle-plugin

Set projects versions based on git tags and following semantic versioning
https://semver-gradle-plugin.javiersc.com
Other
25 stars 3 forks source link

jgit throws NPE if the repo is uninitialized or there are no tags #18

Closed peterfigure closed 2 years ago

peterfigure commented 2 years ago

a friendly/helpful error message might be a better UX

JavierSegoviaCordoba commented 2 years ago

Fixed in https://github.com/JavierSegoviaCordoba/semver-gradle-plugin/commit/ba8172996ce97363b5b8cacdfe85e5f1a4acbc15

I can't reproduce the crash if there are no tags, feels free to reopen and/or provide more information or a repro project if it keeps crashing for you.

peterfigure commented 2 years ago

saw this again, this is on a new source tree that only had git init ran.

Caused by: java.lang.NullPointerException
        at org.eclipse.jgit.internal.storage.file.UnpackedObjectCache$Table.index(UnpackedObjectCache.java:115)
        at org.eclipse.jgit.internal.storage.file.UnpackedObjectCache$Table.contains(UnpackedObjectCache.java:76)
        at org.eclipse.jgit.internal.storage.file.UnpackedObjectCache.isUnpacked(UnpackedObjectCache.java:31)
        at org.eclipse.jgit.internal.storage.file.LooseObjects.hasCached(LooseObjects.java:90)
        at org.eclipse.jgit.internal.storage.file.ObjectDirectory.openObjectWithoutRestoring(ObjectDirectory.java:339)
        at org.eclipse.jgit.internal.storage.file.ObjectDirectory.openObject(ObjectDirectory.java:330)
        at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:132)
        at org.eclipse.jgit.lib.ObjectReader.open(ObjectReader.java:212)
        at org.eclipse.jgit.revwalk.RevWalk.parseAny(RevWalk.java:1075)
        at org.eclipse.jgit.revwalk.RevWalk.parseCommit(RevWalk.java:985)
        at com.javiersc.semver.gradle.plugin.internal.GitRefGitExtensionsKt.getHeadRevCommit(GitRefGitExtensions.kt:33)
        at com.javiersc.semver.gradle.plugin.internal.GitRefGitExtensionsKt.getHeadCommit(GitRefGitExtensions.kt:26)
        at com.javiersc.semver.gradle.plugin.internal.GitRefGitExtensionsKt.lastVersionInCurrentBranch(GitRefGitExtensions.kt:183)
        at com.javiersc.semver.gradle.plugin.internal.CalculatedVersionKt.calculatedVersion(CalculatedVersion.kt:19)
        at com.javiersc.semver.gradle.plugin.SemVerPluginKt.getCalculatedVersion(SemVerPlugin.kt:70)
        at com.javiersc.semver.gradle.plugin.SemVerPluginKt.checkVersionIsHigherOrSame(SemVerPlugin.kt:61)
        at com.javiersc.semver.gradle.plugin.SemVerPluginKt.access$checkVersionIsHigherOrSame(SemVerPlugin.kt:1)
        at com.javiersc.semver.gradle.plugin.SemVerPlugin.apply(SemVerPlugin.kt:32)
        at com.javiersc.semver.gradle.plugin.SemVerPlugin.apply(SemVerPlugin.kt:24)
        at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:43)
        at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:51)
        at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:187)
        at org.gradle.api.internal.plugins.DefaultPluginManager.access$100(DefaultPluginManager.java:52)
        at org.gradle.api.internal.plugins.DefaultPluginManager$AddPluginBuildOperation.run(DefaultPluginManager.java:282)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
        at org.gradle.api.internal.plugins.DefaultPluginManager.lambda$doApply$0(DefaultPluginManager.java:167)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
        at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:166)
JavierSegoviaCordoba commented 2 years ago

Can you share a repro? I can't reproduce it in a project without tags.

peterfigure commented 2 years ago

these steps works for me 100% repeatable to create a NPE:

JavierSegoviaCordoba commented 2 years ago

maybe the problem is it hasn't commits?

JavierSegoviaCordoba commented 2 years ago

Fixed in https://github.com/JavierSegoviaCordoba/semver-gradle-plugin/commit/8270030bcadda2a70507da9aca7b99588559aba8

semver plugin can't work if the project has no commits