use of sonia.scm.repository.api.MergeCommandResult in project scm-review-plugin by scm-manager.
the class MergeService method merge.
public void merge(NamespaceAndName namespaceAndName, String pullRequestId, MergeCommitDto mergeCommitDto, MergeStrategy strategy, boolean emergency) {
try (RepositoryService repositoryService = serviceFactory.create(namespaceAndName)) {
PullRequest pullRequest = pullRequestService.get(repositoryService.getRepository(), pullRequestId);
Collection<MergeObstacle> obstacles = verifyNoObstacles(emergency, repositoryService.getRepository(), pullRequest);
assertPullRequestIsOpen(repositoryService.getRepository(), pullRequest);
internalMergeSwitch.runInternalMerge(() -> {
MergeCommandBuilder mergeCommand = repositoryService.getMergeCommand();
isAllowedToMerge(repositoryService.getRepository(), mergeCommand, strategy, emergency);
prepareMergeCommand(repositoryService, mergeCommand, pullRequest, mergeCommitDto, strategy);
MergeCommandResult mergeCommandResult = mergeCommand.executeMerge();
if (!mergeCommandResult.isSuccess()) {
throw new MergeConflictException(namespaceAndName, pullRequest.getSource(), pullRequest.getTarget(), mergeCommandResult);
}
pullRequestService.setRevisions(repositoryService.getRepository(), pullRequest.getId(), mergeCommandResult.getTargetRevision(), mergeCommandResult.getRevisionToMerge());
if (emergency) {
pullRequestService.setEmergencyMerged(repositoryService.getRepository(), pullRequest.getId(), mergeCommitDto.getOverrideMessage(), getIgnoredMergeObstacles(obstacles));
} else {
pullRequestService.setMerged(repositoryService.getRepository(), pullRequest.getId());
}
if (repositoryService.isSupported(Command.BRANCH) && mergeCommitDto.isShouldDeleteSourceBranch()) {
String deletedSourceBranch = pullRequest.getSource();
Repository repository = repositoryService.getRepository();
repositoryService.getBranchCommand().delete(deletedSourceBranch);
rejectPullRequestsForDeletedBranch(repository, pullRequest, deletedSourceBranch);
}
});
}
}
Aggregations