From 3f3930253c0ecc16d92cc4827d5809acfd39ec26 Mon Sep 17 00:00:00 2001 From: Sarmad Date: Fri, 20 May 2016 13:34:41 +0500 Subject: [PATCH] Pull-Request-Squash-Commit (#1245) --- .../Clients/PullRequestsClientTests.cs | 18 ++++++++++++++++++ .../Clients/PullRequestsClientTests.cs | 2 +- Octokit/Clients/PullRequestsClient.cs | 3 ++- Octokit/Helpers/AcceptHeaders.cs | 2 ++ Octokit/Models/Request/MergePullRequest.cs | 12 +++++++++++- 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs index c9e0a2eb..8d8c1196 100644 --- a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs +++ b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs @@ -225,6 +225,24 @@ public class PullRequestsClientTests : IDisposable } [IntegrationTest] + public async Task CanBeMergedWithSquashCommit() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("squash commit pull request", branchName, "master"); + var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var merge = new MergePullRequest { CommitMessage = "fake commit message", CommitTitle = "fake title", Squash = true }; + var result = await _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge); + var commit = await _github.Repository.Commit.Get(_context.RepositoryOwner, _context.RepositoryName, result.Sha); + var message = commit.Commit.Message; + Assert.True(result.Merged); + Assert.Equal("fake title\n\nfake commit message", commit.Commit.Message); + + } + + [IntegrationTest] + public async Task CannotBeMergedDueMismatchConflict() { await CreateTheWorld(); diff --git a/Octokit.Tests/Clients/PullRequestsClientTests.cs b/Octokit.Tests/Clients/PullRequestsClientTests.cs index 0c02a124..0b84433d 100644 --- a/Octokit.Tests/Clients/PullRequestsClientTests.cs +++ b/Octokit.Tests/Clients/PullRequestsClientTests.cs @@ -145,7 +145,7 @@ namespace Octokit.Tests.Clients client.Merge("fake", "repo", 42, mergePullRequest); connection.Received().Put(Arg.Is(u => u.ToString() == "repos/fake/repo/pulls/42/merge"), - mergePullRequest); + mergePullRequest,null, "application/vnd.github.polaris-preview+json"); } [Fact] diff --git a/Octokit/Clients/PullRequestsClient.cs b/Octokit/Clients/PullRequestsClient.cs index c8c33478..119b2c87 100644 --- a/Octokit/Clients/PullRequestsClient.cs +++ b/Octokit/Clients/PullRequestsClient.cs @@ -119,7 +119,8 @@ namespace Octokit try { var endpoint = ApiUrls.MergePullRequest(owner, name, number); - return await ApiConnection.Put(endpoint, mergePullRequest).ConfigureAwait(false); + return await ApiConnection.Put(endpoint, mergePullRequest,null, + AcceptHeaders.SquashCommitPreview).ConfigureAwait(false); } catch (ApiException ex) { diff --git a/Octokit/Helpers/AcceptHeaders.cs b/Octokit/Helpers/AcceptHeaders.cs index bf3423b3..9f4be8e8 100644 --- a/Octokit/Helpers/AcceptHeaders.cs +++ b/Octokit/Helpers/AcceptHeaders.cs @@ -17,5 +17,7 @@ public const string IssueLockingUnlockingApiPreview = "application/vnd.github.the-key-preview+json"; public const string CommitReferenceSha1Preview = "application/vnd.github.chitauri-preview+sha"; + + public const string SquashCommitPreview = "application/vnd.github.polaris-preview+json"; } } diff --git a/Octokit/Models/Request/MergePullRequest.cs b/Octokit/Models/Request/MergePullRequest.cs index 8746bd70..47e06bb3 100644 --- a/Octokit/Models/Request/MergePullRequest.cs +++ b/Octokit/Models/Request/MergePullRequest.cs @@ -22,11 +22,21 @@ namespace Octokit /// public string Sha { get; set; } + /// + /// The Title for the automatic commit message (optional) + /// + public string CommitTitle { get; set; } + + /// + /// Commit a single commit to the head branch (optional) + /// + public bool Squash { get; set; } + internal string DebuggerDisplay { get { - return string.Format(CultureInfo.InvariantCulture, "Message: '{0}', Sha: '{1}'", CommitMessage, Sha); + return string.Format(CultureInfo.InvariantCulture, "Title: '{0}' Message: '{1}', Sha: '{2}' , Squash: '{3}'", CommitTitle, CommitMessage, Sha, Squash); } } }