[SCM-1015] Clarify difference between ScmManager and ScmProvider
Konrad Windszus opened SCM-1015 and commented
I was assuming that ScmProvider is the SPI while ScmManager is the (consumer) API. But there are some methods from ScmProvider which are not called from anywhere else (except for test code) like:
untaginforemoteinfo
Are those just missing from ScmManager (and their implementation delegating to the ScmProvider's method in AbstractScmManager) or is there no clear separation between ScmProvider and ScmManager?
At the same time some clarification on differences between ScmRepository and ScmProviderRepository would be helpful.
No further details from SCM-1015
Unfortunately there doesn't seem to be a clear distinction. Most methods from ScmManager are just shortcuts to same named methods of the provider of the given repo, but the provider is directly exposed from ScmManager as well. Also some functionality is crucial for providers but not exposed via ScmManager (for example https://github.com/apache/maven-release/blob/b5d5fb25d0c9363dab1fc519748d2730089e7b0a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java#L161). So probably ScmManager is more high level API while ScmProvider is both low-level API and also acts as SPI.