in maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java [109:218]
private boolean translateScm(
MavenProject project,
ReleaseDescriptor releaseDescriptor,
Scm scmTarget,
ScmRepository scmRepository,
ReleaseResult relResult)
throws IOException {
ScmTranslator translator = getScmTranslators().get(scmRepository.getProvider());
boolean result = false;
if (translator != null) {
Scm scm = project.getOriginalModel().getScm();
if (scm == null) {
scm = project.getScm();
}
String branchName = releaseDescriptor.getScmReleaseLabel();
String branchBase = releaseDescriptor.getScmBranchBase();
// TODO: svn utils should take care of prepending this
if (branchBase != null) {
branchBase = "scm:svn:" + branchBase;
}
Path projectBasedir = project.getBasedir().toPath().toRealPath(LinkOption.NOFOLLOW_LINKS);
Path workingDirectory = Paths.get(releaseDescriptor.getWorkingDirectory());
int count = ReleaseUtil.getBaseWorkingDirectoryParentCount(workingDirectory, projectBasedir);
if (scm.getConnection() != null) {
String rootUrl = ReleaseUtil.realignScmUrl(count, scm.getConnection());
String subDirectoryBranch = scm.getConnection().substring(rootUrl.length());
if (!subDirectoryBranch.startsWith("/")) {
subDirectoryBranch = "/" + subDirectoryBranch;
}
String scmConnectionBranch = branchBase;
if (scmConnectionBranch != null) {
String trunkUrl = scm.getDeveloperConnection();
if (trunkUrl == null) {
trunkUrl = scm.getConnection();
}
scmConnectionBranch = translateUrlPath(trunkUrl, branchBase, scm.getConnection());
}
String value = translator.translateBranchUrl(
scm.getConnection(), branchName + subDirectoryBranch, scmConnectionBranch);
if (!value.equals(scm.getConnection())) {
scmTarget.setConnection(value);
result = true;
}
}
if (scm.getDeveloperConnection() != null) {
String rootUrl = ReleaseUtil.realignScmUrl(count, scm.getDeveloperConnection());
String subDirectoryBranch = scm.getDeveloperConnection().substring(rootUrl.length());
if (!subDirectoryBranch.startsWith("/")) {
subDirectoryBranch = "/" + subDirectoryBranch;
}
String value = translator.translateBranchUrl(
scm.getDeveloperConnection(), branchName + subDirectoryBranch, branchBase);
if (!value.equals(scm.getDeveloperConnection())) {
scmTarget.setDeveloperConnection(value);
result = true;
}
}
if (scm.getUrl() != null) {
String rootUrl = ReleaseUtil.realignScmUrl(count, scm.getUrl());
String subDirectoryBranch = scm.getUrl().substring(rootUrl.length());
if (!subDirectoryBranch.startsWith("/")) {
subDirectoryBranch = "/" + subDirectoryBranch;
}
String tagScmUrl = branchBase;
if (tagScmUrl != null) {
String trunkUrl = scm.getDeveloperConnection();
if (trunkUrl == null) {
trunkUrl = scm.getConnection();
}
tagScmUrl = translateUrlPath(trunkUrl, branchBase, scm.getUrl());
}
// use original branch base without protocol
String value = translator.translateBranchUrl(scm.getUrl(), branchName + subDirectoryBranch, tagScmUrl);
if (!value.equals(scm.getUrl())) {
scmTarget.setUrl(value);
result = true;
}
}
if (branchName != null) {
String value = translator.resolveTag(branchName);
if (value != null && !value.equals(scm.getTag())) {
scmTarget.setTag(value);
result = true;
}
}
} else {
String message = "No SCM translator found - skipping rewrite";
relResult.appendDebug(message);
getLogger().debug(message);
}
return result;
}