public static String resolveUrl()

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);
    }