Hello
I've been looking at improving the way certain plugins (scm, release, etc) 
lookup credentials from a <server> in settings.xml in order to find the 
credentials to use for a given endpoint.
The current method - largely undocumented - is that the hostname from 
endpoint's URL must match the server id from settings.xml. There's optional 
support for port number as well in the case where e.g. multiple SCMs are 
running the on same endpoint. The actual code to do the matching between the 
server-id and the URL is scattered - and worse - replicated in several 
projects. For example it exists in the scm plugin but also in the release 
plugin.
There are a number of use case that are currently unsupported:
1. Running several *different* flavours of SCMs on the same host. Say you have 
a host called "repohost" which is both an SVN and a Git host. Ok, not very 
likely, but alas not something possible today.
2. Using different credentials *within* the same SCM endpoint. Now this is much 
worse. Just think of sites like GitHub and Bitbucket. It is certainly not 
uncommon for the same developer to have several identities on those sites.

There are probably more cases out there that won't work today.
I was about to contribute some code that could fix the problem by allowing to 
match to a server-id on many more elements of the URL than just hostname and 
port but would require changes to all SCM providers as they would have to 
implement at least one new method. 

However, it now dawns on me that by far the best solution would be to allow a 
new optional element in the <scm> section of the POM, namely <serverId>. If 
present this will then be used to match a server-id from settings.xml. If not 
present the existing matching method (based on hostname and optionally the 
port) would prevail. This would be a much cleaner approach than allowing to 
match on elements of the URL ... and also a lot easier to explain to the Maven 
user. I can see from source code comments that certainly this thought has 
existed in the mind of some developer years ago but for some reason never 
carried out.
Any comments on this?  Would you support the idea of a new optional element, 
<serverId>, within the <scm> section ?

Cheers
Peter

Reply via email to