Merge pull request #1351 from scm-manager/bugfix/only_template_default_commit_message

fix message templating
This commit is contained in:
René Pfeuffer
2020-09-25 11:04:30 +02:00
committed by GitHub
4 changed files with 32 additions and 6 deletions

View File

@@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Handling of branch with slashes in source view ([#1340](https://github.com/scm-manager/scm-manager/pull/1340))
- Detect not existing paths correctly in Mercurial ([#1343](https://github.com/scm-manager/scm-manager/pull/1343))
- Return correct revisions for tags in hooks for git repositories ([#1344](https://github.com/scm-manager/scm-manager/pull/1344))
- Add option for concrete commit message in merges without templating ([#1351](https://github.com/scm-manager/scm-manager/pull/1351))
## [2.5.0] - 2020-09-10
### Added

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

@@ -21,7 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package sonia.scm.repository.spi;
import com.google.common.base.Strings;
@@ -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());
@@ -90,7 +92,7 @@ abstract class GitMergeStrategy extends AbstractGitCommand.GitCloneWorker<MergeC
Optional<RevCommit> doCommit() {
logger.debug("merged branch {} into {}", branchToMerge, targetBranch);
return doCommit(MessageFormat.format(determineMessageTemplate(), branchToMerge, targetBranch), author, sign);
return doCommit(determineMessage(), author, sign);
}
MergeCommandResult createSuccessResult(String newRevision) {
@@ -105,11 +107,13 @@ abstract class GitMergeStrategy extends AbstractGitCommand.GitCloneWorker<MergeC
return revisionToMerge;
}
private String determineMessageTemplate() {
if (Strings.isNullOrEmpty(messageTemplate)) {
return MERGE_COMMIT_MESSAGE_TEMPLATE;
private String determineMessage() {
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);
}
}