mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-03 03:01:31 +00:00
Merge pull request #1479 from TattsGroup/pr-merge-method
Add MergeMethod property to PR merge request
This commit is contained in:
@@ -637,6 +637,54 @@ public class PullRequestsClientTests : IDisposable
|
||||
Assert.Equal("fake title\n\nfake commit message", commit.Commit.Message);
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CanBeMergedWithMergeMethod()
|
||||
{
|
||||
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", MergeMethod = PullRequestMergeMethod.Merge };
|
||||
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);
|
||||
|
||||
Assert.True(result.Merged);
|
||||
Assert.Equal("fake title\n\nfake commit message", commit.Commit.Message);
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CanBeMergedWithSquashMethod()
|
||||
{
|
||||
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", MergeMethod = PullRequestMergeMethod.Squash };
|
||||
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);
|
||||
|
||||
Assert.True(result.Merged);
|
||||
Assert.Equal("fake title\n\nfake commit message", commit.Commit.Message);
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CanBeMergedWithRebaseMethod()
|
||||
{
|
||||
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", MergeMethod = PullRequestMergeMethod.Rebase };
|
||||
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);
|
||||
|
||||
Assert.True(result.Merged);
|
||||
Assert.Equal("this is a 2nd commit to merge into the pull request", commit.Commit.Message);
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task CannotBeMergedDueMismatchConflict()
|
||||
{
|
||||
@@ -848,8 +896,11 @@ public class PullRequestsClientTests : IDisposable
|
||||
var featureBranchTree = await CreateTree(new Dictionary<string, string> { { "README.md", "I am overwriting this blob with something new" } });
|
||||
var featureBranchCommit = await CreateCommit("this is the commit to merge into the pull request", featureBranchTree.Sha, newMaster.Sha);
|
||||
|
||||
var featureBranchTree2 = await CreateTree(new Dictionary<string, string> { { "README.md", "I am overwriting this blob with something new a 2nd time" } });
|
||||
var featureBranchCommit2 = await CreateCommit("this is a 2nd commit to merge into the pull request", featureBranchTree2.Sha, featureBranchCommit.Sha);
|
||||
|
||||
// create branch
|
||||
await _github.Git.Reference.Create(Helper.UserName, _context.RepositoryName, new NewReference("refs/heads/my-branch", featureBranchCommit.Sha));
|
||||
await _github.Git.Reference.Create(Helper.UserName, _context.RepositoryName, new NewReference("refs/heads/my-branch", featureBranchCommit2.Sha));
|
||||
|
||||
var otherFeatureBranchTree = await CreateTree(new Dictionary<string, string> { { "README.md", "I am overwriting this blob with something else" } });
|
||||
var otherFeatureBranchCommit = await CreateCommit("this is the other commit to merge into the other pull request", otherFeatureBranchTree.Sha, newMaster.Sha);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
|
||||
namespace Octokit
|
||||
@@ -30,14 +31,41 @@ namespace Octokit
|
||||
/// <summary>
|
||||
/// Commit a single commit to the head branch (optional)
|
||||
/// </summary>
|
||||
[Obsolete("Please use MergeMethod property. This property will no longer be supported by the GitHub API and will be removed in a future version")]
|
||||
public bool Squash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Specify the Merge method to use (optional - default is Merge)
|
||||
/// </summary>
|
||||
public PullRequestMergeMethod? MergeMethod { get; set; }
|
||||
|
||||
internal string DebuggerDisplay
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.Format(CultureInfo.InvariantCulture, "Title: '{0}' Message: '{1}', Sha: '{2}' , Squash: '{3}'", CommitTitle, CommitMessage, Sha, Squash);
|
||||
return string.Format(CultureInfo.InvariantCulture, "Title: '{0}' Message: '{1}', Sha: '{2}' , MergeMethod: '{3}'", CommitTitle, CommitMessage, Sha, MergeMethod.HasValue ? MergeMethod.Value.ToString() : "null");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Method to use when merging a PR
|
||||
/// </summary>
|
||||
public enum PullRequestMergeMethod
|
||||
{
|
||||
/// <summary>
|
||||
/// Create a merge commit
|
||||
/// </summary>
|
||||
Merge,
|
||||
|
||||
/// <summary>
|
||||
/// Squash and merge
|
||||
/// </summary>
|
||||
Squash,
|
||||
|
||||
/// <summary>
|
||||
/// Rebase and merge
|
||||
/// </summary>
|
||||
Rebase
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user