chore: Remove auto merge user field

This commit is contained in:
Robin Shen 2025-09-05 08:35:39 +08:00
parent 78b31191cc
commit 3f024b687b
8 changed files with 27 additions and 38 deletions

View File

@ -1713,7 +1713,6 @@ public class McpHelperResource {
var autoMerge = new AutoMerge(); var autoMerge = new AutoMerge();
autoMerge.setEnabled(autoMergeEnabled); autoMerge.setEnabled(autoMergeEnabled);
autoMerge.setCommitMessage(StringUtils.trimToNull((String) data.remove("autoMergeCommitMessage"))); autoMerge.setCommitMessage(StringUtils.trimToNull((String) data.remove("autoMergeCommitMessage")));
autoMerge.setUser(user);
var errorMessage = request.checkMergeCommitMessage(user, autoMerge.getCommitMessage()); var errorMessage = request.checkMergeCommitMessage(user, autoMerge.getCommitMessage());
if (errorMessage != null) if (errorMessage != null)
throw new NotAcceptableException("Error validating param auto merge commit message: " + errorMessage); throw new NotAcceptableException("Error validating param auto merge commit message: " + errorMessage);

View File

@ -8193,6 +8193,14 @@ public class DataMigrator {
for (Element element : dom.getRootElement().elements()) { for (Element element : dom.getRootElement().elements()) {
groupIds.put(element.elementText("name").trim(), element.elementText("id").trim()); groupIds.put(element.elementText("name").trim(), element.elementText("id").trim());
} }
} else if (file.getName().startsWith("PullRequests.xml")) {
VersionedXmlDoc dom = VersionedXmlDoc.fromFile(file);
for (Element element : dom.getRootElement().elements()) {
var autoMergeUserElement = element.element("autoMerge").element("user");
if (autoMergeUserElement != null)
autoMergeUserElement.detach();
}
dom.writeToFile(file, false);
} }
} }

View File

@ -502,10 +502,7 @@ public class DefaultPullRequestManager extends BaseEntityManager<PullRequest>
if (request.isOpen()) { if (request.isOpen()) {
var autoMerge = request.getAutoMerge(); var autoMerge = request.getAutoMerge();
if (autoMerge.isEnabled() && request.checkMergeCondition() == null) { if (autoMerge.isEnabled() && request.checkMergeCondition() == null) {
if (autoMerge.getUser() != null) merge(userManager.getSystem(), request, autoMerge.getCommitMessage());
merge(autoMerge.getUser(), request, autoMerge.getCommitMessage());
else
throw new ExplicitException("Auto merge user not specified");
} }
} }
} }

View File

@ -1308,7 +1308,8 @@ public class PullRequest extends ProjectBelonging
getBaseCommit().copy(), getLatestUpdate().getHeadCommit().copy(), new HashMap<>()); getBaseCommit().copy(), getLatestUpdate().getHeadCommit().copy(), new HashMap<>());
} }
if (error == null && autoMerge.isEnabled()) { if (error == null && autoMerge.isEnabled()) {
var errorMessage = checkMergeCommitMessage(autoMerge.getUser(), autoMerge.getCommitMessage()); var system = OneDev.getInstance(UserManager.class).getSystem();
var errorMessage = checkMergeCommitMessage(system, autoMerge.getCommitMessage());
if (errorMessage != null) if (errorMessage != null)
error = new CommitMessageError(null, errorMessage); error = new CommitMessageError(null, errorMessage);
} }

View File

