enhance mergeCommandBuilder API with setMessage to avoid templating commit messages

This commit is contained in:
Eduard Heimbuch
2020-09-25 10:30:45 +02:00
parent f0db57faed
commit a39abcdbe9
3 changed files with 29 additions and 4 deletions

View File

@@ -181,6 +181,18 @@ public class MergeCommandBuilder {
return this;
}
/**
* Use this to set the commit message. If no message is set, the message template will be used.
*
* This is optional and for {@link #executeMerge()} only.
*
* @return This builder instance.
*/
public MergeCommandBuilder setMessage(String message) {
request.setMessage(message);
return this;
}
/**
* Use this to reset the command.
* @return This builder instance.

View File

@@ -42,6 +42,7 @@ public class MergeCommandRequest implements Validateable, Resetable, Serializabl
private String targetBranch;
private Person author;
private String messageTemplate;
private String message;
private MergeStrategy mergeStrategy;
private boolean sign = true;
@@ -77,6 +78,14 @@ public class MergeCommandRequest implements Validateable, Resetable, Serializabl
this.messageTemplate = messageTemplate;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public MergeStrategy getMergeStrategy() {
return mergeStrategy;
}

View File

@@ -56,6 +56,7 @@ abstract class GitMergeStrategy extends AbstractGitCommand.GitCloneWorker<MergeC
private final ObjectId revisionToMerge;
private final Person author;
private final String messageTemplate;
private final String message;
private final boolean sign;
GitMergeStrategy(Git clone, MergeCommandRequest request, GitContext context, sonia.scm.repository.Repository repository) {
@@ -64,6 +65,7 @@ abstract class GitMergeStrategy extends AbstractGitCommand.GitCloneWorker<MergeC
this.branchToMerge = request.getBranchToMerge();
this.author = request.getAuthor();
this.messageTemplate = request.getMessageTemplate();
this.message = request.getMessage();
this.sign = request.isSign();
try {
this.targetRevision = resolveRevision(request.getTargetBranch());
@@ -106,10 +108,12 @@ abstract class GitMergeStrategy extends AbstractGitCommand.GitCloneWorker<MergeC
}
private String determineMessage() {
if (Strings.isNullOrEmpty(messageTemplate)) {
return MessageFormat.format(MERGE_COMMIT_MESSAGE_TEMPLATE, branchToMerge, targetBranch);
if (!Strings.isNullOrEmpty(message)) {
return message;
} else if (!Strings.isNullOrEmpty(messageTemplate)) {
return MessageFormat.format(messageTemplate, branchToMerge, targetBranch);
} else {
return messageTemplate;
return MessageFormat.format(MERGE_COMMIT_MESSAGE_TEMPLATE, branchToMerge, targetBranch);
}
}