git-process-lib 2.0.4 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +16 -1
- data/Gemfile +15 -15
- data/Gemfile.lock +59 -44
- data/LICENSE +1 -1
- data/{README.md → README.adoc} +101 -93
- data/git-new-fb.gemspec +7 -7
- data/git-process-lib.gemspec +12 -15
- data/git-process.gemspec +10 -10
- data/git-pull-req.gemspec +7 -7
- data/git-sync.gemspec +7 -7
- data/git-to-master.gemspec +7 -7
- data/lib/git-process/git_branch.rb +41 -2
- data/lib/git-process/git_branches.rb +1 -1
- data/lib/git-process/git_config.rb +16 -6
- data/lib/git-process/git_lib.rb +305 -92
- data/lib/git-process/git_logger.rb +17 -22
- data/lib/git-process/git_process.rb +13 -6
- data/lib/git-process/git_remote.rb +34 -6
- data/lib/git-process/github_configuration.rb +156 -47
- data/lib/git-process/github_pull_request.rb +64 -10
- data/lib/git-process/pull_request.rb +5 -5
- data/lib/git-process/version.rb +2 -2
- data/local-build.rb +6 -2
- data/spec/changed_file_helper_spec.rb +1 -1
- data/spec/git_branch_spec.rb +35 -0
- data/spec/git_lib_spec.rb +32 -9
- data/spec/git_process_spec.rb +34 -26
- data/spec/git_remote_spec.rb +2 -2
- data/spec/github_configuration_spec.rb +67 -16
- data/spec/github_pull_request_spec.rb +18 -17
- data/spec/github_test_helper.rb +59 -5
- data/spec/new_fb_spec.rb +14 -14
- data/spec/pull_request_helper.rb +2 -2
- data/spec/pull_request_spec.rb +13 -11
- data/spec/rebase_to_master_spec.rb +10 -10
- data/spec/sync_spec.rb +20 -3
- metadata +114 -155
@@ -18,7 +18,7 @@ require 'octokit/repository'
|
|
18
18
|
module GitHub
|
19
19
|
|
20
20
|
class PullRequest
|
21
|
-
attr_reader :gitlib, :repo, :remote_name, :
|
21
|
+
attr_reader :gitlib, :repo, :remote_name, :configuration
|
22
22
|
|
23
23
|
MAX_RESEND = 5
|
24
24
|
|
@@ -26,24 +26,43 @@ module GitHub
|
|
26
26
|
@gitlib = lib
|
27
27
|
@repo = repo
|
28
28
|
@remote_name = remote_name
|
29
|
-
@configuration = GitHubService::Configuration.new(
|
29
|
+
@configuration = GitHubService::Configuration.new(
|
30
|
+
gitlib.config,
|
31
|
+
:user => opts[:user],
|
32
|
+
:password => opts[:password],
|
33
|
+
:remote_name => remote_name
|
34
|
+
)
|
30
35
|
end
|
31
36
|
|
32
37
|
|
33
38
|
def client
|
34
|
-
@
|
39
|
+
@configuration.client
|
35
40
|
end
|
36
41
|
|
37
42
|
|
38
|
-
def pull_requests(
|
39
|
-
@pull_requests ||= client.pull_requests(repo,
|
43
|
+
def pull_requests(opts = {})
|
44
|
+
@pull_requests ||= sym_hash_JSON(client.pull_requests(repo, opts))
|
40
45
|
end
|
41
46
|
|
42
47
|
|
48
|
+
# Create a pull request
|
49
|
+
#
|
50
|
+
# @see https://developer.github.com/v3/pulls/#create-a-pull-request
|
51
|
+
# @param base [String] The branch (or git ref) you want your changes
|
52
|
+
# pulled into. This should be an existing branch on the current
|
53
|
+
# repository. You cannot submit a pull request to one repo that requests
|
54
|
+
# a merge to a base of another repo.
|
55
|
+
# @param head [String] The branch (or git ref) where your changes are implemented.
|
56
|
+
# @param title [String] Title for the pull request
|
57
|
+
# @param body [String] The body for the pull request (optional). Supports GFM.
|
58
|
+
# @return [Hash] The newly created pull request
|
59
|
+
# @example
|
60
|
+
# @client.create_pull_request("master", "feature-branch",
|
61
|
+
# "Pull Request title", "Pull Request body")
|
43
62
|
def create(base, head, title, body)
|
44
63
|
logger.info { "Creating a pull request asking for '#{head}' to be merged into '#{base}' on #{repo}." }
|
45
64
|
begin
|
46
|
-
client.create_pull_request(repo, base, head, title, body)
|
65
|
+
return sym_hash_JSON(client.create_pull_request(repo, base, head, title, body))
|
47
66
|
rescue Octokit::UnprocessableEntity => exp
|
48
67
|
pull = pull_requests.find { |p| p[:head][:ref] == head and p[:base][:ref] == base }
|
49
68
|
if pull
|
@@ -51,7 +70,7 @@ module GitHub
|
|
51
70
|
else
|
52
71
|
logger.warn { "UnprocessableEntity: #{exp}" }
|
53
72
|
end
|
54
|
-
pull
|
73
|
+
return pull
|
55
74
|
end
|
56
75
|
end
|
57
76
|
|
@@ -62,7 +81,7 @@ module GitHub
|
|
62
81
|
|
63
82
|
|
64
83
|
def pull_request(pr_number)
|
65
|
-
client.pull_request(repo, pr_number)
|
84
|
+
sym_hash_JSON(client.pull_request(repo, pr_number))
|
66
85
|
end
|
67
86
|
|
68
87
|
|
@@ -94,7 +113,9 @@ module GitHub
|
|
94
113
|
logger.info { "Looking for a pull request asking for '#{head}' to be merged into '#{base}' on #{repo}." }
|
95
114
|
|
96
115
|
json = pull_requests
|
97
|
-
pr = json.find
|
116
|
+
pr = json.find do |p|
|
117
|
+
p[:head][:ref] == head and p[:base][:ref] == base
|
118
|
+
end
|
98
119
|
|
99
120
|
raise NotFoundError.new(base, head, repo, json) if error_if_missing && pr.nil?
|
100
121
|
|
@@ -147,10 +168,43 @@ module GitHub
|
|
147
168
|
|
148
169
|
private
|
149
170
|
|
171
|
+
#
|
172
|
+
# @param [String, Sawyer::Resource] str the String to parse as JSON, or a simple pass through
|
173
|
+
#
|
174
|
+
# @return [Array, Hash, Sawyer::Resource, nil] an Array/Hash where all the hash keys are Symbols
|
175
|
+
#
|
176
|
+
def sym_hash_JSON(str)
|
177
|
+
return nil if str.nil?
|
178
|
+
case str
|
179
|
+
when String
|
180
|
+
raise ArgumentError.new('Can not parse an empty JSON string') if str.empty?
|
181
|
+
to_sym_hash(JSON.parse(str))
|
182
|
+
when Array, Hash
|
183
|
+
to_sym_hash(str)
|
184
|
+
else
|
185
|
+
str
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
|
190
|
+
def to_sym_hash(source)
|
191
|
+
if source.is_a? Hash
|
192
|
+
Hash[source.map { |k, v|
|
193
|
+
[k.to_sym, to_sym_hash(v)]
|
194
|
+
}]
|
195
|
+
elsif source.is_a? Array
|
196
|
+
source.map { |e| to_sym_hash(e) }
|
197
|
+
else
|
198
|
+
source
|
199
|
+
# raise "Don't know what to do with #{source.class} - #{source}"
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
150
203
|
|
204
|
+
# @return [Sawyer::Resource]
|
151
205
|
def send_close_req(pull_number, count)
|
152
206
|
begin
|
153
|
-
client.patch("repos/#{Octokit::Repository.new(repo)}/pulls/#{pull_number}", {:state => 'closed'})
|
207
|
+
sym_hash_JSON(client.patch("repos/#{Octokit::Repository.new(repo)}/pulls/#{pull_number}", {:state => 'closed'}))
|
154
208
|
rescue Octokit::UnprocessableEntity => exp
|
155
209
|
if count > MAX_RESEND
|
156
210
|
raise exp
|
@@ -85,17 +85,17 @@ module GitProc
|
|
85
85
|
|
86
86
|
|
87
87
|
def checkout_pull_request(lib, pr_number, remote_name, repo_name, username, password, logger)
|
88
|
-
logger.info {
|
88
|
+
logger.info { "Getting #{pr_number}" }
|
89
89
|
|
90
90
|
lib.fetch(remote_name)
|
91
91
|
|
92
92
|
pr = create_pull_request_client(lib, remote_name, repo_name, username, password)
|
93
93
|
json = pr.pull_request(pr_number)
|
94
|
-
head_branch_name = json
|
95
|
-
base_branch_name = json
|
94
|
+
head_branch_name = json[:head][:ref]
|
95
|
+
base_branch_name = json[:base][:ref]
|
96
96
|
|
97
|
-
remote_head_server_name = match_remote_to_pr_remote(lib, json
|
98
|
-
remote_base_server_name = match_remote_to_pr_remote(lib, json
|
97
|
+
remote_head_server_name = match_remote_to_pr_remote(lib, json[:head][:repo][:ssh_url])
|
98
|
+
remote_base_server_name = match_remote_to_pr_remote(lib, json[:base][:repo][:ssh_url])
|
99
99
|
lib.checkout(head_branch_name, :new_branch => "#{remote_head_server_name}/#{head_branch_name}")
|
100
100
|
lib.branch(head_branch_name, :upstream => "#{remote_base_server_name}/#{base_branch_name}")
|
101
101
|
#logger.info(json.to_hash)
|
data/lib/git-process/version.rb
CHANGED
data/local-build.rb
CHANGED
@@ -3,22 +3,26 @@ require File.expand_path('../lib/git-process/version', __FILE__)
|
|
3
3
|
|
4
4
|
gems = %w(git-process-lib git-sync git-to-master git-new-fb git-pull-req git-process)
|
5
5
|
|
6
|
+
puts "rake manpage"
|
6
7
|
%x[rake manpage 2>&1]
|
7
8
|
|
9
|
+
puts "uninstall"
|
8
10
|
for gem in gems.reverse
|
9
11
|
%x[gem uninstall #{gem} -x -v #{GitProc::Version::STRING} 2>&1]
|
10
12
|
end
|
11
13
|
|
12
14
|
for gem in gems
|
13
|
-
puts %x(a2x -f manpage -D man docs/#{gem}.1.adoc)
|
14
|
-
SystemExit.new($?) if $?.exitstatus
|
15
|
+
# puts %x(a2x -f manpage -D man docs/#{gem}.1.adoc)
|
16
|
+
# SystemExit.new($?) if $?.exitstatus
|
15
17
|
|
18
|
+
puts "gem build #{gem}"
|
16
19
|
%x[gem build #{gem}.gemspec]
|
17
20
|
SystemExit.new($?) if $?.exitstatus
|
18
21
|
|
19
22
|
# puts %x(gem install ./#{gem}-#{GitProc::Version::STRING}.gem -l -u)
|
20
23
|
# SystemExit.new($?) if $?.exitstatus
|
21
24
|
|
25
|
+
puts "gem push #{gem}"
|
22
26
|
puts %x(gem push ./#{gem}-#{GitProc::Version::STRING}.gem)
|
23
27
|
SystemExit.new($?) if $?.exitstatus
|
24
28
|
end
|
data/spec/git_branch_spec.rb
CHANGED
@@ -21,6 +21,41 @@ describe GitProc::GitBranch do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
|
24
|
+
describe 'comparison' do
|
25
|
+
|
26
|
+
it 'should handle another branch' do
|
27
|
+
base_branch = gitlib.branches.current
|
28
|
+
current = gitlib.branches.current
|
29
|
+
gitlib.checkout('fb', :new_branch => base_branch.name)
|
30
|
+
fb = gitlib.branches['fb']
|
31
|
+
expect( current <=> fb ).to eq(1)
|
32
|
+
expect( fb <=> current ).to eq(-1)
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
it 'should handle a String' do
|
37
|
+
current = gitlib.branches.current
|
38
|
+
expect( current <=> 'fb' ).to eq(1)
|
39
|
+
expect( 'fb' <=> current ).to eq(-1)
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
it 'should handle a nil' do
|
44
|
+
current = gitlib.branches.current
|
45
|
+
expect( current <=> nil ).to be_nil
|
46
|
+
expect( nil <=> current ).to be_nil
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
it 'should handle an unknown' do
|
51
|
+
current = gitlib.branches.current
|
52
|
+
expect( current <=> {} ).to be_nil
|
53
|
+
expect( {} <=> current ).to be_nil
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
|
24
59
|
describe 'contains_all_of' do
|
25
60
|
|
26
61
|
it 'should handle the trivial case' do
|
data/spec/git_lib_spec.rb
CHANGED
@@ -46,18 +46,41 @@ describe GitLib, :git_repo_helper do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
|
49
|
+
describe 'rev_parse' do
|
50
|
+
|
51
|
+
it 'parses a known branch name' do
|
52
|
+
expect(gitlib.rev_parse('master')).not_to be_empty
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
it 'does not try to parse a file name as a revision name' do
|
57
|
+
file = gitlib.workdir + '/fooble.txt'
|
58
|
+
FileUtils.touch(file, :verbose => false)
|
59
|
+
gitlib.add file
|
60
|
+
gitlib.commit 'test'
|
61
|
+
expect(gitlib.rev_parse('fooble.txt')).to be_nil
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
it 'empty for an unknown branch name' do
|
66
|
+
expect(gitlib.rev_parse('skdfklsjhdfklerouwh')).to be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
|
49
72
|
describe 'set_upstream_branch' do
|
50
73
|
include GitRepoHelper
|
51
74
|
|
52
75
|
it 'updates for remote branch' do
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
76
|
+
gitlib.branch('ba/bb', :base_branch => 'master')
|
77
|
+
clone_repo do |gl|
|
78
|
+
gl.checkout('new_branch', :new_branch => 'origin/master')
|
79
|
+
gl.set_upstream_branch('new_branch', 'origin/ba/bb')
|
57
80
|
|
58
|
-
|
59
|
-
|
60
|
-
|
81
|
+
gl.config['branch.new_branch.remote'].should == 'origin'
|
82
|
+
gl.config['branch.new_branch.merge'].should == 'refs/heads/ba/bb'
|
83
|
+
end
|
61
84
|
end
|
62
85
|
|
63
86
|
|
@@ -86,7 +109,7 @@ describe GitLib, :git_repo_helper do
|
|
86
109
|
describe 'fetch' do
|
87
110
|
|
88
111
|
it 'parse the list of changes' do
|
89
|
-
output = '''
|
112
|
+
output = '' '
|
90
113
|
remote: Counting objects: 1028, done.
|
91
114
|
remote: Compressing objects: 100% (301/301), done.
|
92
115
|
remote: Total 699 (delta 306), reused 654 (delta 273)
|
@@ -111,7 +134,7 @@ From remote.system.com:tuser/test-proj
|
|
111
134
|
b9797f8..dd24a9f webcms-2135 -> origin/webcms-2135
|
112
135
|
* [new branch] webcms-831-faq-web-service -> origin/webcms-831-faq-web-service
|
113
136
|
x [deleted] (none) -> origin/webcms-1315-masthead
|
114
|
-
'''
|
137
|
+
' ''
|
115
138
|
changes = gitlib.fetch_changes(output)
|
116
139
|
|
117
140
|
changes[:new_branch].size().should == 6
|
data/spec/git_process_spec.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require 'git-process/git_process'
|
1
|
+
require File.dirname(__FILE__) + '/../lib/git-process/git_process'
|
2
2
|
require 'GitRepoHelper'
|
3
|
+
require 'climate_control'
|
3
4
|
require 'fileutils'
|
4
5
|
|
5
6
|
describe GitProc::Process do
|
@@ -21,6 +22,13 @@ describe GitProc::Process do
|
|
21
22
|
rm_rf(gitlib.workdir)
|
22
23
|
end
|
23
24
|
|
25
|
+
around do |example|
|
26
|
+
# make sure there aren't side-effects testing from the testing user's .gitconfig
|
27
|
+
ClimateControl.modify HOME: '/path_that_does_not_exist' do
|
28
|
+
example.run
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
24
32
|
|
25
33
|
describe 'run lifecycle' do
|
26
34
|
|
@@ -35,13 +43,13 @@ describe GitProc::Process do
|
|
35
43
|
end
|
36
44
|
|
37
45
|
|
38
|
-
it
|
46
|
+
it 'should call "cleanup" even if there is an error' do
|
39
47
|
proc = GitProc::Process.new(gitlib)
|
40
48
|
proc.should_receive(:verify_preconditions)
|
41
|
-
proc.should_receive(:runner).and_raise(GitProc::GitProcessError.new(
|
49
|
+
proc.should_receive(:runner).and_raise(GitProc::GitProcessError.new('Error!'))
|
42
50
|
proc.should_receive(:cleanup)
|
43
51
|
proc.should_receive(:exit)
|
44
|
-
proc.should_receive(:puts).with(
|
52
|
+
proc.should_receive(:puts).with('Error!')
|
45
53
|
|
46
54
|
proc.run
|
47
55
|
end
|
@@ -49,9 +57,9 @@ describe GitProc::Process do
|
|
49
57
|
end
|
50
58
|
|
51
59
|
|
52
|
-
describe
|
60
|
+
describe 'validate local integration branch' do
|
53
61
|
|
54
|
-
it
|
62
|
+
it 'should use remove the int-branch if not on it and not blocked' do
|
55
63
|
clone_repo('master') do |gl|
|
56
64
|
gl.checkout('fb', :new_branch => 'master')
|
57
65
|
|
@@ -60,12 +68,12 @@ describe GitProc::Process do
|
|
60
68
|
|
61
69
|
gp.verify_preconditions
|
62
70
|
|
63
|
-
gl.branches.include?('master').should
|
71
|
+
gl.branches.include?('master').should be false
|
64
72
|
end
|
65
73
|
end
|
66
74
|
|
67
75
|
|
68
|
-
it
|
76
|
+
it 'should ask to remove the int-branch if not on it and not blocked' do
|
69
77
|
clone_repo('master') do |gl|
|
70
78
|
gl.checkout('fb', :new_branch => 'master')
|
71
79
|
|
@@ -74,12 +82,12 @@ describe GitProc::Process do
|
|
74
82
|
|
75
83
|
gp.verify_preconditions
|
76
84
|
|
77
|
-
gl.branches.include?('master').should
|
85
|
+
gl.branches.include?('master').should be false
|
78
86
|
end
|
79
87
|
end
|
80
88
|
|
81
89
|
|
82
|
-
it
|
90
|
+
it 'should ask to remove the int-branch if not on it and not blocked and not remove if answered no' do
|
83
91
|
clone_repo('master') do |gl|
|
84
92
|
gl.checkout('fb', :new_branch => 'master')
|
85
93
|
|
@@ -88,22 +96,22 @@ describe GitProc::Process do
|
|
88
96
|
|
89
97
|
gp.verify_preconditions
|
90
98
|
|
91
|
-
gl.branches.include?('master').should
|
99
|
+
gl.branches.include?('master').should be true
|
92
100
|
end
|
93
101
|
end
|
94
102
|
|
95
103
|
|
96
|
-
it
|
104
|
+
it 'should not remove the int-branch if on it' do
|
97
105
|
clone_repo('master') do |gl|
|
98
106
|
gp = GitProc::Process.new(gl)
|
99
107
|
gp.verify_preconditions
|
100
108
|
|
101
|
-
gl.branches.include?('master').should
|
109
|
+
gl.branches.include?('master').should be true
|
102
110
|
end
|
103
111
|
end
|
104
112
|
|
105
113
|
|
106
|
-
it
|
114
|
+
it 'should not remove the int-branch if blocked' do
|
107
115
|
clone_repo('master') do |gl|
|
108
116
|
gl.config['gitProcess.keepLocalIntegrationBranch'] = 'true'
|
109
117
|
gl.checkout('fb', :new_branch => 'master')
|
@@ -111,12 +119,12 @@ describe GitProc::Process do
|
|
111
119
|
gp = GitProc::Process.new(gl)
|
112
120
|
gp.verify_preconditions
|
113
121
|
|
114
|
-
gl.branches.include?('master').should
|
122
|
+
gl.branches.include?('master').should be true
|
115
123
|
end
|
116
124
|
end
|
117
125
|
|
118
126
|
|
119
|
-
describe
|
127
|
+
describe 'local vs remote branch status' do
|
120
128
|
|
121
129
|
before(:each) do
|
122
130
|
change_file_and_commit('a.txt', 'a content', gitlib)
|
@@ -124,7 +132,7 @@ describe GitProc::Process do
|
|
124
132
|
end
|
125
133
|
|
126
134
|
|
127
|
-
it
|
135
|
+
it 'should not remove if both have changes' do
|
128
136
|
clone_repo('master') do |gl|
|
129
137
|
change_file_and_commit('c.txt', 'c on origin/master', gitlib)
|
130
138
|
change_file_and_commit('d.txt', 'd on master', gl)
|
@@ -136,12 +144,12 @@ describe GitProc::Process do
|
|
136
144
|
gp = GitProc::Process.new(gl)
|
137
145
|
gp.verify_preconditions
|
138
146
|
|
139
|
-
gl.branches.include?('master').should
|
147
|
+
gl.branches.include?('master').should be true
|
140
148
|
end
|
141
149
|
end
|
142
150
|
|
143
151
|
|
144
|
-
it
|
152
|
+
it 'should remove if server changed but not local' do
|
145
153
|
clone_repo('master') do |gl|
|
146
154
|
gp = GitProc::Process.new(gl)
|
147
155
|
gp.stub(:ask_about_removing_master).and_return(true)
|
@@ -154,12 +162,12 @@ describe GitProc::Process do
|
|
154
162
|
|
155
163
|
gp.verify_preconditions
|
156
164
|
|
157
|
-
gl.branches.include?('master').should
|
165
|
+
gl.branches.include?('master').should be false
|
158
166
|
end
|
159
167
|
end
|
160
168
|
|
161
169
|
|
162
|
-
it
|
170
|
+
it 'should not remove if server did not change but local did' do
|
163
171
|
clone_repo('master') do |gl|
|
164
172
|
change_file_and_commit('c.txt', 'c on master', gl)
|
165
173
|
|
@@ -170,12 +178,12 @@ describe GitProc::Process do
|
|
170
178
|
gp = GitProc::Process.new(gl)
|
171
179
|
gp.verify_preconditions
|
172
180
|
|
173
|
-
gl.branches.include?('master').should
|
181
|
+
gl.branches.include?('master').should be true
|
174
182
|
end
|
175
183
|
end
|
176
184
|
|
177
185
|
|
178
|
-
it
|
186
|
+
it 'should remove if server and local are the same' do
|
179
187
|
change_file_and_commit('c.txt', 'c on origin/master', gitlib)
|
180
188
|
|
181
189
|
clone_repo('master') do |gl|
|
@@ -186,21 +194,21 @@ describe GitProc::Process do
|
|
186
194
|
gl.fetch
|
187
195
|
gp.verify_preconditions
|
188
196
|
|
189
|
-
gl.branches.include?('master').should
|
197
|
+
gl.branches.include?('master').should be false
|
190
198
|
end
|
191
199
|
end
|
192
200
|
|
193
201
|
end
|
194
202
|
|
195
203
|
|
196
|
-
it
|
204
|
+
it 'should not remove the int-branch if not a clone' do
|
197
205
|
gitlib.config['gitProcess.keepLocalIntegrationBranch'] = 'false'
|
198
206
|
gitlib.checkout('fb', :new_branch => 'master')
|
199
207
|
|
200
208
|
gitprocess = GitProc::Process.new(gitlib)
|
201
209
|
gitprocess.verify_preconditions
|
202
210
|
|
203
|
-
gitlib.branches.include?('master').should
|
211
|
+
gitlib.branches.include?('master').should be true
|
204
212
|
end
|
205
213
|
|
206
214
|
end
|