theonedev/onedev · error · NotAcceptableException

Invalid merge strategy:

Error message

Invalid merge strategy: 

What it means

The merge-strategy lookup in TodResource only accepts the named strategies supported by the project's pull request settings; an unrecognized strategy string is rejected. The message carries the given name.

Source

Thrown at server-core/src/main/java/io/onedev/server/ai/TodResource.java:1094

        var pullRequest = getPullRequest(currentProject, pullRequestReference);

        var oldCommitId = ObjectId.fromString(pullRequest.getBaseCommitHash());
        var newCommitId = ObjectId.fromString(pullRequest.getLatestUpdate().getHeadCommitHash());
        var comparisonBase = pullRequestService.getComparisonBase(pullRequest, oldCommitId, newCommitId);

        var patchInfo = new HashMap<String, String>();
        patchInfo.put("projectId", pullRequest.getProject().getId().toString());
        patchInfo.put("oldCommitHash", comparisonBase.name());
        patchInfo.put("newCommitHash", newCommitId.name());        
        return patchInfo;
    }

    private MergeStrategy getMergeStrategy(Project project, @Nullable String mergeStrategyName) {
        if (mergeStrategyName != null) {
            try {
                return MergeStrategy.valueOf(mergeStrategyName);
            } catch (IllegalArgumentException e) {
                throw new NotAcceptableException("Invalid merge strategy: " + mergeStrategyName);
            }
        } else {
            return project.findDefaultPullRequestMergeStrategy();
        }
    }

    @Path("/create-pull-request")
    @POST
    public Map<String, Object> createPullRequest(
                @QueryParam("currentProject") @NotNull String currentProjectPath, 
                @QueryParam("targetProject") String targetProjectPath,
                @QueryParam("sourceProject") String sourceProjectPath,
                @NotNull Map<String, Serializable> data) {
        normalizePullRequestData(data);

        var targetBranch = (String) data.remove("targetBranch");

        var sourceBranch = (String) data.remove("sourceBranch");

View on GitHub (pinned to d44925c47c)

Solutions

  1. Use one of the valid merge strategy names (merge commit, squash merge, rebase merge, or fast-forward if allowed).
  2. Omit the strategy to use the project's default.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server-core/src/main/java/io/onedev/server/ai/TodResource.java:1094 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06). Data as JSON: /api/errors/a264fff00fe9c796. Report an issue: GitHub.