diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google')
3 files changed, 18 insertions, 2 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java index 5bc3a362b7..f41d41d12e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -95,6 +95,7 @@ public class PatchSetInserter extends BatchUpdate.Op { private String message; private CommitValidators.Policy validatePolicy = CommitValidators.Policy.GERRIT; + private boolean checkAddPatchSetPermission = true; private boolean draft; private List<String> groups = Collections.emptyList(); private boolean fireRevisionCreated = true; @@ -154,6 +155,12 @@ public class PatchSetInserter extends BatchUpdate.Op { return this; } + public PatchSetInserter setCheckAddPatchSetPermission( + boolean checkAddPatchSetPermission) { + this.checkAddPatchSetPermission = checkAddPatchSetPermission; + return this; + } + public PatchSetInserter setDraft(boolean draft) { this.draft = draft; return this; @@ -294,7 +301,7 @@ public class PatchSetInserter extends BatchUpdate.Op { CommitValidators cv = commitValidatorsFactory.create( origCtl.getRefControl(), sshInfo, ctx.getRepository()); - if (!origCtl.canAddPatchSet(ctx.getDb())) { + if (checkAddPatchSetPermission && !origCtl.canAddPatchSet(ctx.getDb())) { throw new AuthException("cannot add patch set"); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChangeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChangeOp.java index 8909e609c6..20dbfb335e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChangeOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChangeOp.java @@ -65,6 +65,7 @@ public class RebaseChangeOp extends BatchUpdate.Op { private PersonIdent committerIdent; private boolean fireRevisionCreated = true; private CommitValidators.Policy validate; + private boolean checkAddPatchSetPermission = true; private boolean forceContentMerge; private boolean copyApprovals = true; @@ -101,6 +102,12 @@ public class RebaseChangeOp extends BatchUpdate.Op { return this; } + public RebaseChangeOp setCheckAddPatchSetPermission( + boolean checkAddPatchSetPermission) { + this.checkAddPatchSetPermission = checkAddPatchSetPermission; + return this; + } + public RebaseChangeOp setFireRevisionCreated(boolean fireRevisionCreated) { this.fireRevisionCreated = fireRevisionCreated; return this; @@ -153,6 +160,7 @@ public class RebaseChangeOp extends BatchUpdate.Op { .setSendMail(false) .setFireRevisionCreated(fireRevisionCreated) .setCopyApprovals(copyApprovals) + .setCheckAddPatchSetPermission(checkAddPatchSetPermission) .setMessage( "Patch Set " + rebasedPatchSetId.get() + ": Patch Set " + originalPatchSet.getId().get() + " was rebased"); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java index a309e6ec89..7892a4ac5e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java @@ -124,7 +124,8 @@ public class RebaseIfNecessary extends SubmitStrategy { // Bypass approval copier since SubmitStrategyOp copy all approvals // later anyway. .setCopyApprovals(false) - .setValidatePolicy(CommitValidators.Policy.NONE); + .setValidatePolicy(CommitValidators.Policy.NONE) + .setCheckAddPatchSetPermission(false); try { rebaseOp.updateRepo(ctx); } catch (MergeConflictException | NoSuchChangeException e) { |