git-pr-release 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcfff97226a267200239ba145f57f35a4a75b1729f830022b20bd6933ba11cd6
4
- data.tar.gz: 7e30e4a4932b9275c4025bc07cb51a5a10f5c81aad8882076c7df477f54069ea
3
+ metadata.gz: ca8cbcbeabc642ad4c1531d0e06a30a321a1fcbbe726f02c796a8a770db03107
4
+ data.tar.gz: 7c394639183d32987a2676d7e78c8cc6d3426841d763e972058f7db765ca8218
5
5
  SHA512:
6
- metadata.gz: 82a273849c7f74b9c1000062cba072e898089e54a07d35be0109a5e3e16afcb158c956454462816b98b4504bedb7675654025d44f54be95352940d25346c46ab
7
- data.tar.gz: 56560282a6aab0db0595d165227974254eb6cf51e591cfcad016efe655ae7a3c3a70ace9e368640c760f6c007c22bfca5ad9e1a923bc5794422b1defc46dc22e
6
+ metadata.gz: 318a4eaaed83ad8ff9f918a799864d9c4cb40224b3b168d41c073103d09b74af7c73cbe117ff54e1533cc182e4acbfd087949f42275f068eb4393e228761e573
7
+ data.tar.gz: 16dd7fc6cfa7f377644a4a8a342fb4fc1097c02f5fbd17794cc9f9e715d7fc2140a56952018295cc88100aec546919d2ada674258d7ce76cc71464239ac87b0d
data/CHANGELOG.md CHANGED
@@ -1,21 +1,31 @@
1
1
  # git-pr-release
2
2
 
