git_reflow 0.9.0 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/multi-ruby-tests.yml +24 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +109 -10
- data/Gemfile.lock +140 -66
- data/README.md +9 -5
- data/Rakefile +8 -1
- data/Workflow +3 -0
- data/exe/git-reflow +5 -0
- data/git_reflow.gemspec +28 -26
- data/lib/git_reflow/config.rb +30 -4
- data/lib/git_reflow/git_server/git_hub.rb +53 -40
- data/lib/git_reflow/git_server/git_hub/pull_request.rb +22 -6
- data/lib/git_reflow/git_server/pull_request.rb +15 -1
- data/lib/git_reflow/rspec/command_line_helpers.rb +17 -8
- data/lib/git_reflow/sandbox.rb +15 -6
- data/lib/git_reflow/version.rb +1 -1
- data/lib/git_reflow/workflow.rb +31 -4
- data/spec/fixtures/authentication_failure.json +3 -0
- data/spec/fixtures/users/user.json +32 -0
- data/spec/lib/git_reflow/git_server/git_hub/pull_request_spec.rb +1 -1
- data/spec/lib/git_reflow/git_server/git_hub_spec.rb +77 -3
- data/spec/lib/git_reflow/git_server/pull_request_spec.rb +33 -5
- data/spec/lib/git_reflow/workflow_spec.rb +69 -3
- data/spec/lib/git_reflow_spec.rb +0 -1
- data/spec/spec_helper.rb +1 -1
- metadata +58 -40
- data/circle.yml +0 -26
data/lib/git_reflow/version.rb
CHANGED
data/lib/git_reflow/workflow.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'git_reflow/sandbox'
|
2
2
|
require 'git_reflow/git_helpers'
|
3
|
+
require 'bundler/inline'
|
3
4
|
|
4
5
|
module GitReflow
|
5
6
|
module Workflow
|
@@ -80,6 +81,32 @@ module GitReflow
|
|
80
81
|
GitReflow.logger
|
81
82
|
end
|
82
83
|
|
84
|
+
# Checks for an installed gem, and if none is installed use bundler's
|
85
|
+
# inline gemfile to install it.
|
86
|
+
#
|
87
|
+
# @param name [String] the name of the gem to require as a dependency
|
88
|
+
def use_gem(name, *args)
|
89
|
+
run("gem list -ie #{name}", loud: false, raise: true)
|
90
|
+
logger.info "Using installed gem '#{name}' with options: #{args.inspect}"
|
91
|
+
rescue ::GitReflow::Sandbox::CommandError => e
|
92
|
+
abort e.message unless e.output =~ /\Afalse/
|
93
|
+
logger.info "Installing gem '#{name}' with options: #{args.inspect}"
|
94
|
+
say "Installing gem '#{name}'...", :notice
|
95
|
+
gemfile do
|
96
|
+
source "https://rubygems.org"
|
97
|
+
gem name, *args
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# Use bundler's inline gemfile to install dependencies.
|
102
|
+
# See: https://bundler.io/v1.16/guides/bundler_in_a_single_file_ruby_script.html
|
103
|
+
#
|
104
|
+
# @yield A block to be executed in the context of Bundler's `gemfile` DSL
|
105
|
+
def use_gemfile(&block)
|
106
|
+
logger.info "Using a custom gemfile"
|
107
|
+
gemfile(true, &block)
|
108
|
+
end
|
109
|
+
|
83
110
|
# Loads a pre-defined workflow (FlatMergeWorkflow) from within another
|
84
111
|
# Workflow file
|
85
112
|
#
|
@@ -105,7 +132,7 @@ module GitReflow
|
|
105
132
|
@workflows
|
106
133
|
end
|
107
134
|
|
108
|
-
# Creates a singleton method on the
|
135
|
+
# Creates a singleton method on the included class
|
109
136
|
#
|
110
137
|
# This method will take any number of keyword parameters. If @defaults keyword is provided, and the given
|
111
138
|
# key(s) in the defaults are not provided as keyword parameters, then it will use the value given in the
|
@@ -130,7 +157,7 @@ module GitReflow
|
|
130
157
|
self.commands[name] = params
|
131
158
|
self.command_docs[name] = params
|
132
159
|
|
133
|
-
self.define_singleton_method(name) do
|
160
|
+
self.define_singleton_method(name) do |args = {}|
|
134
161
|
args_with_defaults = {}
|
135
162
|
args.each do |name, value|
|
136
163
|
if "#{value}".length <= 0 && !defaults[name].nil?
|
@@ -153,7 +180,7 @@ module GitReflow
|
|
153
180
|
args_with_defaults.merge!(argument_overrides) if argument_overrides.is_a?(Hash)
|
154
181
|
end
|
155
182
|
|
156
|
-
GitReflow.logger.
|
183
|
+
GitReflow.logger.info "Running command `#{name}` with args: #{args_with_defaults.inspect}..."
|
157
184
|
block.call(**args_with_defaults)
|
158
185
|
|
159
186
|
Array(callbacks[:after][name]).each do |block|
|
@@ -203,7 +230,7 @@ module GitReflow
|
|
203
230
|
end
|
204
231
|
end
|
205
232
|
|
206
|
-
# Creates a singleton method on the
|
233
|
+
# Creates a singleton method on the included class
|
207
234
|
#
|
208
235
|
# This method updates the help text associated with the provided command.
|
209
236
|
#
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"login": "reenhanced",
|
3
|
+
"id": 1,
|
4
|
+
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
5
|
+
"gravatar_id": "somehexcode",
|
6
|
+
"url": "https://api.github.com/users/reenhanced",
|
7
|
+
"name": "monalisa octocat",
|
8
|
+
"company": "GitHub",
|
9
|
+
"blog": "https://github.com/blog",
|
10
|
+
"location": "San Francisco",
|
11
|
+
"email": "octocat@github.com",
|
12
|
+
"hireable": false,
|
13
|
+
"bio": "There once was...",
|
14
|
+
"public_repos": 2,
|
15
|
+
"public_gists": 1,
|
16
|
+
"followers": 20,
|
17
|
+
"following": 0,
|
18
|
+
"html_url": "https://github.com/reenhanced",
|
19
|
+
"created_at": "2008-01-14T04:33:35Z",
|
20
|
+
"type": "User",
|
21
|
+
"total_private_repos": 100,
|
22
|
+
"owned_private_repos": 100,
|
23
|
+
"private_gists": 81,
|
24
|
+
"disk_usage": 10000,
|
25
|
+
"collaborators": 8,
|
26
|
+
"plan": {
|
27
|
+
"name": "Medium",
|
28
|
+
"space": 400,
|
29
|
+
"collaborators": 10,
|
30
|
+
"private_repos": 20
|
31
|
+
}
|
32
|
+
}
|
@@ -100,7 +100,7 @@ describe GitReflow::GitServer::GitHub::PullRequest do
|
|
100
100
|
context "Testing Nil Comments" do
|
101
101
|
before do
|
102
102
|
stub_request(:get, "https://api.github.com/repos/reenhanced/repo/pulls/2/comments?access_token=a1b2c3d4e5f6g7h8i9j0").
|
103
|
-
with(:headers => {'Accept'=>'application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1', 'Accept-Charset'=>'utf-8', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'token a1b2c3d4e5f6g7h8i9j0', 'User-Agent'=>'Github API Ruby Gem 0.
|
103
|
+
with(:headers => {'Accept'=>'application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1', 'Accept-Charset'=>'utf-8', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'token a1b2c3d4e5f6g7h8i9j0', 'User-Agent'=>'Github API Ruby Gem 0.19.0'}).
|
104
104
|
to_return(:status => 200, :body => "", :headers => {})
|
105
105
|
|
106
106
|
FakeGitHub.new(
|
@@ -78,7 +78,7 @@ describe GitReflow::GitServer::GitHub do
|
|
78
78
|
subject { github.authenticate }
|
79
79
|
|
80
80
|
before do
|
81
|
-
allow(GitReflow::GitServer::GitHub).to receive(:user).and_return(
|
81
|
+
allow(GitReflow::GitServer::GitHub).to receive(:user).and_return(user)
|
82
82
|
allow(github_api).to receive(:oauth).and_return(github_authorizations)
|
83
83
|
allow(github_api).to receive_message_chain(:oauth, :all).and_return([])
|
84
84
|
allow(github).to receive(:run).with('hostname', loud: false).and_return(hostname)
|
@@ -151,12 +151,86 @@ describe GitReflow::GitServer::GitHub do
|
|
151
151
|
body: { error: "GET https://api.github.com/authorizations: 401 Bad credentials" }
|
152
152
|
}}
|
153
153
|
|
154
|
+
before do
|
155
|
+
allow(GitReflow::Config).to receive(:get).and_call_original
|
156
|
+
allow(GitReflow::Config).to receive(:get).with('github.oauth-token').and_return(oauth_token_hash[:token])
|
157
|
+
allow(Github::Client).to receive(:new).and_return(github_api)
|
158
|
+
allow(github_authorizations).to receive(:authenticated?).and_return(true)
|
159
|
+
allow(github_api.oauth).to receive(:create).with({ scopes: ['repo'], note: "git-reflow (#{hostname})" }).and_return(oauth_token_hash)
|
160
|
+
|
161
|
+
stub_request(:get, %r{/user}).
|
162
|
+
to_return(
|
163
|
+
body: Fixture.new('authentication_failure.json').to_s,
|
164
|
+
status: 401,
|
165
|
+
headers: {'content-type' => 'application/json; charset=utf-8', status: 'Unauthorized'},
|
166
|
+
)
|
167
|
+
end
|
168
|
+
|
169
|
+
it "notifies the user of successful setup" do
|
170
|
+
expect { subject }.to have_said "Your GitHub account was successfully setup!", :success
|
171
|
+
end
|
172
|
+
|
173
|
+
it "creates a new GitHub oauth token" do
|
174
|
+
expect(github_api.oauth).to receive(:create).and_return(oauth_token_hash)
|
175
|
+
subject
|
176
|
+
end
|
177
|
+
|
178
|
+
it "creates git config keys for github connections" do
|
179
|
+
expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.site \"#{github_site}\"", blocking: false
|
180
|
+
expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.endpoint \"#{github_api_endpoint}\"", blocking: false
|
181
|
+
expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.oauth-token \"#{oauth_token_hash[:token]}\"", blocking: false
|
182
|
+
expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all reflow.git-server \"GitHub\"", blocking: false
|
183
|
+
end
|
184
|
+
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
context 'already authenticated' do
|
189
|
+
let(:oauth_token) { "abc123" }
|
190
|
+
|
191
|
+
before do
|
192
|
+
allow(GitReflow::Config).to receive(:get).and_call_original
|
193
|
+
allow(GitReflow::Config).to receive(:get).with('github.oauth-token').and_return(oauth_token)
|
194
|
+
end
|
195
|
+
|
196
|
+
context "and authentication token is still valid" do
|
197
|
+
before do
|
198
|
+
stub_request(:get, %r{/user}).
|
199
|
+
to_return(
|
200
|
+
body: Fixture.new('users/user.json').to_s,
|
201
|
+
status: 200,
|
202
|
+
headers: { content_type: "application/json; charset=utf-8" }
|
203
|
+
)
|
204
|
+
|
205
|
+
allow(Github::Client).to receive(:new).and_return(github_api)
|
206
|
+
allow(github_api).to receive(:oauth).and_return(github_authorizations)
|
207
|
+
allow(github_authorizations).to receive(:authenticated?).and_return(true)
|
208
|
+
allow(github_api.oauth).to receive(:create).with({ scopes: ['repo'], note: "git-reflow (#{hostname})" }).and_return(oauth_token_hash)
|
209
|
+
end
|
210
|
+
|
211
|
+
it "resolves all missing git-reflow configurations" do
|
212
|
+
expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.site \"#{github_site}\"", blocking: false
|
213
|
+
expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.endpoint \"#{github_api_endpoint}\"", blocking: false
|
214
|
+
expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all reflow.git-server \"GitHub\"", blocking: false
|
215
|
+
expect { subject }.to have_said "Your GitHub account was already setup with: "
|
216
|
+
expect { subject }.to have_said "\tUser Name: #{user}"
|
217
|
+
expect { subject }.to have_said "\tEndpoint: #{github_api_endpoint}"
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
context "and authentication token is expired" do
|
222
|
+
let(:unauthorized_error_response) {{
|
223
|
+
response_headers: {'content-type' => 'application/json; charset=utf-8', status: 'Unauthorized'},
|
224
|
+
method: 'GET',
|
225
|
+
status: '401',
|
226
|
+
body: { error: "GET https://api.github.com/authorizations: 401 Bad credentials" }
|
227
|
+
}}
|
228
|
+
|
154
229
|
before do
|
155
230
|
allow(Github::Client).to receive(:new).and_raise Github::Error::Unauthorized.new(unauthorized_error_response)
|
156
231
|
end
|
157
232
|
|
158
|
-
it "
|
159
|
-
expect { subject }.to have_said "Github Authentication Error: #{Github::Error::Unauthorized.new(unauthorized_error_response).inspect}", :error
|
233
|
+
it "requests a new oauth token" do
|
160
234
|
end
|
161
235
|
end
|
162
236
|
end
|
@@ -491,14 +491,42 @@ describe GitReflow::GitServer::PullRequest do
|
|
491
491
|
allow(GitReflow::Config).to receive(:get).with('reflow.always-cleanup').and_return('false')
|
492
492
|
end
|
493
493
|
|
494
|
-
context "and
|
495
|
-
|
494
|
+
context "and always cleanup local config is set" do
|
495
|
+
end
|
496
|
+
|
497
|
+
context "and always cleanup remote config is set" do
|
498
|
+
end
|
499
|
+
|
500
|
+
context "and user chooses to cleanup local only" do
|
501
|
+
before do
|
502
|
+
expect(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('yes')
|
503
|
+
allow(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('no')
|
504
|
+
end
|
505
|
+
it { should be_truthy }
|
506
|
+
end
|
507
|
+
|
508
|
+
context "and user chooses to cleanup remote only" do
|
509
|
+
before do
|
510
|
+
expect(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('no')
|
511
|
+
expect(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('yes')
|
512
|
+
end
|
496
513
|
it { should be_truthy }
|
497
514
|
end
|
498
515
|
|
499
|
-
context "and user chooses
|
500
|
-
before
|
501
|
-
|
516
|
+
context "and user chooses to cleanup local and remote" do
|
517
|
+
before do
|
518
|
+
allow(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('yes')
|
519
|
+
allow(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('yes')
|
520
|
+
end
|
521
|
+
it { should be_truthy }
|
522
|
+
end
|
523
|
+
|
524
|
+
context "and user chooses to cleanup neither local nor remote" do
|
525
|
+
before do
|
526
|
+
expect(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('no')
|
527
|
+
allow(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('no')
|
528
|
+
end
|
529
|
+
it { should be_falsey }
|
502
530
|
end
|
503
531
|
end
|
504
532
|
end
|
@@ -6,6 +6,23 @@ describe GitReflow::Workflow do
|
|
6
6
|
include GitReflow::Workflow
|
7
7
|
end
|
8
8
|
|
9
|
+
class DummyBundler
|
10
|
+
def gemfile(&block)
|
11
|
+
instance_eval &block
|
12
|
+
end
|
13
|
+
|
14
|
+
def source(name); end
|
15
|
+
def gem(name, *args); end
|
16
|
+
end
|
17
|
+
|
18
|
+
class DummyGemifiedWorkflow
|
19
|
+
include GitReflow::Workflow
|
20
|
+
|
21
|
+
command :whirl do
|
22
|
+
puts "whirl"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
9
26
|
let(:workflow) { DummyWorkflow }
|
10
27
|
let(:loader) { double() }
|
11
28
|
|
@@ -164,9 +181,6 @@ describe GitReflow::Workflow do
|
|
164
181
|
|
165
182
|
describe ".command" do
|
166
183
|
it "creates a class method for a bogus command" do
|
167
|
-
class DummyWorkflow
|
168
|
-
include GitReflow::Workflow
|
169
|
-
end
|
170
184
|
workflow.command :bogus do
|
171
185
|
GitReflow.say "Woohoo"
|
172
186
|
end
|
@@ -235,4 +249,56 @@ describe GitReflow::Workflow do
|
|
235
249
|
end
|
236
250
|
end
|
237
251
|
|
252
|
+
describe ".use_gem(name, *ags)" do
|
253
|
+
let(:mock_bundler) { DummyBundler.new }
|
254
|
+
|
255
|
+
before do
|
256
|
+
allow(DummyGemifiedWorkflow).to receive(:gemfile) do |&block|
|
257
|
+
mock_bundler.gemfile(&block)
|
258
|
+
end
|
259
|
+
stub_run_for(DummyGemifiedWorkflow)
|
260
|
+
end
|
261
|
+
|
262
|
+
it "Installs a gem using Bundler's inline gemfile" do
|
263
|
+
stub_command(command: "gem list -ie whirly", options: { loud: false, raise: true }, return_value: "false")
|
264
|
+
expect(mock_bundler).to receive(:source).with("https://rubygems.org")
|
265
|
+
expect(mock_bundler).to receive(:gem).with("whirly", "0.2.6")
|
266
|
+
|
267
|
+
DummyGemifiedWorkflow.class_eval do
|
268
|
+
use_gem "whirly", "0.2.6"
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
it "Uses an existing gem if it's already installed" do
|
273
|
+
stub_command(command: "gem list -ie whirly", options: { loud: false, raise: false }, return_value: "true")
|
274
|
+
expect(DummyGemifiedWorkflow).to_not receive(:gemfile)
|
275
|
+
|
276
|
+
DummyGemifiedWorkflow.class_eval do
|
277
|
+
use_gem "whirly", "0.2.6"
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
describe ".use_gemfile(&block)" do
|
283
|
+
let(:mock_bundler) { DummyBundler.new }
|
284
|
+
|
285
|
+
before do
|
286
|
+
allow(DummyGemifiedWorkflow).to receive(:gemfile) do |&block|
|
287
|
+
mock_bundler.gemfile(&block)
|
288
|
+
end
|
289
|
+
stub_run_for(DummyGemifiedWorkflow)
|
290
|
+
end
|
291
|
+
|
292
|
+
it "runs bundler's inline gemfile with the provided block" do
|
293
|
+
expect(mock_bundler).to receive(:source).with("https://rubygems.org")
|
294
|
+
expect(mock_bundler).to receive(:gem).with("standard")
|
295
|
+
|
296
|
+
DummyGemifiedWorkflow.class_eval do
|
297
|
+
use_gemfile do
|
298
|
+
source "https://rubygems.org"
|
299
|
+
gem "standard"
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
238
304
|
end
|
data/spec/lib/git_reflow_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_reflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valentino Stoll
|
8
8
|
- Robert Stern
|
9
9
|
- Nicholas Hance
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-03-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: appraisal
|
@@ -18,30 +18,30 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.
|
21
|
+
version: 2.4.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 2.
|
28
|
+
version: 2.4.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
30
|
+
name: chronic
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - "
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
35
|
+
version: '0'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - "
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
44
|
+
name: github_changelog_generator
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '0'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
58
|
+
name: ruby_jard
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
@@ -74,14 +74,14 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 13.0.3
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
84
|
+
version: 13.0.3
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: rdoc
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,14 +102,14 @@ dependencies:
|
|
102
102
|
requirements:
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 3.
|
105
|
+
version: '3.10'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 3.
|
112
|
+
version: '3.10'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: webmock
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,84 +130,98 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - '='
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: 1.
|
133
|
+
version: '1.4'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
138
|
- - '='
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version: 1.
|
140
|
+
version: '1.4'
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
|
-
name:
|
142
|
+
name: bundler
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
145
|
- - ">="
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
147
|
+
version: 1.10.0
|
148
148
|
type: :runtime
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
154
|
+
version: 1.10.0
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
|
-
name:
|
156
|
+
name: codenamev_bitbucket_api
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
|
-
- -
|
159
|
+
- - '='
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
161
|
+
version: 0.4.1
|
162
162
|
type: :runtime
|
163
163
|
prerelease: false
|
164
164
|
version_requirements: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
|
-
- -
|
166
|
+
- - '='
|
167
167
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
168
|
+
version: 0.4.1
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
|
-
name:
|
170
|
+
name: colorize
|
171
171
|
requirement: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
173
|
- - ">="
|
174
174
|
- !ruby/object:Gem::Version
|
175
|
-
version:
|
175
|
+
version: 0.8.1
|
176
176
|
type: :runtime
|
177
177
|
prerelease: false
|
178
178
|
version_requirements: !ruby/object:Gem::Requirement
|
179
179
|
requirements:
|
180
180
|
- - ">="
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version:
|
182
|
+
version: 0.8.1
|
183
183
|
- !ruby/object:Gem::Dependency
|
184
184
|
name: github_api
|
185
185
|
requirement: !ruby/object:Gem::Requirement
|
186
186
|
requirements:
|
187
187
|
- - '='
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
version: 0.
|
189
|
+
version: '0.19'
|
190
190
|
type: :runtime
|
191
191
|
prerelease: false
|
192
192
|
version_requirements: !ruby/object:Gem::Requirement
|
193
193
|
requirements:
|
194
194
|
- - '='
|
195
195
|
- !ruby/object:Gem::Version
|
196
|
-
version: 0.
|
196
|
+
version: '0.19'
|
197
197
|
- !ruby/object:Gem::Dependency
|
198
|
-
name:
|
198
|
+
name: highline
|
199
199
|
requirement: !ruby/object:Gem::Requirement
|
200
200
|
requirements:
|
201
|
-
- -
|
201
|
+
- - ">="
|
202
202
|
- !ruby/object:Gem::Version
|
203
|
-
version: 0
|
203
|
+
version: '0'
|
204
204
|
type: :runtime
|
205
205
|
prerelease: false
|
206
206
|
version_requirements: !ruby/object:Gem::Requirement
|
207
207
|
requirements:
|
208
|
-
- -
|
208
|
+
- - ">="
|
209
209
|
- !ruby/object:Gem::Version
|
210
|
-
version: 0
|
210
|
+
version: '0'
|
211
|
+
- !ruby/object:Gem::Dependency
|
212
|
+
name: httpclient
|
213
|
+
requirement: !ruby/object:Gem::Requirement
|
214
|
+
requirements:
|
215
|
+
- - ">="
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '0'
|
218
|
+
type: :runtime
|
219
|
+
prerelease: false
|
220
|
+
version_requirements: !ruby/object:Gem::Requirement
|
221
|
+
requirements:
|
222
|
+
- - ">="
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '0'
|
211
225
|
description: Git Reflow manages your git workflow.
|
212
226
|
email:
|
213
227
|
- dev@reenhanced.com
|
@@ -216,6 +230,7 @@ executables:
|
|
216
230
|
extensions: []
|
217
231
|
extra_rdoc_files: []
|
218
232
|
files:
|
233
|
+
- ".github/workflows/multi-ruby-tests.yml"
|
219
234
|
- ".gitignore"
|
220
235
|
- ".rubocop.yml"
|
221
236
|
- ".ruby-version"
|
@@ -226,10 +241,10 @@ files:
|
|
226
241
|
- LICENSE
|
227
242
|
- README.md
|
228
243
|
- Rakefile
|
244
|
+
- Workflow
|
229
245
|
- _config.yml
|
230
246
|
- bin/console
|
231
247
|
- bin/setup
|
232
|
-
- circle.yml
|
233
248
|
- exe/git-reflow
|
234
249
|
- git_reflow.gemspec
|
235
250
|
- lib/git_reflow.rb
|
@@ -254,6 +269,7 @@ files:
|
|
254
269
|
- lib/git_reflow/workflow.rb
|
255
270
|
- lib/git_reflow/workflows/FlatMergeWorkflow
|
256
271
|
- lib/git_reflow/workflows/core.rb
|
272
|
+
- spec/fixtures/authentication_failure.json
|
257
273
|
- spec/fixtures/awesome_workflow.rb
|
258
274
|
- spec/fixtures/git/git_config
|
259
275
|
- spec/fixtures/issues/comment.json.erb
|
@@ -275,6 +291,7 @@ files:
|
|
275
291
|
- spec/fixtures/repositories/commit.json.erb
|
276
292
|
- spec/fixtures/repositories/commits.json.erb
|
277
293
|
- spec/fixtures/repositories/statuses.json
|
294
|
+
- spec/fixtures/users/user.json
|
278
295
|
- spec/lib/git_reflow/config_spec.rb
|
279
296
|
- spec/lib/git_reflow/git_helpers_spec.rb
|
280
297
|
- spec/lib/git_reflow/git_server/bit_bucket_spec.rb
|
@@ -318,12 +335,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
318
335
|
- !ruby/object:Gem::Version
|
319
336
|
version: '0'
|
320
337
|
requirements: []
|
321
|
-
|
322
|
-
|
323
|
-
signing_key:
|
338
|
+
rubygems_version: 3.2.3
|
339
|
+
signing_key:
|
324
340
|
specification_version: 4
|
325
341
|
summary: A better git process
|
326
342
|
test_files:
|
343
|
+
- spec/fixtures/authentication_failure.json
|
327
344
|
- spec/fixtures/awesome_workflow.rb
|
328
345
|
- spec/fixtures/git/git_config
|
329
346
|
- spec/fixtures/issues/comment.json.erb
|
@@ -345,6 +362,7 @@ test_files:
|
|
345
362
|
- spec/fixtures/repositories/commit.json.erb
|
346
363
|
- spec/fixtures/repositories/commits.json.erb
|
347
364
|
- spec/fixtures/repositories/statuses.json
|
365
|
+
- spec/fixtures/users/user.json
|
348
366
|
- spec/lib/git_reflow/config_spec.rb
|
349
367
|
- spec/lib/git_reflow/git_helpers_spec.rb
|
350
368
|
- spec/lib/git_reflow/git_server/bit_bucket_spec.rb
|