@ -1,11 +1,12 @@
package io.onedev.server.model.support.pullrequest; package io.onedev.server.model.support.pullrequest;
import io.onedev.server.model.User; import java.io.Serializable;
import org.hibernate.annotations.OptimisticLock;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.persistence.*; import javax.persistence.Column;
import java.io.Serializable; import javax.persistence.Embeddable;
import org.hibernate.annotations.OptimisticLock;
@Embeddable @Embeddable
public class AutoMerge implements Serializable { public class AutoMerge implements Serializable {
@ -13,20 +14,13 @@ public class AutoMerge implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final String COLUMN_ENABLED = "AUTO_MERGE_ENABLED"; public static final String COLUMN_ENABLED = "AUTO_MERGE_ENABLED";
public static final String COLUMN_USER = "AUTO_MERGE_USER";
public static final String COLUMN_COMMIT_MESSAGE = "AUTO_MERGE_COMMIT_MESSAGE"; public static final String COLUMN_COMMIT_MESSAGE = "AUTO_MERGE_COMMIT_MESSAGE";
@Column(name=COLUMN_ENABLED, nullable = false) @Column(name=COLUMN_ENABLED, nullable = false)
@OptimisticLock(excluded=true) @OptimisticLock(excluded=true)
private boolean enabled; private boolean enabled;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name=COLUMN_USER)
@OptimisticLock(excluded=true)
private User user;
@Column(length=1048576, name=COLUMN_COMMIT_MESSAGE) @Column(length=1048576, name=COLUMN_COMMIT_MESSAGE)
@OptimisticLock(excluded=true) @OptimisticLock(excluded=true)
private String commitMessage; private String commitMessage;
@ -39,14 +33,6 @@ public class AutoMerge implements Serializable {
this.enabled = enabled; this.enabled = enabled;
} }
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Nullable @Nullable
public String getCommitMessage() { public String getCommitMessage() {
return commitMessage; return commitMessage;

View File

@ -373,7 +373,6 @@ public class PullRequestResource {
var autoMerge = new AutoMerge(); var autoMerge = new AutoMerge();
autoMerge.setEnabled(data.isEnabled()); autoMerge.setEnabled(data.isEnabled());
autoMerge.setCommitMessage(data.getCommitMessage()); autoMerge.setCommitMessage(data.getCommitMessage());
autoMerge.setUser(user);
var errorMessage = request.checkMergeCommitMessage(user, autoMerge.getCommitMessage()); var errorMessage = request.checkMergeCommitMessage(user, autoMerge.getCommitMessage());
if (errorMessage != null) if (errorMessage != null)
throw new NotAcceptableException("Error validating auto merge commit message: " + errorMessage); throw new NotAcceptableException("Error validating auto merge commit message: " + errorMessage);

View File

@ -78,6 +78,7 @@ import io.onedev.server.entitymanager.PullRequestReactionManager;
import io.onedev.server.entitymanager.PullRequestReviewManager; import io.onedev.server.entitymanager.PullRequestReviewManager;
import io.onedev.server.entitymanager.PullRequestWatchManager; import io.onedev.server.entitymanager.PullRequestWatchManager;
import io.onedev.server.entitymanager.SettingManager; import io.onedev.server.entitymanager.SettingManager;
import io.onedev.server.entitymanager.UserManager;
import io.onedev.server.entityreference.EntityReference; import io.onedev.server.entityreference.EntityReference;
import io.onedev.server.entityreference.LinkTransformer; import io.onedev.server.entityreference.LinkTransformer;
import io.onedev.server.git.GitUtils; import io.onedev.server.git.GitUtils;
@ -1379,8 +1380,7 @@ public abstract class PullRequestDetailPage extends ProjectPage implements PullR
if (request.isMergeCommitMessageRequired()) { if (request.isMergeCommitMessageRequired()) {
tipsContainer = new Fragment("tips", "autoMergeEnabledWithPresetCommitMessageFrag", PullRequestDetailPage.this); tipsContainer = new Fragment("tips", "autoMergeEnabledWithPresetCommitMessageFrag", PullRequestDetailPage.this);
WebMarkupContainer link; WebMarkupContainer link;
if (SecurityUtils.canManagePullRequests(getProject()) if (SecurityUtils.canModifyPullRequest(getPullRequest()) && SecurityUtils.canWriteCode(getProject())) {
|| autoMerge.getUser() != null && autoMerge.getUser().equals(SecurityUtils.getUser())) {
link = new AjaxLink<Void>("commitMessage") { link = new AjaxLink<Void>("commitMessage") {
@Override @Override
@ -1396,7 +1396,8 @@ public abstract class PullRequestDetailPage extends ProjectPage implements PullR
@Override @Override
protected String onSave(AjaxRequestTarget target, CommitMessageBean bean) { protected String onSave(AjaxRequestTarget target, CommitMessageBean bean) {
var request = getPullRequest(); var request = getPullRequest();
var branchProtection = getProject().getBranchProtection(request.getTargetBranch(), autoMerge.getUser()); var system = OneDev.getInstance(UserManager.class).getSystem();
var branchProtection = getProject().getBranchProtection(request.getTargetBranch(), system);
var errorMessage = branchProtection.checkCommitMessage(bean.getCommitMessage(), var errorMessage = branchProtection.checkCommitMessage(bean.getCommitMessage(),
request.getMergeStrategy() != SQUASH_SOURCE_BRANCH_COMMITS); request.getMergeStrategy() != SQUASH_SOURCE_BRANCH_COMMITS);
if (errorMessage != null) { if (errorMessage != null) {
@ -1502,7 +1503,6 @@ public abstract class PullRequestDetailPage extends ProjectPage implements PullR
} else { } else {
var autoMerge = new AutoMerge(); var autoMerge = new AutoMerge();
autoMerge.setEnabled(true); autoMerge.setEnabled(true);
autoMerge.setUser(user);
autoMerge.setCommitMessage(bean.getCommitMessage()); autoMerge.setCommitMessage(bean.getCommitMessage());
getPullRequestChangeManager().changeAutoMerge(getPullRequest(), autoMerge); getPullRequestChangeManager().changeAutoMerge(getPullRequest(), autoMerge);
target.add(autoMergeContainer); target.add(autoMergeContainer);
@ -1523,12 +1523,11 @@ public abstract class PullRequestDetailPage extends ProjectPage implements PullR
} }
}; };
} else { } else {
var autoMerge = new AutoMerge(); var autoMerge = new AutoMerge();
autoMerge.setEnabled(true); autoMerge.setEnabled(true);
autoMerge.setUser(SecurityUtils.getUser()); autoMerge.setCommitMessage(request.getAutoMerge().getCommitMessage());
autoMerge.setCommitMessage(request.getAutoMerge().getCommitMessage()); getPullRequestChangeManager().changeAutoMerge(request, autoMerge);
getPullRequestChangeManager().changeAutoMerge(request, autoMerge); target.add(autoMergeContainer);
target.add(autoMergeContainer);
} }
} else { } else {
var autoMerge = new AutoMerge(); var autoMerge = new AutoMerge();

@ -1 +1 @@
Subproject commit 64ca3d0811a5f1c57090e8d47c720871dd5edb8d Subproject commit 2b7de662ca1fb90d20c0fb506b15f46dffcfe2b2