in maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/SvnTagBranchUtils.java [178:216]
public static String resolveUrl(String repositoryUrl, String tagBase, String subdir, ScmBranch branchTag) {
String branchTagName = branchTag.getName();
String projectRoot = getProjectRoot(repositoryUrl);
branchTagName = StringUtils.strip(branchTagName, "/");
if (branchTagName == null || branchTagName.isEmpty()) {
return null;
}
// Look for a query string as in ViewSVN urls
String queryString = null;
if (repositoryUrl.indexOf('?') >= 0) {
queryString = repositoryUrl.substring(repositoryUrl.indexOf('?'));
// if repositoryUrl contains a query string, remove it from repositoryUrlRoot; will be re-appended later
projectRoot = StringUtils.replace(projectRoot, queryString, "");
}
if (branchTagName.indexOf("://") >= 0) {
// branch/tag is already an absolute url so just return it.
return branchTagName;
}
// User has a tagBase specified so just return the name appended to the tagBase
if ((tagBase != null && !tagBase.isEmpty())
&& !tagBase.equals(resolveTagBase(repositoryUrl))
&& !tagBase.equals(resolveBranchBase(repositoryUrl))) {
return appendPath(tagBase, branchTagName);
}
// Look for any "branches/" or "tags/" specifiers in the branchTagName. If one occurs,
// don't append the subdir to the projectRoot when appending the name
for (int i = 0; i < SVN_BASE_DIRS.length; i++) {
if (branchTagName.startsWith(SVN_BASE_DIRS[i] + "/")) {
return addSuffix(appendPath(projectRoot, branchTagName), queryString);
}
}
return addSuffix(appendPath(appendPath(projectRoot, subdir), branchTagName), queryString);
}