Add merge feature into /changes REST endpoint

Allow user to create a merge in Gerrit via POST /changes REST API.
By adding a "merge" attribute which could be a SHA1, a branch name or a
tag name, etc. in the post JSON, gerrit will create a merge commit
instead of an empty commit. If there are conflicts, the response will
be rejected with a MergeConfictException which contains conflict
message.

Add dry run end point into GET
/projects/{project}/branches/{branch}/mergeable with query parameters
source (required) and strategy (optional) and return a
MergeableInfo entity.

Change-Id: I8f45f324704b3ff3eb20cb57c6e3bd75f2bf60ef
This commit is contained in:
Zhen Chen
2016-05-02 15:14:43 -07:00
parent 10c815d2e1
commit f7d85ea916
13 changed files with 441 additions and 42 deletions

View File

@@ -25,4 +25,5 @@ public class ChangeInput {
public ChangeStatus status;
public String baseChange;
public Boolean newBranch;
public MergeInput merge;
}

View File

@@ -0,0 +1,31 @@
// Copyright (C) 2016 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.extensions.common;
public class MergeInput {
/**
* {@code source} can be any Git object reference expression.
*
* @see <a href="https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html">gitrevisions(7)</a>
*/
public String source;
/**
* {@code strategy} name of the merge strategy.
*
* @see org.eclipse.jgit.merge.MergeStrategy
*/
public String strategy;
}

View File

@@ -20,6 +20,8 @@ import java.util.List;
public class MergeableInfo {
public SubmitType submitType;
public String strategy;
public boolean mergeable;
public List<String> conflicts;
public List<String> mergeableInto;
}