diff options
Diffstat (limited to 'java/com/google/gerrit/server/restapi/change/Rebase.java')
-rw-r--r-- | java/com/google/gerrit/server/restapi/change/Rebase.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/java/com/google/gerrit/server/restapi/change/Rebase.java b/java/com/google/gerrit/server/restapi/change/Rebase.java index 2077fb8205..5e30dae495 100644 --- a/java/com/google/gerrit/server/restapi/change/Rebase.java +++ b/java/com/google/gerrit/server/restapi/change/Rebase.java @@ -16,8 +16,10 @@ package com.google.gerrit.server.restapi.change; import static com.google.gerrit.server.project.ProjectCache.illegalState; +import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import com.google.gerrit.common.Nullable; import com.google.gerrit.entities.BranchNameKey; import com.google.gerrit.entities.Change; import com.google.gerrit.entities.PatchSet; @@ -53,6 +55,7 @@ import com.google.gerrit.server.util.time.TimeUtil; import com.google.inject.Inject; import com.google.inject.Singleton; import java.io.IOException; +import java.util.Map; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectInserter; import org.eclipse.jgit.lib.ObjectReader; @@ -114,7 +117,7 @@ public class Rebase ObjectReader reader = oi.newReader(); RevWalk rw = CodeReviewCommit.newRevWalk(reader); BatchUpdate bu = - updateFactory.create(change.getProject(), rsrc.getUser(), TimeUtil.nowTs())) { + updateFactory.create(change.getProject(), rsrc.getUser(), TimeUtil.now())) { if (!change.isNew()) { throw new ResourceConflictException("change is " + ChangeUtil.status(change)); } else if (!hasOneParent(rw, rsrc.getPatchSet())) { @@ -126,6 +129,7 @@ public class Rebase .create(rsrc.getNotes(), rsrc.getPatchSet(), findBaseRev(repo, rw, rsrc, input)) .setForceContentMerge(true) .setAllowConflicts(input.allowConflicts) + .setValidationOptions(getValidateOptionsAsMultimap(input.validationOptions)) .setFireRevisionCreated(true); // TODO(dborowitz): Why no notification? This seems wrong; dig up blame. bu.setNotify(NotifyResolver.Result.none()); @@ -215,7 +219,9 @@ public class Rebase UiAction.Description description = new UiAction.Description() .setLabel("Rebase") - .setTitle("Rebase onto tip of branch or parent change") + .setTitle( + "Rebase onto tip of branch or parent change. Makes you the uploader of this " + + "change which can affect validity of approvals.") .setVisible(false); Change change = rsrc.getChange(); @@ -246,6 +252,20 @@ public class Rebase return description; } + private static ImmutableListMultimap<String, String> getValidateOptionsAsMultimap( + @Nullable Map<String, String> validationOptions) { + if (validationOptions == null) { + return ImmutableListMultimap.of(); + } + + ImmutableListMultimap.Builder<String, String> validationOptionsBuilder = + ImmutableListMultimap.builder(); + validationOptions + .entrySet() + .forEach(e -> validationOptionsBuilder.put(e.getKey(), e.getValue())); + return validationOptionsBuilder.build(); + } + public static class CurrentRevision implements RestModifyView<ChangeResource, RebaseInput> { private final PatchSetUtil psUtil; private final Rebase rebase; |