gitx 3.0.2 → 3.2.0.ci.231.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +5 -2
- data/.ruby-version +1 -1
- data/README.md +4 -4
- data/gitx.gemspec +22 -24
- data/lib/gitx/cli/base_command.rb +1 -1
- data/lib/gitx/cli/buildtag_command.rb +2 -1
- data/lib/gitx/cli/cleanup_command.rb +1 -0
- data/lib/gitx/cli/integrate_command.rb +4 -5
- data/lib/gitx/cli/nuke_command.rb +3 -0
- data/lib/gitx/cli/release_command.rb +11 -6
- data/lib/gitx/cli/review_command.rb +6 -6
- data/lib/gitx/cli/start_command.rb +9 -7
- data/lib/gitx/cli/update_command.rb +1 -1
- data/lib/gitx/configuration.rb +4 -0
- data/lib/gitx/defaults.yml +4 -0
- data/lib/gitx/executor.rb +1 -0
- data/lib/gitx/github.rb +10 -7
- data/lib/gitx/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status.yml +2 -1
- data/spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status_and_then_add_label.yml +228 -0
- data/spec/gitx/cli/integrate_command_spec.rb +3 -2
- data/spec/gitx/cli/release_command_spec.rb +35 -0
- data/spec/gitx/cli/start_command_spec.rb +21 -2
- data/spec/gitx/cli/update_command_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- metadata +31 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5b8587ddcc46ef139e7da6a96c086a1a22d36f3deeeaef1fe1ca821e715788fc
|
4
|
+
data.tar.gz: 4d6438cd1e56cdc71a884166c2fddf6c83603394a1ff955f56b64936cb8d9dde
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2654037ef33ad4715d93a8c3d24b0c7b9ee592b57f1200529bf46251481574b57df694d2832af190dd2efc6be2db63d7e327c79add1db503e325055264469196
|
7
|
+
data.tar.gz: 82fae8f49f8db3ee90166dae76f5143cbedb34f2553307a571dae4894bd6831910f3d64a13d0cc8410a472f5a9060df347134029fb2d2626fdf0edcd8d9aa2b4
|
data/.rubocop.yml
CHANGED
@@ -6,6 +6,9 @@
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
+
AllCops:
|
10
|
+
TargetRubyVersion: '2.6'
|
11
|
+
|
9
12
|
FileName:
|
10
13
|
Exclude:
|
11
14
|
- bin/*
|
@@ -25,7 +28,7 @@ Metrics/AbcSize:
|
|
25
28
|
|
26
29
|
# Offense count: 2
|
27
30
|
Metrics/CyclomaticComplexity:
|
28
|
-
Max:
|
31
|
+
Max: 8
|
29
32
|
|
30
33
|
# Offense count: 5
|
31
34
|
# Configuration parameters: CountComments.
|
@@ -35,7 +38,7 @@ Metrics/MethodLength:
|
|
35
38
|
# Offense count: 1
|
36
39
|
# Configuration parameters: CountComments.
|
37
40
|
Metrics/ModuleLength:
|
38
|
-
Max:
|
41
|
+
Max: 150
|
39
42
|
|
40
43
|
# Offense count: 3
|
41
44
|
Style/RescueModifier:
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3
|
1
|
+
2.7.3
|
data/README.md
CHANGED
@@ -47,13 +47,13 @@ This setting is cleared when a reviewer approves or rejects the pull request.
|
|
47
47
|
|
48
48
|
## git release <feature_branch_name (optional, default: current_branch)
|
49
49
|
|
50
|
-
release the feature branch to master. This operation will perform the following:
|
50
|
+
release the feature branch to the base branch (by default, master). This operation will perform the following:
|
51
51
|
|
52
52
|
* pull latest code from remote feature branch
|
53
|
-
* pull latest code from
|
53
|
+
* pull latest code from the base branch
|
54
54
|
* prompt user to confirm they actually want to perform the release
|
55
55
|
* check if pull request commit status is currently successful
|
56
|
-
* merge current branch into
|
56
|
+
* merge current branch into the base branch (or add release label if configured)
|
57
57
|
* (optional) cleanup merged branches from remote server
|
58
58
|
|
59
59
|
options:
|
@@ -63,7 +63,7 @@ options:
|
|
63
63
|
|
64
64
|
## git cleanup
|
65
65
|
|
66
|
-
delete released branches after they have been merged into
|
66
|
+
delete released branches after they have been merged into the base branch.
|
67
67
|
|
68
68
|
## git nuke <aggregate_branch_name>
|
69
69
|
|
data/gitx.gemspec
CHANGED
@@ -1,40 +1,38 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
4
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
3
|
require 'gitx/version'
|
6
4
|
|
7
5
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name
|
9
|
-
spec.
|
10
|
-
spec.
|
11
|
-
spec.
|
12
|
-
spec.
|
13
|
-
spec.
|
14
|
-
spec.
|
15
|
-
spec.
|
6
|
+
spec.name = 'gitx'
|
7
|
+
spec.authors = ['Ryan Sonnek']
|
8
|
+
spec.email = ['ryan.sonnek@gmail.com']
|
9
|
+
spec.description = 'Git eXtensions for improved development workflows'
|
10
|
+
spec.summary = 'Utility scripts for Git to increase productivity for common operations'
|
11
|
+
spec.homepage = ''
|
12
|
+
spec.license = 'MIT'
|
13
|
+
spec.required_ruby_version = '>= 2.6.7'
|
16
14
|
|
17
|
-
spec.files
|
18
|
-
spec.executables
|
19
|
-
spec.test_files
|
20
|
-
spec.require_paths
|
15
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ['lib']
|
21
19
|
|
22
|
-
spec.add_runtime_dependency 'rugged', '~> 0.26.0'
|
23
|
-
spec.add_runtime_dependency 'thor'
|
24
20
|
spec.add_runtime_dependency 'octokit'
|
21
|
+
spec.add_runtime_dependency 'rugged', '~> 0.27.10'
|
22
|
+
spec.add_runtime_dependency 'thor'
|
25
23
|
|
26
24
|
spec.add_development_dependency 'bundler'
|
25
|
+
spec.add_development_dependency 'coveralls'
|
26
|
+
spec.add_development_dependency 'pry'
|
27
27
|
spec.add_development_dependency 'rake'
|
28
28
|
spec.add_development_dependency 'rspec', '>= 3.0'
|
29
|
-
spec.add_development_dependency '
|
30
|
-
spec.add_development_dependency 'webmock'
|
29
|
+
spec.add_development_dependency 'rubocop'
|
31
30
|
spec.add_development_dependency 'timecop'
|
32
31
|
spec.add_development_dependency 'vcr'
|
33
|
-
spec.add_development_dependency '
|
34
|
-
spec.add_development_dependency 'rubocop'
|
32
|
+
spec.add_development_dependency 'webmock'
|
35
33
|
|
36
34
|
# configure gem version for continuous integration builds
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
version = Gitx::VERSION
|
36
|
+
version = "#{version}.ci.#{ENV['TRAVIS_JOB_NUMBER']}" if ENV['TRAVIS_JOB_NUMBER']
|
37
|
+
spec.version = version
|
40
38
|
end
|
@@ -13,6 +13,7 @@ module Gitx
|
|
13
13
|
method_option :message, type: :string, aliases: '-m', desc: 'message to attach to the buildtag'
|
14
14
|
def buildtag
|
15
15
|
raise "Branch must be one of the supported taggable branches: #{config.taggable_branches}" unless config.taggable_branch?(branch_name)
|
16
|
+
|
16
17
|
run_git_cmd 'tag', build_tag, '--annotate', '--message', label
|
17
18
|
run_git_cmd 'push', 'origin', build_tag
|
18
19
|
end
|
@@ -28,7 +29,7 @@ module Gitx
|
|
28
29
|
end
|
29
30
|
|
30
31
|
def build_tag
|
31
|
-
@
|
32
|
+
@build_tag ||= [
|
32
33
|
BUILD_TAG_PREFIX,
|
33
34
|
branch_name,
|
34
35
|
utc_timestamp
|
@@ -34,6 +34,7 @@ module Gitx
|
|
34
34
|
|
35
35
|
def pull_request_for_branch(branch)
|
36
36
|
return nil if config.reserved_branch?(branch)
|
37
|
+
|
37
38
|
find_or_create_pull_request(branch)
|
38
39
|
end
|
39
40
|
|
@@ -41,7 +42,7 @@ module Gitx
|
|
41
42
|
fetch_remote_branch(integration_branch)
|
42
43
|
begin
|
43
44
|
run_git_cmd 'merge', '--no-ff', '--message', commit_message(branch, integration_branch, pull_request), branch
|
44
|
-
rescue
|
45
|
+
rescue Gitx::Executor::ExecutionError
|
45
46
|
raise MergeError, "Merge conflict occurred. Please fix merge conflict and rerun command with --resume #{branch} flag"
|
46
47
|
end
|
47
48
|
run_git_cmd 'push', 'origin', 'HEAD'
|
@@ -54,11 +55,9 @@ module Gitx
|
|
54
55
|
end
|
55
56
|
|
56
57
|
def feature_branch_name
|
57
|
-
@
|
58
|
+
@feature_branch_name ||= begin
|
58
59
|
feature_branch = options[:resume] || current_branch.name
|
59
|
-
until local_branch_exists?(feature_branch)
|
60
|
-
feature_branch = ask("#{feature_branch} does not exist. Please select one of the available local branches: #{local_branches}")
|
61
|
-
end
|
60
|
+
feature_branch = ask("#{feature_branch} does not exist. Please select one of the available local branches: #{local_branches}") until local_branch_exists?(feature_branch)
|
62
61
|
feature_branch
|
63
62
|
end
|
64
63
|
end
|
@@ -14,6 +14,7 @@ module Gitx
|
|
14
14
|
|
15
15
|
last_known_good_tag = current_build_tag(good_branch)
|
16
16
|
return unless yes?("Reset #{bad_branch} to #{last_known_good_tag}? (y/n)", :green)
|
17
|
+
|
17
18
|
assert_aggregate_branch!(bad_branch)
|
18
19
|
return if migrations_need_to_be_reverted?(bad_branch, last_known_good_tag)
|
19
20
|
|
@@ -34,6 +35,7 @@ module Gitx
|
|
34
35
|
|
35
36
|
def migrations_need_to_be_reverted?(bad_branch, last_known_good_tag)
|
36
37
|
return false unless File.exist?('db/migrate')
|
38
|
+
|
37
39
|
outdated_migrations = run_git_cmd('diff', "#{last_known_good_tag}...#{bad_branch}", '--name-only', 'db/migrate').split
|
38
40
|
return false if outdated_migrations.empty?
|
39
41
|
|
@@ -49,6 +51,7 @@ module Gitx
|
|
49
51
|
def current_build_tag(branch)
|
50
52
|
last_build_tag = build_tags_for_branch(branch).last
|
51
53
|
raise "No known good tag found for branch: #{branch}. Verify tag exists via `git tag -l`" unless last_build_tag
|
54
|
+
|
52
55
|
last_build_tag
|
53
56
|
end
|
54
57
|
|
@@ -11,9 +11,10 @@ module Gitx
|
|
11
11
|
desc 'release', 'release the current branch to production'
|
12
12
|
method_option :cleanup, type: :boolean, desc: 'cleanup merged branches after release'
|
13
13
|
def release(branch = nil)
|
14
|
-
return unless yes?("Release #{current_branch.name} to #{config.base_branch}? (y/n)", :green)
|
15
|
-
|
16
14
|
branch ||= current_branch.name
|
15
|
+
|
16
|
+
return unless yes?("Release #{branch} to #{config.base_branch}? (y/n)", :green)
|
17
|
+
|
17
18
|
assert_not_protected_branch!(branch, 'release')
|
18
19
|
checkout_branch(branch)
|
19
20
|
run_git_cmd 'update'
|
@@ -21,10 +22,14 @@ module Gitx
|
|
21
22
|
pull_request = find_or_create_pull_request(branch)
|
22
23
|
return unless confirm_branch_status?(branch)
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
if (label = config.release_label)
|
26
|
+
label_pull_request pull_request, label
|
27
|
+
else
|
28
|
+
checkout_branch config.base_branch
|
29
|
+
run_git_cmd 'pull', 'origin', config.base_branch
|
30
|
+
run_git_cmd 'merge', '--no-ff', '--message', commit_message(branch, pull_request), branch
|
31
|
+
run_git_cmd 'push', 'origin', 'HEAD'
|
32
|
+
end
|
28
33
|
|
29
34
|
after_release
|
30
35
|
end
|
@@ -9,28 +9,28 @@ module Gitx
|
|
9
9
|
include Gitx::Github
|
10
10
|
|
11
11
|
BUMP_COMMENT_PREFIX = '[gitx] review bump :tada:'.freeze
|
12
|
-
BUMP_COMMENT_FOOTER = <<-
|
12
|
+
BUMP_COMMENT_FOOTER = <<-MESSAGE.dedent
|
13
13
|
# Bump comments should include:
|
14
14
|
# * Summary of what changed
|
15
15
|
#
|
16
16
|
# This footer will automatically be stripped from the created comment
|
17
|
-
|
17
|
+
MESSAGE
|
18
18
|
APPROVAL_COMMENT_PREFIX = '[gitx] review approved :shipit:'.freeze
|
19
|
-
APPROVAL_COMMENT_FOOTER = <<-
|
19
|
+
APPROVAL_COMMENT_FOOTER = <<-MESSAGE.dedent
|
20
20
|
# Approval comments can include:
|
21
21
|
# * Feedback
|
22
22
|
# * Follow-up items for after release
|
23
23
|
#
|
24
24
|
# This footer will automatically be stripped from the created comment
|
25
|
-
|
25
|
+
MESSAGE
|
26
26
|
REJECTION_COMMENT_PREFIX = '[gitx] review rejected'.freeze
|
27
|
-
REJECTION_COMMENT_FOOTER = <<-
|
27
|
+
REJECTION_COMMENT_FOOTER = <<-MESSAGE.dedent
|
28
28
|
# Rejection comments should include:
|
29
29
|
# * Feedback
|
30
30
|
# * Required changes before approved
|
31
31
|
#
|
32
32
|
# This footer will automatically be stripped from the created comment
|
33
|
-
|
33
|
+
MESSAGE
|
34
34
|
|
35
35
|
desc 'review', 'Create or update a pull request on github'
|
36
36
|
method_option :title, type: :string, aliases: '-t', desc: 'pull request title'
|
@@ -6,14 +6,12 @@ module Gitx
|
|
6
6
|
module Cli
|
7
7
|
class StartCommand < BaseCommand
|
8
8
|
EXAMPLE_BRANCH_NAMES = %w[api-fix-invalid-auth desktop-cleanup-avatar-markup share-form-add-edit-link].freeze
|
9
|
-
VALID_BRANCH_NAME_REGEX = /^[A-Za-z0-9\-_]
|
9
|
+
VALID_BRANCH_NAME_REGEX = /^[A-Za-z0-9\-_]+$/.freeze
|
10
10
|
|
11
11
|
desc 'start', 'start a new git branch with latest changes from master'
|
12
|
-
method_option :issue, type: :
|
12
|
+
method_option :issue, type: :string, aliases: '-i', desc: 'Issue identifier'
|
13
13
|
def start(branch_name = nil)
|
14
|
-
until valid_new_branch_name?(branch_name)
|
15
|
-
branch_name = ask("What would you like to name your branch? (ex: #{EXAMPLE_BRANCH_NAMES.sample})")
|
16
|
-
end
|
14
|
+
branch_name = ask("What would you like to name your branch? (ex: #{EXAMPLE_BRANCH_NAMES.sample})") until valid_new_branch_name?(branch_name)
|
17
15
|
|
18
16
|
checkout_branch config.base_branch
|
19
17
|
run_git_cmd 'pull'
|
@@ -26,18 +24,22 @@ module Gitx
|
|
26
24
|
|
27
25
|
def commit_message(branch_name)
|
28
26
|
message = "[gitx] Start work on #{branch_name}"
|
29
|
-
|
27
|
+
if (issue = options[:issue])
|
28
|
+
issue = issue.dup.prepend('#') if issue =~ /\A\d+\z/
|
29
|
+
message += "\n\nConnected to #{issue}"
|
30
|
+
end
|
30
31
|
message
|
31
32
|
end
|
32
33
|
|
33
34
|
def valid_new_branch_name?(branch)
|
34
35
|
return false if repo_branches.include?(branch)
|
36
|
+
|
35
37
|
Rugged::Reference.valid_name?("refs/heads/#{branch}")
|
36
38
|
end
|
37
39
|
|
38
40
|
# get list of local and remote branches
|
39
41
|
def repo_branches
|
40
|
-
@
|
42
|
+
@repo_branches ||= repo.branches.each_name.map do |branch|
|
41
43
|
branch.gsub('origin/', '')
|
42
44
|
end
|
43
45
|
end
|
data/lib/gitx/configuration.rb
CHANGED
data/lib/gitx/defaults.yml
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
# default base branch
|
3
3
|
base_branch: master
|
4
4
|
|
5
|
+
# Label to use for releasing a pull request, if this is set a label will be
|
6
|
+
# added to the PR rather than merging to the base branch
|
7
|
+
release_label:
|
8
|
+
|
5
9
|
# list of branches eligable for integration
|
6
10
|
aggregate_branches:
|
7
11
|
- staging
|
data/lib/gitx/executor.rb
CHANGED
data/lib/gitx/github.rb
CHANGED
@@ -7,7 +7,7 @@ module Gitx
|
|
7
7
|
GLOBAL_CONFIG_FILE = '~/.config/gitx/github.yml'.freeze
|
8
8
|
REVIEW_CONTEXT = 'peer_review'.freeze
|
9
9
|
CLIENT_URL = 'https://github.com/wireframe/gitx'.freeze
|
10
|
-
PULL_REQUEST_FOOTER = <<-
|
10
|
+
PULL_REQUEST_FOOTER = <<-MESSAGE.dedent
|
11
11
|
# Pull Request Protips(tm):
|
12
12
|
# * Describe how this change accomplishes the task at hand
|
13
13
|
# * Use GitHub flavored Markdown http://github.github.com/github-flavored-markdown/
|
@@ -16,7 +16,7 @@ module Gitx
|
|
16
16
|
# * Review CONTRIBUTING.md for relevant workflow requirements
|
17
17
|
#
|
18
18
|
# This footer will automatically be stripped from the pull request description
|
19
|
-
|
19
|
+
MESSAGE
|
20
20
|
|
21
21
|
def find_or_create_pull_request(branch)
|
22
22
|
pull_request = find_pull_request(branch)
|
@@ -57,6 +57,10 @@ module Gitx
|
|
57
57
|
github_client.create_status(github_slug, commit_sha, state, context: REVIEW_CONTEXT, description: description)
|
58
58
|
end
|
59
59
|
|
60
|
+
def label_pull_request(pull_request, label)
|
61
|
+
github_client.add_labels_to_an_issue(github_slug, pull_request.number, [label])
|
62
|
+
end
|
63
|
+
|
60
64
|
# @see http://developer.github.com/v3/pulls/
|
61
65
|
def create_pull_request(branch)
|
62
66
|
say 'Creating pull request for '
|
@@ -124,7 +128,7 @@ module Gitx
|
|
124
128
|
end
|
125
129
|
|
126
130
|
def github_client
|
127
|
-
@
|
131
|
+
@github_client ||= Octokit::Client.new(access_token: authorization_token)
|
128
132
|
end
|
129
133
|
|
130
134
|
# @return [String] github username (ex: 'wireframe') of the current github.user
|
@@ -132,6 +136,7 @@ module Gitx
|
|
132
136
|
def username
|
133
137
|
username = repo.config['github.user']
|
134
138
|
raise "Github user not configured. Run: `git config --global github.user 'me@email.com'`" unless username
|
139
|
+
|
135
140
|
username
|
136
141
|
end
|
137
142
|
|
@@ -142,7 +147,7 @@ module Gitx
|
|
142
147
|
# https://github.com/wireframe/gitx.git #=> wireframe/gitx
|
143
148
|
def github_slug
|
144
149
|
remote = repo.config['remote.origin.url']
|
145
|
-
remote.to_s.gsub(/\.git$/, '').split(%r{[
|
150
|
+
remote.to_s.gsub(/\.git$/, '').split(%r{[:/]}).last(2).join('/')
|
146
151
|
end
|
147
152
|
|
148
153
|
def github_organization
|
@@ -154,9 +159,7 @@ module Gitx
|
|
154
159
|
end
|
155
160
|
|
156
161
|
def global_config
|
157
|
-
@
|
158
|
-
File.exist?(global_config_file) ? YAML.load_file(global_config_file) : {}
|
159
|
-
end
|
162
|
+
@global_config ||= File.exist?(global_config_file) ? YAML.load_file(global_config_file) : {}
|
160
163
|
end
|
161
164
|
|
162
165
|
def save_global_config(options)
|
data/lib/gitx/version.rb
CHANGED
data/spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status_and_then_add_label.yml
ADDED
@@ -0,0 +1,228 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.github.com/repos/wireframe/gitx/pulls?head=wireframe:feature-branch&state=open
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/vnd.github.v3+json
|
12
|
+
User-Agent:
|
13
|
+
- Octokit Ruby Gem 3.2.0
|
14
|
+
Authorization:
|
15
|
+
- token 123123
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Server:
|
24
|
+
- GitHub.com
|
25
|
+
Date:
|
26
|
+
- Tue, 05 Aug 2014 16:36:03 GMT
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Status:
|
30
|
+
- 200 OK
|
31
|
+
X-Ratelimit-Limit:
|
32
|
+
- '5000'
|
33
|
+
X-Ratelimit-Remaining:
|
34
|
+
- '4991'
|
35
|
+
X-Ratelimit-Reset:
|
36
|
+
- '1407257585'
|
37
|
+
Cache-Control:
|
38
|
+
- private, max-age=60, s-maxage=60
|
39
|
+
Etag:
|
40
|
+
- '"6d00d48abf2adf1877c8244700cd4c6f"'
|
41
|
+
X-Oauth-Scopes:
|
42
|
+
- repo
|
43
|
+
X-Accepted-Oauth-Scopes:
|
44
|
+
- ''
|
45
|
+
Vary:
|
46
|
+
- Accept, Authorization, Cookie, X-GitHub-OTP
|
47
|
+
- Accept-Encoding
|
48
|
+
X-Github-Media-Type:
|
49
|
+
- github.v3; format=json
|
50
|
+
Link:
|
51
|
+
- <https://api.github.com/repositories/17608725/pulls?head=wireframe%3Afeature-branch&state=open&page=0>;
|
52
|
+
rel="last"
|
53
|
+
X-Xss-Protection:
|
54
|
+
- 1; mode=block
|
55
|
+
X-Frame-Options:
|
56
|
+
- deny
|
57
|
+
Content-Security-Policy:
|
58
|
+
- default-src 'none'
|
59
|
+
Content-Length:
|
60
|
+
- '2'
|
61
|
+
Access-Control-Allow-Credentials:
|
62
|
+
- 'true'
|
63
|
+
Access-Control-Expose-Headers:
|
64
|
+
- ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
|
65
|
+
X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
|
66
|
+
Access-Control-Allow-Origin:
|
67
|
+
- "*"
|
68
|
+
X-Github-Request-Id:
|
69
|
+
- 46C5E25C:1E4F:1642AD9:53E107F3
|
70
|
+
Strict-Transport-Security:
|
71
|
+
- max-age=31536000; includeSubdomains
|
72
|
+
X-Content-Type-Options:
|
73
|
+
- nosniff
|
74
|
+
X-Served-By:
|
75
|
+
- d818ddef80f4c7d10683dd483558952a
|
76
|
+
body:
|
77
|
+
encoding: UTF-8
|
78
|
+
string: '[{"html_url":"https://path/to/html/pull/request","issue_url":"https://api/path/to/issue/url","number":10,"head":{"ref":"branch_name", "sha": "e12da4"}}]'
|
79
|
+
http_version:
|
80
|
+
recorded_at: Tue, 05 Aug 2014 16:36:03 GMT
|
81
|
+
- request:
|
82
|
+
method: get
|
83
|
+
uri: https://api.github.com/repos/wireframe/gitx/commits/feature-branch/status
|
84
|
+
body:
|
85
|
+
encoding: US-ASCII
|
86
|
+
string: ''
|
87
|
+
headers:
|
88
|
+
Accept:
|
89
|
+
- application/vnd.github.v3+json
|
90
|
+
User-Agent:
|
91
|
+
- Octokit Ruby Gem 3.4.0
|
92
|
+
Content-Type:
|
93
|
+
- application/json
|
94
|
+
Authorization:
|
95
|
+
- token 123123
|
96
|
+
Accept-Encoding:
|
97
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
98
|
+
response:
|
99
|
+
status:
|
100
|
+
code: 200
|
101
|
+
message: OK
|
102
|
+
headers:
|
103
|
+
Server:
|
104
|
+
- GitHub.com
|
105
|
+
Date:
|
106
|
+
- Wed, 10 Dec 2014 19:01:27 GMT
|
107
|
+
Content-Type:
|
108
|
+
- application/json; charset=utf-8
|
109
|
+
Transfer-Encoding:
|
110
|
+
- chunked
|
111
|
+
Status:
|
112
|
+
- 200 OK
|
113
|
+
X-Ratelimit-Limit:
|
114
|
+
- '5000'
|
115
|
+
X-Ratelimit-Remaining:
|
116
|
+
- '4993'
|
117
|
+
X-Ratelimit-Reset:
|
118
|
+
- '1418241620'
|
119
|
+
X-Oauth-Scopes:
|
120
|
+
- repo
|
121
|
+
X-Accepted-Oauth-Scopes:
|
122
|
+
- repo, repo:status
|
123
|
+
X-Github-Media-Type:
|
124
|
+
- github.v3; format=json
|
125
|
+
X-Xss-Protection:
|
126
|
+
- 1; mode=block
|
127
|
+
X-Frame-Options:
|
128
|
+
- deny
|
129
|
+
Content-Security-Policy:
|
130
|
+
- default-src 'none'
|
131
|
+
Access-Control-Allow-Credentials:
|
132
|
+
- 'true'
|
133
|
+
Access-Control-Expose-Headers:
|
134
|
+
- ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
|
135
|
+
X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
|
136
|
+
Access-Control-Allow-Origin:
|
137
|
+
- "*"
|
138
|
+
X-Github-Request-Id:
|
139
|
+
- C6CBAFAF:141D:2F27072:54889887
|
140
|
+
Strict-Transport-Security:
|
141
|
+
- max-age=31536000; includeSubdomains; preload
|
142
|
+
X-Content-Type-Options:
|
143
|
+
- nosniff
|
144
|
+
body:
|
145
|
+
encoding: UTF-8
|
146
|
+
string: '{"state":"success"}'
|
147
|
+
http_version:
|
148
|
+
recorded_at: Tue, 05 Aug 2014 16:36:03 GMT
|
149
|
+
- request:
|
150
|
+
method: post
|
151
|
+
uri: https://api.github.com/repos/wireframe/gitx/issues/10/labels
|
152
|
+
body:
|
153
|
+
encoding: US-ASCII
|
154
|
+
string: ''
|
155
|
+
headers:
|
156
|
+
Accept:
|
157
|
+
- application/vnd.github.v3+json
|
158
|
+
User-Agent:
|
159
|
+
- Octokit Ruby Gem 3.2.0
|
160
|
+
Authorization:
|
161
|
+
- token 123123
|
162
|
+
Accept-Encoding:
|
163
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
164
|
+
response:
|
165
|
+
status:
|
166
|
+
code: 200
|
167
|
+
message: OK
|
168
|
+
headers:
|
169
|
+
Server:
|
170
|
+
- GitHub.com
|
171
|
+
Date:
|
172
|
+
- Tue, 05 Aug 2014 16:36:03 GMT
|
173
|
+
Content-Type:
|
174
|
+
- application/json; charset=utf-8
|
175
|
+
Status:
|
176
|
+
- 200 OK
|
177
|
+
X-Ratelimit-Limit:
|
178
|
+
- '5000'
|
179
|
+
X-Ratelimit-Remaining:
|
180
|
+
- '4991'
|
181
|
+
X-Ratelimit-Reset:
|
182
|
+
- '1407257585'
|
183
|
+
Cache-Control:
|
184
|
+
- private, max-age=60, s-maxage=60
|
185
|
+
Etag:
|
186
|
+
- '"6d00d48abf2adf1877c8244700cd4c6f"'
|
187
|
+
X-Oauth-Scopes:
|
188
|
+
- repo
|
189
|
+
X-Accepted-Oauth-Scopes:
|
190
|
+
- ''
|
191
|
+
Vary:
|
192
|
+
- Accept, Authorization, Cookie, X-GitHub-OTP
|
193
|
+
- Accept-Encoding
|
194
|
+
X-Github-Media-Type:
|
195
|
+
- github.v3; format=json
|
196
|
+
Link:
|
197
|
+
- <https://api.github.com/repositories/17608725/pulls?head=wireframe%3Afeature-branch&state=open&page=0>;
|
198
|
+
rel="last"
|
199
|
+
X-Xss-Protection:
|
200
|
+
- 1; mode=block
|
201
|
+
X-Frame-Options:
|
202
|
+
- deny
|
203
|
+
Content-Security-Policy:
|
204
|
+
- default-src 'none'
|
205
|
+
Content-Length:
|
206
|
+
- '2'
|
207
|
+
Access-Control-Allow-Credentials:
|
208
|
+
- 'true'
|
209
|
+
Access-Control-Expose-Headers:
|
210
|
+
- ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
|
211
|
+
X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
|
212
|
+
Access-Control-Allow-Origin:
|
213
|
+
- "*"
|
214
|
+
X-Github-Request-Id:
|
215
|
+
- 46C5E25C:1E4F:1642AD9:53E107F3
|
216
|
+
Strict-Transport-Security:
|
217
|
+
- max-age=31536000; includeSubdomains
|
218
|
+
X-Content-Type-Options:
|
219
|
+
- nosniff
|
220
|
+
X-Served-By:
|
221
|
+
- d818ddef80f4c7d10683dd483558952a
|
222
|
+
body:
|
223
|
+
encoding: UTF-8
|
224
|
+
string: '[{"id":1,"name":"release-me"}]'
|
225
|
+
http_version:
|
226
|
+
recorded_at: Tue, 05 Aug 2014 16:36:03 GMT
|
227
|
+
recorded_with: VCR 2.9.2
|
228
|
+
|
@@ -19,6 +19,7 @@ describe Gitx::Cli::IntegrateCommand do
|
|
19
19
|
|
20
20
|
before do
|
21
21
|
allow(cli).to receive(:current_branch).and_return(current_branch)
|
22
|
+
allow(cli).to receive(:github_slug).and_return('wireframe/gitx')
|
22
23
|
branches = double('fake branches')
|
23
24
|
allow(branches).to receive(:each_name).with(:local).and_return(local_branch_names)
|
24
25
|
allow(branches).to receive(:each_name).with(:remote).and_return(remote_branch_names)
|
@@ -159,10 +160,10 @@ describe Gitx::Cli::IntegrateCommand do
|
|
159
160
|
expect(executor).to receive(:execute).with('git', 'branch', '--delete', '--force', 'staging').ordered
|
160
161
|
expect(executor).to receive(:execute).with('git', 'checkout', 'staging').ordered
|
161
162
|
expect(executor).to receive(:execute).with('git', 'merge', '--no-ff', '--message', "[gitx] Integrate feature-branch into staging\n\nConnected to #10", 'feature-branch')
|
162
|
-
.and_raise(
|
163
|
+
.and_raise(Gitx::Executor::ExecutionError).ordered
|
163
164
|
|
164
165
|
VCR.use_cassette('pull_request_does_exist_with_success_status') do
|
165
|
-
expect { cli.integrate }.to raise_error(/Merge conflict occurred. Please fix merge conflict and rerun command with --resume feature-branch flag/)
|
166
|
+
expect { cli.integrate }.to raise_error(Gitx::Cli::BaseCommand::MergeError, /Merge conflict occurred. Please fix merge conflict and rerun command with --resume feature-branch flag/)
|
166
167
|
end
|
167
168
|
end
|
168
169
|
it 'raises a helpful error' do
|
@@ -17,6 +17,7 @@ describe Gitx::Cli::ReleaseCommand do
|
|
17
17
|
|
18
18
|
before do
|
19
19
|
allow(cli).to receive(:current_branch).and_return(branch)
|
20
|
+
allow(cli).to receive(:github_slug).and_return('wireframe/gitx')
|
20
21
|
end
|
21
22
|
|
22
23
|
describe '#release' do
|
@@ -58,6 +59,7 @@ describe Gitx::Cli::ReleaseCommand do
|
|
58
59
|
expect(repo).to receive(:workdir).and_return(temp_dir)
|
59
60
|
|
60
61
|
expect(cli).to receive(:yes?).and_return(true)
|
62
|
+
expect(cli).to_not receive(:label_pull_request)
|
61
63
|
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
62
64
|
|
63
65
|
expect(executor).to receive(:execute).with('git', 'checkout', 'feature-branch').ordered
|
@@ -200,5 +202,38 @@ describe Gitx::Cli::ReleaseCommand do
|
|
200
202
|
should meet_expectations
|
201
203
|
end
|
202
204
|
end
|
205
|
+
context 'when user confirms release and pull request exists with success status with release_label config' do
|
206
|
+
let(:gitx_config) do
|
207
|
+
{
|
208
|
+
'release_label' => 'release-me'
|
209
|
+
}
|
210
|
+
end
|
211
|
+
before do
|
212
|
+
expect(repo).to receive(:workdir).and_return(temp_dir)
|
213
|
+
File.open(File.join(temp_dir, '.gitx.yml'), 'w') do |f|
|
214
|
+
f.puts gitx_config.to_yaml
|
215
|
+
end
|
216
|
+
|
217
|
+
expect(cli).to receive(:yes?).and_return(true)
|
218
|
+
expect(cli).to receive(:label_pull_request).with(having_attributes(number: 10), 'release-me').and_call_original
|
219
|
+
allow(cli).to receive(:authorization_token).and_return(authorization_token)
|
220
|
+
|
221
|
+
expect(executor).to_not receive(:execute).with('git', 'checkout', 'master')
|
222
|
+
expect(executor).to_not receive(:execute).with('git', 'pull', 'origin', 'master')
|
223
|
+
expect(executor).to_not receive(:execute).with('git', 'merge', '--no-ff', '--message', "[gitx] Release feature-branch to master\n\nConnected to #10", 'feature-branch')
|
224
|
+
expect(executor).to_not receive(:execute).with('git', 'push', 'origin', 'HEAD')
|
225
|
+
|
226
|
+
expect(executor).to receive(:execute).with('git', 'checkout', 'feature-branch').ordered
|
227
|
+
expect(executor).to receive(:execute).with('git', 'update').ordered
|
228
|
+
expect(executor).to receive(:execute).with('git integrate').ordered
|
229
|
+
|
230
|
+
VCR.use_cassette('pull_request_does_exist_with_success_status_and_then_add_label') do
|
231
|
+
cli.release
|
232
|
+
end
|
233
|
+
end
|
234
|
+
it 'runs expected commands' do
|
235
|
+
should meet_expectations
|
236
|
+
end
|
237
|
+
end
|
203
238
|
end
|
204
239
|
end
|
@@ -112,10 +112,10 @@ describe Gitx::Cli::StartCommand do
|
|
112
112
|
should meet_expectations
|
113
113
|
end
|
114
114
|
end
|
115
|
-
context 'when --issue option is used' do
|
115
|
+
context 'when --issue option is used with a numeric issue ID' do
|
116
116
|
let(:options) do
|
117
117
|
{
|
118
|
-
issue: 10
|
118
|
+
issue: '10'
|
119
119
|
}
|
120
120
|
end
|
121
121
|
before do
|
@@ -131,5 +131,24 @@ describe Gitx::Cli::StartCommand do
|
|
131
131
|
should meet_expectations
|
132
132
|
end
|
133
133
|
end
|
134
|
+
context 'when --issue option is used with a non-numeric issue ID' do
|
135
|
+
let(:options) do
|
136
|
+
{
|
137
|
+
issue: 'FOO-123'
|
138
|
+
}
|
139
|
+
end
|
140
|
+
before do
|
141
|
+
expect(cli).to receive(:checkout_branch).with('master').ordered
|
142
|
+
expect(executor).to receive(:execute).with('git', 'pull').ordered
|
143
|
+
expect(repo).to receive(:create_branch).with('new-branch', 'master').ordered
|
144
|
+
expect(cli).to receive(:checkout_branch).with('new-branch').ordered
|
145
|
+
expect(executor).to receive(:execute).with('git', 'commit', '--allow-empty', '--message', "[gitx] Start work on new-branch\n\nConnected to FOO-123").ordered
|
146
|
+
|
147
|
+
cli.start 'new-branch'
|
148
|
+
end
|
149
|
+
it 'creates empty commit with link to issue id' do
|
150
|
+
should meet_expectations
|
151
|
+
end
|
152
|
+
end
|
134
153
|
end
|
135
154
|
end
|
@@ -41,7 +41,7 @@ describe Gitx::Cli::UpdateCommand do
|
|
41
41
|
before do
|
42
42
|
allow(cli).to receive(:say)
|
43
43
|
|
44
|
-
expect(executor).to receive(:execute).with('git', 'pull', 'origin', 'feature-branch').and_raise(
|
44
|
+
expect(executor).to receive(:execute).with('git', 'pull', 'origin', 'feature-branch').and_raise(Gitx::Executor::ExecutionError).ordered
|
45
45
|
|
46
46
|
expect { cli.update }.to raise_error(Gitx::Cli::BaseCommand::MergeError, 'Merge conflict occurred. Please fix merge conflict and rerun the command')
|
47
47
|
end
|
@@ -54,7 +54,7 @@ describe Gitx::Cli::UpdateCommand do
|
|
54
54
|
allow(cli).to receive(:say)
|
55
55
|
|
56
56
|
expect(executor).to receive(:execute).with('git', 'pull', 'origin', 'feature-branch').ordered
|
57
|
-
expect(executor).to receive(:execute).with('git', 'pull', 'origin', 'master').and_raise(
|
57
|
+
expect(executor).to receive(:execute).with('git', 'pull', 'origin', 'master').and_raise(Gitx::Executor::ExecutionError).ordered
|
58
58
|
|
59
59
|
expect { cli.update }.to raise_error(Gitx::Cli::BaseCommand::MergeError, 'Merge conflict occurred. Please fix merge conflict and rerun the command')
|
60
60
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,7 +8,7 @@ require 'bundler/setup'
|
|
8
8
|
|
9
9
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
10
10
|
# in spec/support/ and its subdirectories.
|
11
|
-
Dir[File.join(__dir__, 'support/**/*.rb')].each { |f| require f }
|
11
|
+
Dir[File.join(__dir__, 'support/**/*.rb')].sort.each { |f| require f }
|
12
12
|
|
13
13
|
# This file was generated by the `rspec --init` command. Conventionally, all
|
14
14
|
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
metadata
CHANGED
@@ -1,45 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.2.0.ci.231.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Sonnek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: octokit
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rugged
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.27.10
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.27.10
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: coveralls
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -81,21 +81,21 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,21 +109,21 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
117
|
+
version: '3.0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
124
|
+
version: '3.0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rubocop
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: timecop
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: vcr
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: webmock
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
@@ -240,6 +240,7 @@ files:
|
|
240
240
|
- lib/gitx/version.rb
|
241
241
|
- spec/fixtures/vcr_cassettes/pull_request_does_exist_with_failure_status.yml
|
242
242
|
- spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status.yml
|
243
|
+
- spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status_and_then_add_label.yml
|
243
244
|
- spec/fixtures/vcr_cassettes/pull_request_does_not_exist.yml
|
244
245
|
- spec/gitx/cli/base_command_spec.rb
|
245
246
|
- spec/gitx/cli/buildtag_command_spec.rb
|
@@ -274,21 +275,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
274
275
|
requirements:
|
275
276
|
- - ">="
|
276
277
|
- !ruby/object:Gem::Version
|
277
|
-
version:
|
278
|
+
version: 2.6.7
|
278
279
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
280
|
requirements:
|
280
|
-
- - "
|
281
|
+
- - ">"
|
281
282
|
- !ruby/object:Gem::Version
|
282
|
-
version:
|
283
|
+
version: 1.3.1
|
283
284
|
requirements: []
|
284
|
-
|
285
|
-
rubygems_version: 2.6.6
|
285
|
+
rubygems_version: 3.0.8
|
286
286
|
signing_key:
|
287
287
|
specification_version: 4
|
288
288
|
summary: Utility scripts for Git to increase productivity for common operations
|
289
289
|
test_files:
|
290
290
|
- spec/fixtures/vcr_cassettes/pull_request_does_exist_with_failure_status.yml
|
291
291
|
- spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status.yml
|
292
|
+
- spec/fixtures/vcr_cassettes/pull_request_does_exist_with_success_status_and_then_add_label.yml
|
292
293
|
- spec/fixtures/vcr_cassettes/pull_request_does_not_exist.yml
|
293
294
|
- spec/gitx/cli/base_command_spec.rb
|
294
295
|
- spec/gitx/cli/buildtag_command_spec.rb
|