git-process-lib 2.0.4 → 3.0.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 +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
|