Option to reject implicit merges when pushing changes for review
An implicit merge is a case where by submitting an open change one also merges a branch into the target branch. Typically, this happens when a change is done on top of master and, by mistake, pushed to stable branch. Merging this change would also implicitly merge master into stable. Example 1: o < change pushed for stable | o < master | o < stable Submitting this change will implicitly merge master into stable: o < change pushed for stable, stable | o < master | o Example 2: o < change pushed for stable | master > o o < stable \ / o Submitting this change will implicitly merge master into stable: o < stable /| / | o < change pushed for stable | | master > o o \ / o A new project property receive.rejectImplicitMerges controls whether an implicit merge will be rejected. When an implicit merge is detected Gerrit will print error(s) to the user: remote: ERROR: Implicit Merge of 39adddb Commit message subject remote: ERROR: Implicit Merge of ... and will reject the push. Bug: issue 1107 Change-Id: I0b14c64bebe28ea5579fc11f6beedacf5982e5aa
This commit is contained in:
@@ -39,7 +39,6 @@ import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public class ConfigInfoImpl extends ConfigInfo {
|
||||
|
||||
public ConfigInfoImpl(boolean serverEnableSignedPush,
|
||||
ProjectControl control,
|
||||
TransferConfig config,
|
||||
@@ -60,6 +59,7 @@ public class ConfigInfoImpl extends ConfigInfo {
|
||||
new InheritedBooleanInfo();
|
||||
InheritedBooleanInfo enableSignedPush = new InheritedBooleanInfo();
|
||||
InheritedBooleanInfo requireSignedPush = new InheritedBooleanInfo();
|
||||
InheritedBooleanInfo rejectImplicitMerges = new InheritedBooleanInfo();
|
||||
|
||||
useContributorAgreements.value = projectState.isUseContributorAgreements();
|
||||
useSignedOffBy.value = projectState.isUseSignedOffBy();
|
||||
@@ -77,6 +77,7 @@ public class ConfigInfoImpl extends ConfigInfo {
|
||||
p.getCreateNewChangeForAllNotInTarget();
|
||||
enableSignedPush.configuredValue = p.getEnableSignedPush();
|
||||
requireSignedPush.configuredValue = p.getRequireSignedPush();
|
||||
rejectImplicitMerges.configuredValue = p.getRejectImplicitMerges();
|
||||
|
||||
ProjectState parentState = Iterables.getFirst(projectState
|
||||
.parents(), null);
|
||||
@@ -90,12 +91,14 @@ public class ConfigInfoImpl extends ConfigInfo {
|
||||
parentState.isCreateNewChangeForAllNotInTarget();
|
||||
enableSignedPush.inheritedValue = projectState.isEnableSignedPush();
|
||||
requireSignedPush.inheritedValue = projectState.isRequireSignedPush();
|
||||
rejectImplicitMerges.inheritedValue = projectState.isRejectImplicitMerges();
|
||||
}
|
||||
|
||||
this.useContributorAgreements = useContributorAgreements;
|
||||
this.useSignedOffBy = useSignedOffBy;
|
||||
this.useContentMerge = useContentMerge;
|
||||
this.requireChangeId = requireChangeId;
|
||||
this.rejectImplicitMerges = rejectImplicitMerges;
|
||||
this.createNewChangeForAllNotInTarget = createNewChangeForAllNotInTarget;
|
||||
if (serverEnableSignedPush) {
|
||||
this.enableSignedPush = enableSignedPush;
|
||||
|
Reference in New Issue
Block a user