From 5b156006fb396612e7a931a8292173fdb2bd23f7 Mon Sep 17 00:00:00 2001 From: Greg Gianforcaro Date: Fri, 27 Jan 2017 23:36:54 -0500 Subject: [PATCH] Add 'Preview' support for MergeMethod on GHPullRequest - Add 'polaris' preview - Add MergeMethod Enum - Add merge method to GHPullRequest which takes a MergeMethod --- .../org/kohsuke/github/GHPullRequest.java | 25 ++++++++++++++++++- .../java/org/kohsuke/github/Previews.java | 1 + .../org/kohsuke/github/PullRequestTest.java | 13 ++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java index 04898039b..8b6404a21 100644 --- a/src/main/java/org/kohsuke/github/GHPullRequest.java +++ b/src/main/java/org/kohsuke/github/GHPullRequest.java @@ -23,6 +23,8 @@ */ package org.kohsuke.github; +import static org.kohsuke.github.Previews.POLARIS; + import java.io.IOException; import java.net.URL; import java.util.Collection; @@ -277,7 +279,7 @@ public class GHPullRequest extends GHIssue { * Commit message. If null, the default one will be used. */ public void merge(String msg) throws IOException { - merge(msg,null); + merge(msg,(String)null); } /** @@ -294,6 +296,27 @@ public class GHPullRequest extends GHIssue { new Requester(root).method("PUT").with("commit_message",msg).with("sha",sha).to(getApiRoute()+"/merge"); } + /** + * Merge this pull request, using the specified merge method. + * + * The equivalent of the big green "Merge pull request" button. + * + * @param msg + * Commit message. If null, the default one will be used. + * @param method + * SHA that pull request head must match to allow merge. + */ + @Preview @Deprecated + public void merge(String msg, MergeMethod method) throws IOException { + new Requester(root).method("PUT") + .withPreview(POLARIS) + .with("commit_message",msg) + .with("merge_method",method) + .to(getApiRoute()+"/merge"); + } + + public enum MergeMethod{ MERGE, SQUASH, REBASE } + private void fetchIssue() throws IOException { if (!fetchedIssueDetails) { new Requester(root).to(getIssuesApiRoute(), this); diff --git a/src/main/java/org/kohsuke/github/Previews.java b/src/main/java/org/kohsuke/github/Previews.java index 238b062b8..3b7eeb593 100644 --- a/src/main/java/org/kohsuke/github/Previews.java +++ b/src/main/java/org/kohsuke/github/Previews.java @@ -8,4 +8,5 @@ package org.kohsuke.github; static final String DRAX = "application/vnd.github.drax-preview+json"; static final String SQUIRREL_GIRL = "application/vnd.github.squirrel-girl-preview"; static final String KORRA = "application/vnd.github.korra-preview"; + static final String POLARIS = "application/vnd.github.polaris-preview"; } diff --git a/src/test/java/org/kohsuke/github/PullRequestTest.java b/src/test/java/org/kohsuke/github/PullRequestTest.java index c7ce77d28..ba8f08719 100644 --- a/src/test/java/org/kohsuke/github/PullRequestTest.java +++ b/src/test/java/org/kohsuke/github/PullRequestTest.java @@ -69,6 +69,19 @@ public class PullRequestTest extends AbstractGitHubApiTestBase { fail(); } + @Test + public void testSquashMerge() throws Exception { + String name = rnd.next(); + GHRef masterRef = getRepository().getRef("heads/master"); + GHRef branchRef = getRepository().createRef("refs/heads/" + name, masterRef.getObject().getSha()); + getRepository().createContent(name, name, name, name); + Thread.sleep(1000); + GHPullRequest p = getRepository().createPullRequest(name, name, "master", "## test squash"); + Thread.sleep(1000); + p.merge("squash merge", GHPullRequest.MergeMethod.SQUASH); + branchRef.delete(); + } + @Test // Requires push access to the test repo to pass public void setLabels() throws Exception {