socialcast-git-extensions 4.1.3 → 4.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/socialcast-git-extensions/cli.rb +15 -4
- data/lib/socialcast-git-extensions/version.rb +1 -1
- data/socialcast-git-extensions-4.1.3.gem +0 -0
- data/spec/cli_spec.rb +85 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6df565ab7992070e2b73ec347a44c2f25bf2838
|
4
|
+
data.tar.gz: ac2cfdc3044973c434d7d3ec803e875d9eec9c34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 976edeb8500ab67b7d6789cc454017e0867f980ee012686be02b48f2587e82f071c0699d4ac4a4d9d71925090822ba767d12fbaf61e6c7d62c3648b62d4395f4
|
7
|
+
data.tar.gz: 51db07e95b22c332e1599c7744c1aed17fd2eeeca66c74454fcb73a137ee311759d1c72b45ba277ac3d6aa9066af5094428eb4bd396ab3fa902ff747a33095df
|
@@ -128,13 +128,24 @@ module Socialcast
|
|
128
128
|
socialcast_reviewer = socialcast_track_reviewer('Backport')
|
129
129
|
|
130
130
|
pull_request_data = github_api_request('GET', "repos/#{repo}/pulls/#{pull_request_num}")
|
131
|
-
commits_data = github_api_request('GET', pull_request_data['commits_url'])
|
132
131
|
|
133
|
-
|
134
|
-
|
132
|
+
commits_to_cherry_pick = []
|
133
|
+
commit_count = pull_request_data['commits']
|
134
|
+
commits_checked_count = 0
|
135
|
+
page = 1
|
136
|
+
|
137
|
+
while commits_checked_count < commit_count
|
138
|
+
commits_data = github_api_request('GET', pull_request_data['commits_url'] + "?page=#{page}")
|
139
|
+
commits_checked_count += commits_data.size
|
140
|
+
raise 'Received empty commits data response! Could not pull all commits from PR' if commits_data.size == 0
|
141
|
+
|
142
|
+
non_merge_commits_data = commits_data.select { |commit_data| commit_data['parents'].length == 1 }
|
143
|
+
commits_to_cherry_pick += non_merge_commits_data.map { |commit| commit['sha'] }
|
144
|
+
page += 1
|
145
|
+
end
|
135
146
|
|
136
147
|
backport_branch = "backport_#{pull_request_num}_to_#{maintenance_branch}"
|
137
|
-
backport_to(backport_branch,
|
148
|
+
backport_to(backport_branch, commits_to_cherry_pick)
|
138
149
|
|
139
150
|
maintenance_branch_url = "https://github.com/#{repo}/tree/#{maintenance_branch}"
|
140
151
|
description = "Backport ##{pull_request_num} to #{maintenance_branch_url}\n***\n#{pull_request_data['body']}"
|
Binary file
|
data/spec/cli_spec.rb
CHANGED
@@ -971,7 +971,7 @@ describe Socialcast::Gitx::CLI do
|
|
971
971
|
.to_return(:status => 200, :body => pr_response.to_json, :headers => {})
|
972
972
|
end
|
973
973
|
let!(:github_pr_commits_list) do
|
974
|
-
stub_request(:get, "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls/59/commits")
|
974
|
+
stub_request(:get, "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls/59/commits?page=1")
|
975
975
|
.to_return(:status => 200, :body => commits_response.to_json, :headers => {})
|
976
976
|
end
|
977
977
|
let!(:github_pr_create) do
|
@@ -1056,6 +1056,90 @@ describe Socialcast::Gitx::CLI do
|
|
1056
1056
|
expect(socialcast_message_create).to_not have_been_requested
|
1057
1057
|
end
|
1058
1058
|
end
|
1059
|
+
context 'when backport has multiple pages of commits' do
|
1060
|
+
let(:pr_response) do
|
1061
|
+
# https://developer.github.com/v3/search/#search-issues
|
1062
|
+
{
|
1063
|
+
"url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls/59",
|
1064
|
+
"id" => 13712197,
|
1065
|
+
"html_url" => "https://github.com/socialcast/socialcast-git-extensions/pull/59",
|
1066
|
+
"diff_url" => "https://github.com/socialcast/socialcast-git-extensions/pull/59.diff",
|
1067
|
+
"patch_url" => "https://github.com/socialcast/socialcast-git-extensions/pull/59.patch",
|
1068
|
+
"issue_url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/issues/59",
|
1069
|
+
"number" => 59,
|
1070
|
+
"state" => "closed",
|
1071
|
+
"title" => "additional-notifications",
|
1072
|
+
"body" => "simply testing this out",
|
1073
|
+
"created_at" => "2014-03-18T22:39:37Z",
|
1074
|
+
"updated_at" => "2014-03-18T22:40:18Z",
|
1075
|
+
"closed_at" => "2014-03-18T22:39:46Z",
|
1076
|
+
"merged_at" => nil,
|
1077
|
+
"merge_commit_sha" => "f73009f4eb245c84da90e8abf9be846c58bc1e3b",
|
1078
|
+
"assignee" => nil,
|
1079
|
+
"milestone" => nil,
|
1080
|
+
"commits_url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls/59/commits",
|
1081
|
+
"review_comments_url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls/59/comments",
|
1082
|
+
"review_comment_url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls/comments/{number}",
|
1083
|
+
"comments_url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/issues/59/comments",
|
1084
|
+
"statuses_url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/statuses/5e30d5af3f4d1bb3a34cc97568299be028b65f6f",
|
1085
|
+
"commits" => 2,
|
1086
|
+
}
|
1087
|
+
end
|
1088
|
+
let(:commits_response) do
|
1089
|
+
[
|
1090
|
+
{
|
1091
|
+
"sha" => "5e30d5af3f4d1bb3a34cc97568299be028b65f6f",
|
1092
|
+
"commit" => {
|
1093
|
+
"message" => "adding the ability to specify additional reviewers"
|
1094
|
+
},
|
1095
|
+
"url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/commits/5e30d5af3f4d1bb3a34cc97568299be028b65f6f",
|
1096
|
+
"parents" => [
|
1097
|
+
{
|
1098
|
+
"sha" => "1baae2de301c43d44297647f3f9c1e06697748ad",
|
1099
|
+
"url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/commits/1baae2de301c43d44297647f3f9c1e06697748ad",
|
1100
|
+
"html_url" => "https://github.com/socialcast/socialcast-git-extensions/commit/1baae2de301c43d44297647f3f9c1e06697748ad"
|
1101
|
+
}
|
1102
|
+
]
|
1103
|
+
}
|
1104
|
+
]
|
1105
|
+
end
|
1106
|
+
|
1107
|
+
let(:commits_response2) do
|
1108
|
+
[
|
1109
|
+
{
|
1110
|
+
"sha" => "5e30d5af3f4d1bb3a34cc97568299be028b65f6d",
|
1111
|
+
"commit" => {
|
1112
|
+
"message" => "adding the ability to specify additional reviewers"
|
1113
|
+
},
|
1114
|
+
"url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/commits/5e30d5af3f4d1bb3a34cc97568299be028b65f6d",
|
1115
|
+
"parents" => [
|
1116
|
+
{
|
1117
|
+
"sha" => "5e30d5af3f4d1bb3a34cc97568299be028b65f6f",
|
1118
|
+
"url" => "https://api.github.com/repos/socialcast/socialcast-git-extensions/commits/5e30d5af3f4d1bb3a34cc97568299be028b65f6f",
|
1119
|
+
"html_url" => "https://github.com/socialcast/socialcast-git-extensions/commit/5e30d5af3f4d1bb3a34cc97568299be028b65f6f"
|
1120
|
+
}
|
1121
|
+
]
|
1122
|
+
}
|
1123
|
+
]
|
1124
|
+
end
|
1125
|
+
|
1126
|
+
let!(:github_pr_commits_list2) do
|
1127
|
+
stub_request(:get, "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls/59/commits?page=2")
|
1128
|
+
.to_return(:status => 200, :body => commits_response2.to_json, :headers => {})
|
1129
|
+
end
|
1130
|
+
let(:use_pr_comments) { true }
|
1131
|
+
it 'creates a branch based on v1.x and cherry-picks in PR 59' do
|
1132
|
+
Socialcast::Gitx::CLI.start ['backportpr', '59', 'v1.x']
|
1133
|
+
expect(github_pr_show).to have_been_requested
|
1134
|
+
expect(github_pr_commits_list).to have_been_requested
|
1135
|
+
expect(github_pr_commits_list2).to have_been_requested
|
1136
|
+
expect(github_pr_create).to have_been_requested
|
1137
|
+
|
1138
|
+
expect(github_pr_comment_create).to have_been_requested
|
1139
|
+
expect(socialcast_message_create).to_not have_been_requested
|
1140
|
+
end
|
1141
|
+
end
|
1142
|
+
|
1059
1143
|
end
|
1060
1144
|
|
1061
1145
|
describe '#findpr' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: socialcast-git-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Socialcast
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rugged
|
@@ -212,6 +212,7 @@ files:
|
|
212
212
|
- lib/socialcast-git-extensions/highline.rb
|
213
213
|
- lib/socialcast-git-extensions/string_ext.rb
|
214
214
|
- lib/socialcast-git-extensions/version.rb
|
215
|
+
- socialcast-git-extensions-4.1.3.gem
|
215
216
|
- socialcast-git-extensions.gemspec
|
216
217
|
- spec/cli_spec.rb
|
217
218
|
- spec/git_spec.rb
|
@@ -236,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
237
|
version: '0'
|
237
238
|
requirements: []
|
238
239
|
rubyforge_project: socialcast-git-extensions
|
239
|
-
rubygems_version: 2.
|
240
|
+
rubygems_version: 2.6.12
|
240
241
|
signing_key:
|
241
242
|
specification_version: 4
|
242
243
|
summary: git extension scripts for socialcast workflow
|