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; 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. * Use this to reset the command.
* @return This builder instance. * @return This builder instance.

View File

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

View File

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