Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Duplicate
-
Affects Version/s: 1.4
-
Fix Version/s: None
-
Component/s: maven-scm-provider-mercurial (hg)
-
Labels:None
-
Environment:Apache Maven 3.0 (r1004208; 2010-10-04 13:50:56+0200)
Java version: 1.6.0_20
-
Complexity:Intermediate
-
Number of attachments :
Description
AFAIK, Mercurial allows for URLs like ssh://example.org//home/sewe/example-project/. Unfortunately, the Mercurial SCM provider turns this into hg push ssh://example.org/home/sewe/example-project/, which fails if, e.g., the Mercurial server is configured to look for repositories in the user's home directory (may or may not be /home/sewe, depending on your login) unless an absolute path is explicitly requested by using a path starting with a double slash.
Issue Links
- duplicates
-
MNG-4966
Preserve double slashes in the scm connection url - identifies absolute repository paths for mercurial
-
The bug is in the DefaultUrlNormalizer class in the module maven-model-builder, that is a part of maven-core, not maven-scm-plugin or the scm hg provider.
The DefaultUrlNormalizer does the following to the element scm/connection:
result = result.replaceAll( "(?<![:/])/+", "/" );
Which removes any double slash after the hostname part of a url.
The normalization occurs when the release plugin doesn't find a ScmSourceUrl in the plugin descriptor. Instead MavenProject.getScm().getConnection() is used to retrieve a scm url. When that method returns the scm connection url is "normalized" and that all so important double slash is removed.
See discussion here: http://news.gmane.org/gmane.comp.jakarta.turbine.maven.devel/98099