git-process 0.9.1.pre3 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +0 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +2 -0
- data/README.md +27 -9
- data/bin/git-new-fb +42 -13
- data/bin/git-pull-request +79 -13
- data/bin/git-sync +47 -13
- data/bin/git-to-master +56 -13
- data/git-process.gemspec +1 -1
- data/lib/git-process/{abstract-error-builder.rb → abstract_error_builder.rb} +13 -3
- data/lib/git-process/{git-abstract-merge-error-builder.rb → git_abstract_merge_error_builder.rb} +15 -5
- data/lib/git-process/{git-branch.rb → git_branch.rb} +13 -1
- data/lib/git-process/git_branches.rb +72 -0
- data/lib/git-process/{git-lib.rb → git_lib.rb} +82 -70
- data/lib/git-process/git_merge_error.rb +38 -0
- data/lib/git-process/git_process.rb +124 -0
- data/lib/git-process/git_process_error.rb +18 -0
- data/lib/git-process/git_process_options.rb +101 -0
- data/lib/git-process/git_rebase_error.rb +38 -0
- data/lib/git-process/{git-status.rb → git_status.rb} +13 -1
- data/lib/git-process/{github-client.rb → github_client.rb} +13 -1
- data/lib/git-process/github_pull_request.rb +107 -0
- data/lib/git-process/{github-service.rb → github_service.rb} +39 -21
- data/lib/git-process/new_fb.rb +40 -0
- data/lib/git-process/parked_changes_error.rb +40 -0
- data/lib/git-process/pull_request.rb +61 -0
- data/lib/git-process/rebase_to_master.rb +110 -0
- data/lib/git-process/sync.rb +63 -0
- data/lib/git-process/uncommitted_changes_error.rb +23 -0
- data/lib/git-process/version.rb +19 -9
- data/spec/GitRepoHelper.rb +35 -21
- data/spec/{git-abstract-merge-error-builder_spec.rb → git_abstract_merge_error_builder_spec.rb} +3 -3
- data/spec/{git-lib_spec.rb → git_lib_spec.rb} +79 -16
- data/spec/git_process_spec.rb +36 -0
- data/spec/{git-status_spec.rb → git_status_spec.rb} +28 -29
- data/spec/github_pull_request_spec.rb +91 -0
- data/spec/{github-service_spec.rb → github_service_spec.rb} +1 -1
- data/spec/new_fb_spec.rb +80 -0
- data/spec/rebase_to_master_spec.rb +314 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/sync_spec.rb +149 -0
- metadata +46 -43
- data/lib/git-process/git-branches.rb +0 -53
- data/lib/git-process/git-merge-error.rb +0 -31
- data/lib/git-process/git-new-fb-options.rb +0 -34
- data/lib/git-process/git-process-error.rb +0 -10
- data/lib/git-process/git-process-options.rb +0 -82
- data/lib/git-process/git-process.rb +0 -194
- data/lib/git-process/git-pull-request-options.rb +0 -42
- data/lib/git-process/git-rebase-error.rb +0 -31
- data/lib/git-process/git-sync-options.rb +0 -34
- data/lib/git-process/git-to-master-options.rb +0 -18
- data/lib/git-process/parked-changes-error.rb +0 -32
- data/lib/git-process/pull-request.rb +0 -38
- data/lib/git-process/uncommitted-changes-error.rb +0 -15
- data/spec/git-process_spec.rb +0 -328
- data/spec/pull-request_spec.rb +0 -57
@@ -0,0 +1,314 @@
|
|
1
|
+
require 'git-process/rebase_to_master'
|
2
|
+
require 'GitRepoHelper'
|
3
|
+
require 'webmock/rspec'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
describe GitProc::RebaseToMaster do
|
7
|
+
include GitRepoHelper
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
create_files(['.gitignore'])
|
11
|
+
gitprocess.commit('initial')
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
after(:each) do
|
16
|
+
rm_rf(tmpdir)
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def create_process(dir, opts)
|
21
|
+
GitProc::RebaseToMaster.new(dir, opts)
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
describe "rebase to master" do
|
26
|
+
|
27
|
+
def log_level
|
28
|
+
Logger::ERROR
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
it "should work easily for a simple rebase" do
|
33
|
+
gitprocess.checkout('fb', :new_branch => 'master')
|
34
|
+
change_file_and_commit('a', '')
|
35
|
+
|
36
|
+
commit_count.should == 2
|
37
|
+
|
38
|
+
gitprocess.checkout('master')
|
39
|
+
change_file_and_commit('b', '')
|
40
|
+
|
41
|
+
gitprocess.checkout('fb')
|
42
|
+
|
43
|
+
gitprocess.run
|
44
|
+
|
45
|
+
commit_count.should == 3
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
it "should work for a rebase after a rerere merge" do
|
50
|
+
# Make sure rerere is enabled
|
51
|
+
gitprocess.rerere_enabled(true, false)
|
52
|
+
gitprocess.rerere_autoupdate(false, false)
|
53
|
+
|
54
|
+
# Create the file to conflict on
|
55
|
+
change_file_and_commit('a', '')
|
56
|
+
|
57
|
+
# In the new branch, give it a new value
|
58
|
+
gitprocess.checkout('fb', :new_branch => 'master') do
|
59
|
+
change_file_and_commit('a', 'hello')
|
60
|
+
end
|
61
|
+
|
62
|
+
# Change the value as well in the origional branch
|
63
|
+
gitprocess.checkout('master') do
|
64
|
+
change_file_and_commit('a', 'goodbye')
|
65
|
+
end
|
66
|
+
|
67
|
+
# Merge in the new branch; don't error-out because will auto-fix.
|
68
|
+
gitprocess.checkout('fb') do
|
69
|
+
gitprocess.merge('master') rescue
|
70
|
+
change_file_and_commit('a', 'merged')
|
71
|
+
end
|
72
|
+
|
73
|
+
# Make another change on master
|
74
|
+
gitprocess.checkout('master') do
|
75
|
+
change_file_and_commit('b', '')
|
76
|
+
end
|
77
|
+
|
78
|
+
# Go back to the branch and try to rebase
|
79
|
+
gitprocess.checkout('fb')
|
80
|
+
|
81
|
+
begin
|
82
|
+
gitprocess.runner
|
83
|
+
raise "Should have raised RebaseError"
|
84
|
+
rescue GitProc::RebaseError => exp
|
85
|
+
exp.resolved_files.should == ['a']
|
86
|
+
exp.unresolved_files.should == []
|
87
|
+
|
88
|
+
exp.commands.length.should == 3
|
89
|
+
exp.commands[0].should match /^# Verify/
|
90
|
+
exp.commands[1].should == 'git add a'
|
91
|
+
exp.commands[2].should == 'git rebase --continue'
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
describe "when used on _parking_" do
|
97
|
+
it 'should fail #rebase_to_master' do
|
98
|
+
gitprocess.checkout('_parking_', :new_branch => 'master')
|
99
|
+
change_file_and_commit('a', '')
|
100
|
+
|
101
|
+
expect {gitprocess.runner}.should raise_error GitProc::ParkedChangesError
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
describe "closing the pull request" do
|
107
|
+
|
108
|
+
def log_level
|
109
|
+
Logger::ERROR
|
110
|
+
end
|
111
|
+
|
112
|
+
|
113
|
+
it "should work for an existing pull request" do
|
114
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
115
|
+
clone('fb') do |gp|
|
116
|
+
stub_request(:get, /test_repo\/pulls\?access_token=/).
|
117
|
+
to_return(:status => 200, :body => JSON([{:number => 987, :state => 'open', :html_url => 'test_url', :head => {:ref => 'fb'}, :base => {:ref => 'master'}}]))
|
118
|
+
stub_request(:patch, /test_repo\/pulls\/987\?access_token=/).
|
119
|
+
with(:body => JSON({:state => 'closed'})).
|
120
|
+
to_return(:status => 200, :body => JSON([{:number => 987, :state => 'closed', :html_url => 'test_url', :head => {:ref => 'fb'}, :base => {:ref => 'master'}}]))
|
121
|
+
gp.config('gitProcess.github.authToken', 'test-token')
|
122
|
+
gp.config('remote.origin.url', 'git@github.com:test_repo.git')
|
123
|
+
gp.config('github.user', 'test_user')
|
124
|
+
gp.stub(:fetch)
|
125
|
+
gp.stub(:push)
|
126
|
+
|
127
|
+
gp.runner
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
it "should not try when there is no auth token" do
|
133
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
134
|
+
clone('fb') do |gp|
|
135
|
+
gp.config('gitProcess.github.authToken', '')
|
136
|
+
gp.config('remote.origin.url', 'git@github.com:test_repo.git')
|
137
|
+
gp.config('github.user', 'test_user')
|
138
|
+
gp.stub(:fetch)
|
139
|
+
gp.stub(:push)
|
140
|
+
|
141
|
+
gp.runner
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
it "should not try when there is a file:// origin url" do
|
147
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
148
|
+
clone('fb') do |gp|
|
149
|
+
gp.config('gitProcess.github.authToken', 'test-token')
|
150
|
+
gp.config('github.user', 'test_user')
|
151
|
+
gp.stub(:fetch)
|
152
|
+
gp.stub(:push)
|
153
|
+
|
154
|
+
gp.runner
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
describe "custom integration branch" do
|
164
|
+
|
165
|
+
def log_level
|
166
|
+
Logger::ERROR
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
it "should use the 'gitProcess.integrationBranch' configuration" do
|
171
|
+
gitprocess.checkout('int-br', :new_branch => 'master') do
|
172
|
+
change_file_and_commit('a', '')
|
173
|
+
end
|
174
|
+
gitprocess.checkout('fb', :new_branch => 'master') do
|
175
|
+
change_file_and_commit('b', '')
|
176
|
+
end
|
177
|
+
gitprocess.branches['master'].delete
|
178
|
+
|
179
|
+
clone('int-br') do |gl|
|
180
|
+
gl.config('gitProcess.integrationBranch', 'int-br')
|
181
|
+
|
182
|
+
gl.checkout('ab', :new_branch => 'origin/int-br')
|
183
|
+
|
184
|
+
branches = gl.branches
|
185
|
+
branches.include?('origin/master').should be_false
|
186
|
+
branches['ab'].sha.should == branches['origin/int-br'].sha
|
187
|
+
|
188
|
+
gl.stub(:repo_name).and_return('test_repo')
|
189
|
+
|
190
|
+
change_file_and_commit('c', '', gl)
|
191
|
+
|
192
|
+
branches = gl.branches
|
193
|
+
branches['ab'].sha.should_not == branches['origin/int-br'].sha
|
194
|
+
|
195
|
+
gl.run
|
196
|
+
|
197
|
+
branches = gl.branches
|
198
|
+
branches['HEAD'].sha.should == branches['origin/int-br'].sha
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
|
205
|
+
describe "remove current feature branch" do
|
206
|
+
|
207
|
+
def log_level
|
208
|
+
Logger::ERROR
|
209
|
+
end
|
210
|
+
|
211
|
+
|
212
|
+
describe "when handling the parking branch" do
|
213
|
+
|
214
|
+
it "should create it based on origin/master" do
|
215
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
216
|
+
clone('fb') do |gp|
|
217
|
+
gp.remove_feature_branch
|
218
|
+
gp.branches.current.name.should == '_parking_'
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
|
223
|
+
it "should move it to the new origin/master if it already exists and is clean" do
|
224
|
+
clone do |gp|
|
225
|
+
gp.branch('_parking_', :base_branch => 'origin/master')
|
226
|
+
change_file_and_commit('a', '', gp)
|
227
|
+
|
228
|
+
gp.checkout('fb', :new_branch => 'origin/master')
|
229
|
+
|
230
|
+
gp.remove_feature_branch
|
231
|
+
|
232
|
+
gp.branches.current.name.should == '_parking_'
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
|
237
|
+
it "should move it to the new origin/master if it already exists and changes are part of the current branch" do
|
238
|
+
gitprocess.checkout('afb', :new_branch => 'master')
|
239
|
+
clone do |gp|
|
240
|
+
gp.checkout('_parking_', :new_branch => 'origin/master') do
|
241
|
+
change_file_and_commit('a', '', gp)
|
242
|
+
end
|
243
|
+
|
244
|
+
gp.checkout('fb', :new_branch => '_parking_')
|
245
|
+
gp.push('origin', 'fb', 'master')
|
246
|
+
|
247
|
+
gp.remove_feature_branch
|
248
|
+
gp.branches.current.name.should == '_parking_'
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
|
253
|
+
it "should move it out of the way if it has unaccounted changes on it" do
|
254
|
+
clone do |gp|
|
255
|
+
gp.checkout('_parking_', :new_branch => 'origin/master')
|
256
|
+
change_file_and_commit('a', '', gp)
|
257
|
+
gp.checkout('fb', :new_branch => 'origin/master')
|
258
|
+
|
259
|
+
gp.branches.include?('_parking_OLD_').should be_false
|
260
|
+
|
261
|
+
gp.remove_feature_branch
|
262
|
+
|
263
|
+
gp.branches.include?('_parking_OLD_').should be_true
|
264
|
+
gp.branches.current.name.should == '_parking_'
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
end
|
269
|
+
|
270
|
+
|
271
|
+
it "should delete the old local branch when it has been merged into origin/master" do
|
272
|
+
clone do |gp|
|
273
|
+
change_file_and_commit('a', '', gp)
|
274
|
+
|
275
|
+
gp.checkout('fb', :new_branch => 'origin/master')
|
276
|
+
gp.branches.include?('fb').should be_true
|
277
|
+
|
278
|
+
gp.remove_feature_branch
|
279
|
+
|
280
|
+
gp.branches.include?('fb').should be_false
|
281
|
+
gp.branches.current.name.should == '_parking_'
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
|
286
|
+
it "should raise an error when the local branch has not been merged into origin/master" do
|
287
|
+
clone do |gp|
|
288
|
+
gp.checkout('fb', :new_branch => 'origin/master')
|
289
|
+
change_file_and_commit('a', '', gp)
|
290
|
+
|
291
|
+
gp.branches.include?('fb').should be_true
|
292
|
+
|
293
|
+
expect {gp.remove_feature_branch}.should raise_error GitProc::GitProcessError
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
|
298
|
+
it "should delete the old remote branch" do
|
299
|
+
change_file_and_commit('a', '')
|
300
|
+
|
301
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
302
|
+
|
303
|
+
clone('fb') do |gp|
|
304
|
+
gp.branches.include?('origin/fb').should be_true
|
305
|
+
gp.remove_feature_branch
|
306
|
+
gp.branches.include?('origin/fb').should be_false
|
307
|
+
gitprocess.branches.include?('fb').should be_false
|
308
|
+
gp.branches.current.name.should == '_parking_'
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
end
|
313
|
+
|
314
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '../lib
|
1
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '../lib')
|
data/spec/sync_spec.rb
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
require 'git-process/sync'
|
2
|
+
require 'GitRepoHelper'
|
3
|
+
|
4
|
+
describe GitProc::Sync do
|
5
|
+
include GitRepoHelper
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
create_files(['.gitignore'])
|
9
|
+
gitprocess.commit('initial')
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
rm_rf(tmpdir)
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def create_process(dir, opts)
|
19
|
+
opts[:rebase] = false
|
20
|
+
opts[:force] = false
|
21
|
+
GitProc::Sync.new(dir, opts)
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
describe "#run" do
|
26
|
+
|
27
|
+
def log_level
|
28
|
+
Logger::ERROR
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
it "should work when pushing with fast-forward" do
|
33
|
+
change_file_and_commit('a', '')
|
34
|
+
|
35
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
36
|
+
|
37
|
+
clone('fb') do |gp|
|
38
|
+
change_file_and_commit('a', 'hello', gp)
|
39
|
+
gp.branches.include?('origin/fb').should be_true
|
40
|
+
gp.run
|
41
|
+
gp.branches.include?('origin/fb').should be_true
|
42
|
+
gitprocess.branches.include?('fb').should be_true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
it "should work with a different remote server name" do
|
48
|
+
change_file_and_commit('a', '')
|
49
|
+
|
50
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
51
|
+
|
52
|
+
clone('fb', 'a_remote') do |gp|
|
53
|
+
change_file_and_commit('a', 'hello', gp)
|
54
|
+
gp.branches.include?('a_remote/fb').should be_true
|
55
|
+
gp.run
|
56
|
+
gp.branches.include?('a_remote/fb').should be_true
|
57
|
+
gitprocess.branches.include?('fb').should be_true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
it "should fail when pushing with non-fast-forward and no force" do
|
63
|
+
change_file_and_commit('a', '')
|
64
|
+
|
65
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
66
|
+
|
67
|
+
clone('fb') do |gp|
|
68
|
+
gitprocess.checkout('fb') do
|
69
|
+
change_file_and_commit('a', 'hello', gitprocess)
|
70
|
+
end
|
71
|
+
|
72
|
+
expect {gp.run}.should raise_error GitProc::GitExecuteError
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
describe "when forcing the push" do
|
80
|
+
|
81
|
+
def create_process(dir, opts)
|
82
|
+
opts[:force] = false
|
83
|
+
opts[:force] = true
|
84
|
+
GitProc::Sync.new(dir, opts)
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
it "should work when pushing with non-fast-forward" do
|
89
|
+
change_file_and_commit('a', '')
|
90
|
+
|
91
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
92
|
+
|
93
|
+
clone('fb') do |gp|
|
94
|
+
gitprocess.checkout('fb') do
|
95
|
+
change_file_and_commit('a', 'hello', gp)
|
96
|
+
end
|
97
|
+
|
98
|
+
expect {gp.run}.should_not raise_error GitProc::GitExecuteError
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
describe "sync_with_server with different remote name" do
|
106
|
+
|
107
|
+
def log_level
|
108
|
+
Logger::ERROR
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
def create_process(dir, opts)
|
113
|
+
opts[:force] = false
|
114
|
+
opts[:force] = true
|
115
|
+
gp = GitProc::Sync.new(dir, opts)
|
116
|
+
gp.instance_variable_set('@server_name', 'a_remote')
|
117
|
+
gp
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
it "should work with a different remote server name" do
|
122
|
+
change_file_and_commit('a', '')
|
123
|
+
|
124
|
+
gitprocess.branch('fb', :base_branch => 'master')
|
125
|
+
|
126
|
+
clone('fb', 'a_remote') do |gp|
|
127
|
+
change_file_and_commit('a', 'hello', gp)
|
128
|
+
gp.branches.include?('a_remote/fb').should be_true
|
129
|
+
gp.run
|
130
|
+
gp.branches.include?('a_remote/fb').should be_true
|
131
|
+
gitprocess.branches.include?('fb').should be_true
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
describe "remove current feature branch when used while on _parking_" do
|
139
|
+
|
140
|
+
it 'should fail #sync_with_server' do
|
141
|
+
gitprocess.checkout('_parking_', :new_branch => 'master')
|
142
|
+
change_file_and_commit('a', '')
|
143
|
+
|
144
|
+
expect {gitprocess.runner}.should raise_error GitProc::ParkedChangesError
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-process
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 9
|
8
|
-
-
|
9
|
-
|
10
|
-
- 3
|
11
|
-
version: 0.9.1.pre3
|
8
|
+
- 2
|
9
|
+
version: 0.9.2
|
12
10
|
platform: ruby
|
13
11
|
authors:
|
14
12
|
- Jim Moore
|
@@ -16,7 +14,7 @@ autorequire:
|
|
16
14
|
bindir: bin
|
17
15
|
cert_chain: []
|
18
16
|
|
19
|
-
date: 2012-07-
|
17
|
+
date: 2012-07-10 00:00:00 -06:00
|
20
18
|
default_executable:
|
21
19
|
dependencies:
|
22
20
|
- !ruby/object:Gem::Dependency
|
@@ -47,6 +45,7 @@ files:
|
|
47
45
|
- .gitignore
|
48
46
|
- .rspec
|
49
47
|
- .travis.yml
|
48
|
+
- CHANGELOG.md
|
50
49
|
- Gemfile
|
51
50
|
- Gemfile.lock
|
52
51
|
- LICENSE
|
@@ -57,36 +56,39 @@ files:
|
|
57
56
|
- bin/git-sync
|
58
57
|
- bin/git-to-master
|
59
58
|
- git-process.gemspec
|
60
|
-
- lib/git-process/
|
61
|
-
- lib/git-process/
|
62
|
-
- lib/git-process/
|
63
|
-
- lib/git-process/
|
64
|
-
- lib/git-process/
|
65
|
-
- lib/git-process/
|
66
|
-
- lib/git-process/
|
67
|
-
- lib/git-process/
|
68
|
-
- lib/git-process/
|
69
|
-
- lib/git-process/
|
70
|
-
- lib/git-process/
|
71
|
-
- lib/git-process/
|
72
|
-
- lib/git-process/
|
73
|
-
- lib/git-process/
|
74
|
-
- lib/git-process/
|
75
|
-
- lib/git-process/
|
76
|
-
- lib/git-process/
|
77
|
-
- lib/git-process/
|
78
|
-
- lib/git-process/
|
79
|
-
- lib/git-process/
|
59
|
+
- lib/git-process/abstract_error_builder.rb
|
60
|
+
- lib/git-process/git_abstract_merge_error_builder.rb
|
61
|
+
- lib/git-process/git_branch.rb
|
62
|
+
- lib/git-process/git_branches.rb
|
63
|
+
- lib/git-process/git_lib.rb
|
64
|
+
- lib/git-process/git_merge_error.rb
|
65
|
+
- lib/git-process/git_process.rb
|
66
|
+
- lib/git-process/git_process_error.rb
|
67
|
+
- lib/git-process/git_process_options.rb
|
68
|
+
- lib/git-process/git_rebase_error.rb
|
69
|
+
- lib/git-process/git_status.rb
|
70
|
+
- lib/git-process/github_client.rb
|
71
|
+
- lib/git-process/github_pull_request.rb
|
72
|
+
- lib/git-process/github_service.rb
|
73
|
+
- lib/git-process/new_fb.rb
|
74
|
+
- lib/git-process/parked_changes_error.rb
|
75
|
+
- lib/git-process/pull_request.rb
|
76
|
+
- lib/git-process/rebase_to_master.rb
|
77
|
+
- lib/git-process/sync.rb
|
78
|
+
- lib/git-process/uncommitted_changes_error.rb
|
80
79
|
- lib/git-process/version.rb
|
81
80
|
- spec/FileHelpers.rb
|
82
81
|
- spec/GitRepoHelper.rb
|
83
|
-
- spec/
|
84
|
-
- spec/
|
85
|
-
- spec/
|
86
|
-
- spec/
|
87
|
-
- spec/
|
88
|
-
- spec/
|
82
|
+
- spec/git_abstract_merge_error_builder_spec.rb
|
83
|
+
- spec/git_lib_spec.rb
|
84
|
+
- spec/git_process_spec.rb
|
85
|
+
- spec/git_status_spec.rb
|
86
|
+
- spec/github_pull_request_spec.rb
|
87
|
+
- spec/github_service_spec.rb
|
88
|
+
- spec/new_fb_spec.rb
|
89
|
+
- spec/rebase_to_master_spec.rb
|
89
90
|
- spec/spec_helper.rb
|
91
|
+
- spec/sync_spec.rb
|
90
92
|
has_rdoc: true
|
91
93
|
homepage: http://jdigger.github.com/git-process/
|
92
94
|
licenses: []
|
@@ -107,13 +109,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
109
|
version: 1.8.7
|
108
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
111
|
requirements:
|
110
|
-
- - "
|
112
|
+
- - ">="
|
111
113
|
- !ruby/object:Gem::Version
|
112
114
|
segments:
|
113
|
-
-
|
114
|
-
|
115
|
-
- 1
|
116
|
-
version: 1.3.1
|
115
|
+
- 0
|
116
|
+
version: "0"
|
117
117
|
requirements: []
|
118
118
|
|
119
119
|
rubyforge_project:
|
@@ -124,10 +124,13 @@ summary: A set of scripts for a good git process
|
|
124
124
|
test_files:
|
125
125
|
- spec/FileHelpers.rb
|
126
126
|
- spec/GitRepoHelper.rb
|
127
|
-
- spec/
|
128
|
-
- spec/
|
129
|
-
- spec/
|
130
|
-
- spec/
|
131
|
-
- spec/
|
132
|
-
- spec/
|
127
|
+
- spec/git_abstract_merge_error_builder_spec.rb
|
128
|
+
- spec/git_lib_spec.rb
|
129
|
+
- spec/git_process_spec.rb
|
130
|
+
- spec/git_status_spec.rb
|
131
|
+
- spec/github_pull_request_spec.rb
|
132
|
+
- spec/github_service_spec.rb
|
133
|
+
- spec/new_fb_spec.rb
|
134
|
+
- spec/rebase_to_master_spec.rb
|
133
135
|
- spec/spec_helper.rb
|
136
|
+
- spec/sync_spec.rb
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'git-branch'
|
2
|
-
|
3
|
-
module Git
|
4
|
-
|
5
|
-
class GitBranches
|
6
|
-
include Enumerable
|
7
|
-
|
8
|
-
def initialize(lib)
|
9
|
-
branch_lines = lib.branch(nil, :all => true, :no_color => true).split("\n")
|
10
|
-
@items = SortedSet.new
|
11
|
-
branch_lines.each do |bl|
|
12
|
-
@items << GitBranch.new(bl[2..-1], bl[0..0] == '*', lib)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
def <<(item)
|
18
|
-
@items << item
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
def each(&block)
|
23
|
-
@items.each {|b| block.call(b)}
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
def names
|
28
|
-
@items.map {|b| b.name}
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def current
|
33
|
-
@items.find {|b| b.current? }
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
def parking
|
38
|
-
@items.find {|b| b.name == '_parking_' }
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
def include?(branch_name)
|
43
|
-
@items.find {|b| b.name == branch_name} != nil
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
def [](branch_name)
|
48
|
-
@items.find {|b| b.name == branch_name}
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'git-process-error'
|
2
|
-
require 'git-abstract-merge-error-builder'
|
3
|
-
|
4
|
-
module Git
|
5
|
-
|
6
|
-
class Process
|
7
|
-
|
8
|
-
class MergeError < GitProcessError
|
9
|
-
include Git::AbstractMergeErrorBuilder
|
10
|
-
|
11
|
-
attr_reader :error_message, :lib
|
12
|
-
|
13
|
-
def initialize(merge_error_message, lib)
|
14
|
-
@lib = lib
|
15
|
-
@error_message = merge_error_message
|
16
|
-
|
17
|
-
msg = build_message
|
18
|
-
|
19
|
-
super(msg)
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
def continue_command
|
24
|
-
'git commit'
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|