Introduce the grgit-service plugin #354
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The org.ajoberstar.grgit-service is the new underlying behavior for org.ajoberstar.grgit, building on the work from @runningcode and @abelom in #353.
The service plugin only registers a GrgitService, but leaves it up to plugins (or builds) to grab the service and try to use it.
Alternatively, the existing grgit plugin applies the service plugin and eagerly resolves it to provide the prior grgit extension property.
A breaking change is that any project which wants to access a pre-initialized grgit instance now must apply the grgit plugin. This reduces the amount of cross-project logic going on, which Gradle has discouraged for a while (but can be hard to avoid).
Some plugins may have use cases to register their own GrgitService instances that are used for their own behavior (the gradle-git-publish plugin will take advantage of this once it upgrades to use grgit 5).
All projects using grgit-service plugin will share a Grgit instance, which is also controlled to avoid concurrent access. (That doesn't affect other plugins/builds registering their own GrgitService instances.)
Fixes #322.