3
+ ## v1.5.0 (2021-04-02)
4
+
5
+ [full changelog](https://github.com/x-motemen/git-pr-release/compare/v1.4.0...v1.5.0)
6
+
7
+ * (#60, #61) Get issue number from GitHub API for squashed PR (@yuuan)
8
+ * (#58) Make stable test (@kachick)
9
+ * (#55) Suppress warning for ERB (@ohbarye)
10
+ * (#50) support `GIT_PR_RELEASE_MENTION` environment variable (@dabutvin)
11
+ * (#49) Transfer repository to x-motemen organization (@onk)
12
+
3
13
  ## v1.4.0 (2020-02-22)
4
14
 
5
- [full changelog](https://github.com/motemen/git-pr-release/compare/v1.3.0...v1.4.0)
15
+ [full changelog](https://github.com/x-motemen/git-pr-release/compare/v1.3.0...v1.4.0)
6
16
 
7
17
  * (#48) List PR API needs head user or head organization and branch name (@sasasin)
8
18
 
9
19
  ## v1.3.0 (2020-02-19)
10
20
 
11
- [full changelog](https://github.com/motemen/git-pr-release/compare/v1.2.0...v1.3.0)
21
+ [full changelog](https://github.com/x-motemen/git-pr-release/compare/v1.2.0...v1.3.0)
12
22
 
13
23
  * (#47) Fix Errno::ENOENT when finding the specified template (@onk)
14
24
  * (#45) Fix "warning: instance variable @xxx not initialized" (@onk)
15
25
 
16
26
  ## v1.2.0 (2020-02-07)
17
27
 
18
- [full changelog](https://github.com/motemen/git-pr-release/compare/v1.1.0...v1.2.0)
28
+ [full changelog](https://github.com/x-motemen/git-pr-release/compare/v1.1.0...v1.2.0)
19
29
 
20
30
  * (#44) Use API option when detecting existing release PR (@onk)
21
31
  * (#41, #42) Refactor (@onk)
@@ -23,13 +33,13 @@
23
33
 
24
34
  ## v1.1.0 (2020-01-02)
25
35
 
26
- [full changelog](https://github.com/motemen/git-pr-release/compare/v1.0.1...v1.1.0)
36
+ [full changelog](https://github.com/x-motemen/git-pr-release/compare/v1.0.1...v1.1.0)
27
37
 
28
38
  * (#38) Fetch changed files as many as possible (@shibayu36)
29
39
 
30
40
  ## v1.0.1 (2019-12-17)
31
41
 
32
- [full changelog](https://github.com/motemen/git-pr-release/compare/v1.0.0...v1.0.1)
42
+ [full changelog](https://github.com/x-motemen/git-pr-release/compare/v1.0.0...v1.0.1)
33
43
 
34
44
  * (#37) Fix NameError (@onk)
35
45
 
data/README.md CHANGED
@@ -75,6 +75,15 @@ You can specify this value by `GIT_PR_RELEASE_LABELS` environment variable.
75
75
 
76
76
  If not specified, any labels will not be added for PRs.
77
77
 
78
+ ### `pr-release.mention`
79
+
80
+ The name that is listed next to each PR title.
81
+ Accepted values: `author`
82
+
83
+ You can specify this value by `GIT_PR_RELEASE_MENTION` environment variable.
84
+
85
+ If not specified, the mention will be the PR assignee
86
+
78
87
 
79
88
  Errors and exit statuses
80
89
  ------------------------
@@ -4,12 +4,12 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "git-pr-release"
7
- spec.version = '1.4.0'
7
+ spec.version = '1.5.0'
8
8
  spec.authors = ["motemen"]
9
9
  spec.email = ["motemen@gmail.com"]
10
10
  spec.summary = 'Creates a release pull request'
11
11
  spec.description = 'git-pr-release creates a pull request which summarizes feature branches that are to be released into production'
12
- spec.homepage = 'https://github.com/motemen/git-pr-release'
12
+ spec.homepage = 'https://github.com/x-motemen/git-pr-release'
13
13
 
14
14
  spec.files = `git ls-files`.split($/)
15
15
  spec.bindir = "exe"
@@ -17,6 +17,7 @@ module Git
17
17
  @dry_run = false
18
18
  @json = false
19
19
  @no_fetch = false
20
+ @squashed = false
20
21
  end
21
22
 
22
23
  def start
@@ -30,6 +31,9 @@ module Git
30
31
  opts.on('--no-fetch', 'Do not fetch from remote repo before determining target PRs (CI friendly)') do |v|
31
32
  @no_fetch = v
32
33
  end
34
+ opts.on('--squashed', 'Handle squash merged PRs') do |v|
35
+ @squashed = v
36
+ end
33
37
  end.parse!
34
38
 
35
39
  ### Set up configuration
@@ -81,14 +85,24 @@ module Git
81
85
  def fetch_merged_prs
82
86
  git :remote, 'update', 'origin' unless @no_fetch
83
87
 
84
- merged_feature_head_sha1s = git(
85
- :log, '--merges', '--pretty=format:%P', "origin/#{production_branch}..origin/#{staging_branch}"
86
- ).map do |line|
88
+ merged_pull_request_numbers = @squashed ? fetch_merged_pr_numbers_from_github : fetch_merged_pr_numbers_from_git_remote
89
+
90
+ merged_prs = merged_pull_request_numbers.map do |nr|
91
+ pr = client.pull_request repository, nr
92
+ say "To be released: ##{pr.number} #{pr.title}", :notice
93
+ pr
94
+ end
95
+
96
+ merged_prs
97
+ end
98
+
99
+ def fetch_merged_pr_numbers_from_git_remote
100
+ merged_feature_head_sha1s = git(:log, '--merges', '--pretty=format:%P', "origin/#{production_branch}..origin/#{staging_branch}").map do |line|
87
101
  main_sha1, feature_sha1 = line.chomp.split /\s+/
88
102
  feature_sha1
89
103
  end
90
104
 
91
- merged_pull_request_numbers = git('ls-remote', 'origin', 'refs/pull/*/head').map do |line|
105
+ git('ls-remote', 'origin', 'refs/pull/*/head').map do |line|
92
106
  sha1, ref = line.chomp.split /\s+/
93
107
 
94
108
  if merged_feature_head_sha1s.include? sha1
@@ -106,14 +120,13 @@ module Git
106
120
  end
107
121
  end
108
122
  end.compact
123
+ end
109
124
 
110
- merged_prs = merged_pull_request_numbers.map do |nr|
111
- pr = client.pull_request repository, nr
112
- say "To be released: ##{pr.number} #{pr.title}", :notice
113
- pr
114
- end
115
-
116
- merged_prs
125
+ def fetch_merged_pr_numbers_from_github
126
+ git(:log, '--pretty=format:%H', "origin/#{production_branch}..origin/#{staging_branch}").map(&:chomp).map do |sha1|
127
+ client.search_issues("repo:#{repository} is:pr is:closed #{sha1}")[:items].map(&:number)
128
+ sleep 1
129
+ end.flatten
117
130
  end
118
131
 
119
132
  def create_release_pr(merged_prs)
@@ -34,7 +34,7 @@ module Git
34
34
  end
35
35
 
36
36
  def self.mention_type
37
- @mention_type ||= (git_config('mention') || 'default')
37
+ @mention_type ||= (ENV.fetch('GIT_PR_RELEASE_MENTION') { git_config('mention') } || 'default')
38
38
  end
39
39
  end
40
40
  end
@@ -94,7 +94,11 @@ ERB
94
94
  DEFAULT_PR_TEMPLATE
95
95
  end
96
96
 
97
- erb = ERB.new template, nil, '-'
97
+ erb = if RUBY_VERSION >= '2.6'
98
+ ERB.new template, trim_mode: '-'
99
+ else
100
+ ERB.new template, nil, '-'
101
+ end
98
102
  content = erb.result binding
99
103
  content.split(/\n/, 2)
100
104
  end
data/spec/spec_helper.rb CHANGED
@@ -19,6 +19,15 @@ RSpec.configure do |config|
19
19
  config.order = :random
20
20
  Kernel.srand config.seed
21
21
 
22
+ config.around(:each) do |example|
23
+ begin
24
+ ENV['TZ'], old = 'Asia/Tokyo', ENV['TZ']
25
+ example.run
26
+ ensure
27
+ ENV['TZ'] = old
28
+ end
29
+ end
30
+
22
31
  config.after do
23
32
  Timecop.return
24
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-pr-release
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - motemen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-22 00:00:00.000000000 Z
11
+ date: 2021-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -143,11 +143,11 @@ files:
143
143
  - spec/spec_helper.rb
144
144
  - spec/support/capture_support.rb
145
145
  - spec/support/file_fixture_support.rb
146
- homepage: https://github.com/motemen/git-pr-release
146
+ homepage: https://github.com/x-motemen/git-pr-release
147
147
  licenses:
148
148
  - MIT
149
149
  metadata: {}
150
- post_install_message:
150
+ post_install_message:
151
151
  rdoc_options: []
152
152
  require_paths:
153
153
  - lib
@@ -162,8 +162,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
162
  - !ruby/object:Gem::Version
163
163
  version: '0'
164
164
  requirements: []
165
- rubygems_version: 3.1.2
166
- signing_key:
165
+ rubygems_version: 3.2.3
166
+ signing_key:
167
167
  specification_version: 4
168
168
  summary: Creates a release pull request
169
169
  test_files: