git-process 1.1.4 → 2.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.
Files changed (58) hide show
  1. data/CHANGELOG.md +14 -1
  2. data/LICENSE +193 -22
  3. data/README.md +212 -71
  4. data/man/git-process.1 +371 -0
  5. metadata +52 -140
  6. data/Gemfile +0 -20
  7. data/Gemfile.lock +0 -53
  8. data/Rakefile +0 -16
  9. data/bin/git-new-fb +0 -58
  10. data/bin/git-pull-request +0 -107
  11. data/bin/git-sync +0 -73
  12. data/bin/git-to-master +0 -133
  13. data/git-process.gemspec +0 -25
  14. data/lib/git-process/abstract_error_builder.rb +0 -53
  15. data/lib/git-process/changed_file_helper.rb +0 -115
  16. data/lib/git-process/git_abstract_merge_error_builder.rb +0 -146
  17. data/lib/git-process/git_branch.rb +0 -105
  18. data/lib/git-process/git_branches.rb +0 -73
  19. data/lib/git-process/git_config.rb +0 -153
  20. data/lib/git-process/git_lib.rb +0 -512
  21. data/lib/git-process/git_logger.rb +0 -84
  22. data/lib/git-process/git_merge_error.rb +0 -28
  23. data/lib/git-process/git_process.rb +0 -172
  24. data/lib/git-process/git_process_error.rb +0 -18
  25. data/lib/git-process/git_process_options.rb +0 -99
  26. data/lib/git-process/git_rebase_error.rb +0 -30
  27. data/lib/git-process/git_remote.rb +0 -256
  28. data/lib/git-process/git_status.rb +0 -108
  29. data/lib/git-process/github_configuration.rb +0 -298
  30. data/lib/git-process/github_pull_request.rb +0 -151
  31. data/lib/git-process/new_fb.rb +0 -50
  32. data/lib/git-process/parked_changes_error.rb +0 -41
  33. data/lib/git-process/pull_request.rb +0 -134
  34. data/lib/git-process/pull_request_error.rb +0 -25
  35. data/lib/git-process/rebase_to_master.rb +0 -148
  36. data/lib/git-process/sync.rb +0 -136
  37. data/lib/git-process/uncommitted_changes_error.rb +0 -23
  38. data/lib/git-process/version.rb +0 -22
  39. data/spec/FileHelpers.rb +0 -19
  40. data/spec/GitRepoHelper.rb +0 -123
  41. data/spec/changed_file_helper_spec.rb +0 -127
  42. data/spec/git_abstract_merge_error_builder_spec.rb +0 -126
  43. data/spec/git_branch_spec.rb +0 -123
  44. data/spec/git_config_spec.rb +0 -45
  45. data/spec/git_lib_spec.rb +0 -176
  46. data/spec/git_logger_spec.rb +0 -66
  47. data/spec/git_process_spec.rb +0 -208
  48. data/spec/git_remote_spec.rb +0 -227
  49. data/spec/git_status_spec.rb +0 -122
  50. data/spec/github_configuration_spec.rb +0 -152
  51. data/spec/github_pull_request_spec.rb +0 -96
  52. data/spec/github_test_helper.rb +0 -49
  53. data/spec/new_fb_spec.rb +0 -130
  54. data/spec/pull_request_helper.rb +0 -94
  55. data/spec/pull_request_spec.rb +0 -128
  56. data/spec/rebase_to_master_spec.rb +0 -429
  57. data/spec/spec_helper.rb +0 -21
  58. data/spec/sync_spec.rb +0 -304
@@ -1,123 +0,0 @@
1
- require 'git-process/git_lib'
2
- require 'GitRepoHelper'
3
-
4
- describe GitProc::GitBranch do
5
- include GitRepoHelper
6
-
7
-
8
- def log_level
9
- Logger::ERROR
10
- end
11
-
12
-
13
- before(:each) do
14
- create_files(%w(.gitignore))
15
- gitlib.commit('initial')
16
- end
17
-
18
-
19
- after(:each) do
20
- rm_rf(gitlib.workdir)
21
- end
22
-
23
-
24
- describe 'contains_all_of' do
25
-
26
- it 'should handle the trivial case' do
27
- current = gitlib.branches.current
28
- current.contains_all_of(current.name).should == true
29
- end
30
-
31
-
32
- it 'should handle new branch containing base branch that did not change' do
33
- base_branch = gitlib.branches.current
34
-
35
- gitlib.checkout('fb', :new_branch => base_branch.name)
36
- current = gitlib.branches.current
37
-
38
- change_file_and_commit('a', 'hello')
39
-
40
- current.contains_all_of(base_branch.name).should == true
41
- end
42
-
43
-
44
- it "should handle new branch containing base branch that did change" do
45
- base_branch = gitlib.branches.current
46
-
47
- gitlib.checkout('fb', :new_branch => base_branch.name)
48
- current = gitlib.branches.current
49
-
50
- gitlib.checkout(base_branch.name)
51
- change_file_and_commit('a', 'goodbye')
52
-
53
- current.contains_all_of(base_branch.name).should == false
54
- end
55
-
56
-
57
- it 'should handle containing in both branches' do
58
- base_branch = gitlib.branches.current
59
-
60
- gitlib.checkout('fb', :new_branch => base_branch.name)
61
- current = gitlib.branches.current
62
-
63
- change_file_and_commit('a', 'hello')
64
-
65
- gitlib.checkout(base_branch.name)
66
- change_file_and_commit('a', 'goodbye')
67
-
68
- current.contains_all_of(base_branch.name).should == false
69
- end
70
-
71
- end
72
-
73
-
74
- describe "is_ahead_of" do
75
-
76
- it "should handle the trivial case" do
77
- current = gitlib.branches.current
78
- current.is_ahead_of(current.name).should == false # same is not "ahead of"
79
- end
80
-
81
-
82
- it "should handle new branch containing base branch that did not change" do
83
- base_branch = gitlib.branches.current
84
-
85
- gitlib.checkout('fb', :new_branch => base_branch.name)
86
- current = gitlib.branches.current
87
-
88
- change_file_and_commit('a', 'hello')
89
-
90
- current.is_ahead_of(base_branch.name).should == true
91
- end
92
-
93
-
94
- it "should handle new branch containing base branch that did change" do
95
- base_branch = gitlib.branches.current
96
-
97
- gitlib.checkout('fb', :new_branch => base_branch.name)
98
- current = gitlib.branches.current
99
-
100
- gitlib.checkout(base_branch.name)
101
- change_file_and_commit('a', 'goodbye')
102
-
103
- current.is_ahead_of(base_branch.name).should == false
104
- end
105
-
106
-
107
- it "should handle containing in both branches" do
108
- base_branch = gitlib.branches.current
109
-
110
- gitlib.checkout('fb', :new_branch => base_branch.name)
111
- current = gitlib.branches.current
112
-
113
- change_file_and_commit('a', 'hello')
114
-
115
- gitlib.checkout(base_branch.name)
116
- change_file_and_commit('a', 'goodbye')
117
-
118
- current.is_ahead_of(base_branch.name).should == false
119
- end
120
-
121
- end
122
-
123
- end
@@ -1,45 +0,0 @@
1
- # Licensed under the Apache License, Version 2.0 (the "License");
2
- # you may not use this file except in compliance with the License.
3
- # You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- require 'FileHelpers'
14
- require 'git-process/git_lib'
15
- require 'git-process/git_config'
16
- include GitProc
17
-
18
- describe GitConfig do
19
-
20
- def tmpdir
21
- @tmpdir ||= Dir.mktmpdir
22
- end
23
-
24
-
25
- after(:each) do
26
- rm_rf(tmpdir)
27
- end
28
-
29
-
30
- it 'should retrieve values by []' do
31
- lib = GitLib.new(tmpdir, :log_level => Logger::ERROR)
32
- lib.command(:config, %w(somevalue.subvalue here))
33
- config = GitConfig.new(lib)
34
- config['somevalue.subvalue'].should == 'here'
35
- end
36
-
37
-
38
- it "should set values by []" do
39
- lib = GitLib.new(tmpdir, :log_level => Logger::ERROR)
40
- config = GitConfig.new(lib)
41
- config['somevalue.subvalue'] = 'there'
42
- lib.command(:config, %w(--get somevalue.subvalue)).should == 'there'
43
- end
44
-
45
- end
data/spec/git_lib_spec.rb DELETED
@@ -1,176 +0,0 @@
1
- require 'git-process/git_lib'
2
- require 'GitRepoHelper'
3
- include GitProc
4
-
5
-
6
- describe GitLib, :git_repo_helper do
7
-
8
-
9
- def log_level
10
- Logger::ERROR
11
- end
12
-
13
-
14
- describe 'workdir' do
15
-
16
- it 'should use the passed in directory when the top level is a git workdir' do
17
- dir = Dir.mktmpdir
18
- mkdir_p "#{dir}/.git"
19
- gitlib = GitLib.new(dir, :log_level => Logger::ERROR)
20
- gitlib.workdir.should == dir
21
- end
22
-
23
-
24
- it "should find the parent git workdir" do
25
- topdir = Dir.mktmpdir
26
- mkdir_p "#{topdir}/.git"
27
- dir = "#{topdir}/a/b/c/d/e/f/g"
28
- mkdir_p dir
29
- gitlib = GitLib.new(dir, :log_level => Logger::ERROR)
30
- gitlib.workdir.should == topdir
31
- end
32
-
33
- end
34
-
35
-
36
- describe 'branches' do
37
-
38
- it 'list all the branches' do
39
- gitlib.branch('ba', :base_branch => 'master')
40
- gitlib.branch('bb', :base_branch => 'master')
41
- gitlib.branch('origin/master', :base_branch => 'master')
42
-
43
- gitlib.branches.names.should == %w(ba bb master origin/master)
44
- end
45
-
46
- end
47
-
48
-
49
- describe 'fetch' do
50
-
51
- it 'parse the list of changes' do
52
- output = '''
53
- remote: Counting objects: 1028, done.
54
- remote: Compressing objects: 100% (301/301), done.
55
- remote: Total 699 (delta 306), reused 654 (delta 273)
56
- Receiving objects: 100% (699/699), 600.68 KiB | 686 KiB/s, done.
57
- Resolving deltas: 100% (306/306), completed with 84 local objects.
58
- From remote.system.com:tuser/test-proj
59
- 8e667e0..19ecc91 SITE_TOUR_MODAL -> origin/SITE_TOUR_MODAL
60
- + cea75d7...d656188 WEBCMS-2014 -> origin/WEBCMS-2014 (forced update)
61
- * [new branch] WEBCMS-2047 -> origin/WEBCMS-2047
62
- ca9e80e..d383005 WEBCMS-2157 -> origin/WEBCMS-2157
63
- 77b5d5c..f485c7f WEBCMS-2159 -> origin/WEBCMS-2159
64
- * [new branch] WEBCMS-2166 -> origin/WEBCMS-2166
65
- c648f2a..86ee15e WEBCMS-2167 -> origin/WEBCMS-2167
66
- * [new tag] RELEASE_1.0.1.53 -> RELEASE_1.0.1.53
67
- * [new tag] RELEASE_1.0.1.54 -> RELEASE_1.0.1.54
68
- x [deleted] (none) -> origin/WEBCMS-4650-resi-breadcrumbs
69
- * [new branch] WEBCMS-2169 -> origin/WEBCMS-2169
70
- * [new branch] base-carousel -> origin/base-carousel
71
- 1de9c437..7546667 develop -> origin/develop
72
- 90e8d75..23ae7d1 new-ui-smoketest -> origin/new-ui-smoketest
73
- * [new branch] webcms-2023 -> origin/webcms-2023
74
- b9797f8..dd24a9f webcms-2135 -> origin/webcms-2135
75
- * [new branch] webcms-831-faq-web-service -> origin/webcms-831-faq-web-service
76
- x [deleted] (none) -> origin/webcms-1315-masthead
77
- '''
78
- changes = gitlib.fetch_changes(output)
79
-
80
- changes[:new_branch].size().should == 6
81
- changes[:new_tag].size().should == 2
82
- changes[:deleted].size().should == 2
83
- changes[:force_updated].size().should == 1
84
- changes[:updated].size().should == 7
85
-
86
- empty_changes = gitlib.fetch_changes('')
87
-
88
- empty_changes[:new_branch].size().should == 0
89
- empty_changes[:new_tag].size().should == 0
90
- empty_changes[:deleted].size().should == 0
91
- empty_changes[:force_updated].size().should == 0
92
- empty_changes[:updated].size().should == 0
93
- end
94
-
95
- end
96
-
97
-
98
- describe "branch" do
99
-
100
- it "should create a branch with default base" do
101
- gitlib.stub(:command).with(:branch, %w(test_branch master))
102
- gitlib.branch('test_branch')
103
- end
104
-
105
-
106
- it "should create a branch with explicit base" do
107
- gitlib.should_receive(:command).with(:branch, %w(test_branch other_branch))
108
- gitlib.branch('test_branch', :base_branch => 'other_branch')
109
- end
110
-
111
-
112
- it 'should delete a branch without force' do
113
- gitlib.should_receive(:command).with(:branch, %w(-d test_branch))
114
- gitlib.branch('test_branch', :delete => true)
115
- end
116
-
117
-
118
- it 'should delete a branch with force' do
119
- gitlib.should_receive(:command).with(:branch, %w(-D test_branch))
120
- gitlib.branch('test_branch', :delete => true, :force => true)
121
- end
122
-
123
-
124
- it "should rename a branch" do
125
- gitlib.should_receive(:command).with(:branch, %w(-m test_branch new_branch))
126
- gitlib.branch('test_branch', :rename => 'new_branch')
127
- end
128
-
129
- end
130
-
131
-
132
- describe "push" do
133
-
134
- it "should push local branch to remote" do
135
- gitlib.should_receive(:command).with(:push, %w(remote local_branch:test_branch))
136
-
137
- gitlib.push('remote', 'local_branch', 'test_branch')
138
- end
139
-
140
-
141
- it "should push current branch to remote" do
142
- gitlib.stub(:command).with(:branch, %w(-a --no-color)).and_return("* my_branch\n")
143
- gitlib.should_receive(:command).with(:push, %w(remote my_branch:my_branch))
144
-
145
- gitlib.push('remote', 'my_branch', nil)
146
- end
147
-
148
-
149
- it "should remove named branch on remote" do
150
- gitlib.remote.stub(:name).and_return('remote_server')
151
- gitlib.config.stub(:master_branch).and_return('master')
152
- gitlib.should_receive(:command).with(:push, %w(remote_server --delete my_branch))
153
-
154
- gitlib.push('remote_server', 'my_branch', nil, :delete => true)
155
- end
156
-
157
-
158
- it "should remove current branch on remote" do
159
- gitlib.remote.stub(:name).and_return('remote_server')
160
- gitlib.config.stub(:master_branch).and_return('master')
161
- gitlib.should_receive(:command).with(:push, %w(remote_server --delete my_branch))
162
-
163
- gitlib.push('remote_server', nil, nil, :delete => 'my_branch')
164
- end
165
-
166
-
167
- it "should not remove integration branch on remote" do
168
- gitlib.remote.stub(:name).and_return('remote_server')
169
- gitlib.config.stub(:master_branch).and_return('master')
170
-
171
- expect { gitlib.push('remote_server', nil, nil, :delete => 'master') }.to raise_error GitProcessError
172
- end
173
-
174
- end
175
-
176
- end
@@ -1,66 +0,0 @@
1
- # Licensed under the Apache License, Version 2.0 (the "License");
2
- # you may not use this file except in compliance with the License.
3
- # You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- require 'git-process/git_logger'
14
- include GitProc
15
-
16
- describe GitLogger do
17
-
18
- it 'should log info blocks' do
19
- val = false
20
- GitLogger.new(GitLogger::INFO, nil).info { val = true }
21
- val.should == true
22
- end
23
-
24
-
25
- it 'should not log info blocks by default' do
26
- val = false
27
- GitLogger.new(nil, nil).info { val = true }
28
- val.should == false
29
- end
30
-
31
-
32
- it 'should log warn blocks' do
33
- val = false
34
- GitLogger.new(GitLogger::WARN, nil).warn { val = true }
35
- val.should == true
36
- end
37
-
38
-
39
- it "should log warn blocks by default" do
40
- val = false
41
- GitLogger.new(nil, nil).warn { val = true }
42
- val.should == true
43
- end
44
-
45
-
46
- it "should log error blocks" do
47
- val = false
48
- GitLogger.new(GitLogger::ERROR, nil).error { val = true }
49
- val.should == true
50
- end
51
-
52
-
53
- it "should log error blocks by default" do
54
- val = false
55
- GitLogger.new.error { val = true }
56
- val.should == true
57
- end
58
-
59
-
60
- it 'should log debug blocks' do
61
- val = false
62
- GitLogger.new(GitLogger::DEBUG, nil).debug { val = true }
63
- val.should == true
64
- end
65
-
66
- end
@@ -1,208 +0,0 @@
1
- require 'git-process/git_process'
2
- require 'GitRepoHelper'
3
- require 'fileutils'
4
-
5
- describe GitProc::Process do
6
- include GitRepoHelper
7
-
8
-
9
- def log_level
10
- Logger::ERROR
11
- end
12
-
13
-
14
- before(:each) do
15
- create_files(%w(.gitignore))
16
- gitlib.commit('initial')
17
- end
18
-
19
-
20
- after(:each) do
21
- rm_rf(gitlib.workdir)
22
- end
23
-
24
-
25
- describe 'run lifecycle' do
26
-
27
- it 'should call the standard hooks' do
28
- proc = GitProc::Process.new(gitlib)
29
- proc.should_receive(:verify_preconditions)
30
- proc.should_receive(:runner)
31
- proc.should_receive(:cleanup)
32
- proc.should_not_receive(:exit)
33
-
34
- proc.run
35
- end
36
-
37
-
38
- it "should call 'cleanup' even if there's an error" do
39
- proc = GitProc::Process.new(gitlib)
40
- proc.should_receive(:verify_preconditions)
41
- proc.should_receive(:runner).and_raise(GitProc::GitProcessError.new("Error!"))
42
- proc.should_receive(:cleanup)
43
- proc.should_receive(:exit)
44
- proc.should_receive(:puts).with("Error!")
45
-
46
- proc.run
47
- end
48
-
49
- end
50
-
51
-
52
- describe "validate local integration branch" do
53
-
54
- it "should use remove the int-branch if not on it and not blocked" do
55
- clone_repo('master') do |gl|
56
- gl.checkout('fb', :new_branch => 'master')
57
-
58
- gp = GitProc::Process.new(gl)
59
- gp.stub(:ask_about_removing_master).and_return(true)
60
-
61
- gp.verify_preconditions
62
-
63
- gl.branches.include?('master').should be_false
64
- end
65
- end
66
-
67
-
68
- it "should ask use remove the int-branch if not on it and not blocked" do
69
- clone_repo('master') do |gl|
70
- gl.checkout('fb', :new_branch => 'master')
71
-
72
- gp = GitProc::Process.new(gl)
73
- gp.should_receive(:ask_about_removing_master).and_return(true)
74
-
75
- gp.verify_preconditions
76
-
77
- gl.branches.include?('master').should be_false
78
- end
79
- end
80
-
81
-
82
- it "should ask use remove the int-branch if not on it and not blocked and not remove if answered no" do
83
- clone_repo('master') do |gl|
84
- gl.checkout('fb', :new_branch => 'master')
85
-
86
- gp = GitProc::Process.new(gl)
87
- gp.should_receive(:ask_about_removing_master).and_return(false)
88
-
89
- gp.verify_preconditions
90
-
91
- gl.branches.include?('master').should be_true
92
- end
93
- end
94
-
95
-
96
- it "should not remove the int-branch if on it" do
97
- clone_repo('master') do |gl|
98
- gp = GitProc::Process.new(gl)
99
- gp.verify_preconditions
100
-
101
- gl.branches.include?('master').should be_true
102
- end
103
- end
104
-
105
-
106
- it "should not remove the int-branch if blocked" do
107
- clone_repo('master') do |gl|
108
- gl.config['gitProcess.keepLocalIntegrationBranch'] = 'true'
109
- gl.checkout('fb', :new_branch => 'master')
110
-
111
- gp = GitProc::Process.new(gl)
112
- gp.verify_preconditions
113
-
114
- gl.branches.include?('master').should be_true
115
- end
116
- end
117
-
118
-
119
- describe "local vs remote branch status" do
120
-
121
- before(:each) do
122
- change_file_and_commit('a.txt', 'a content', gitlib)
123
- change_file_and_commit('b.txt', 'b content', gitlib)
124
- end
125
-
126
-
127
- it "should not remove if both have changes" do
128
- clone_repo('master') do |gl|
129
- change_file_and_commit('c.txt', 'c on origin/master', gitlib)
130
- change_file_and_commit('d.txt', 'd on master', gl)
131
-
132
- gl.checkout('fb', :new_branch => 'master')
133
-
134
- gl.fetch
135
-
136
- gp = GitProc::Process.new(gl)
137
- gp.verify_preconditions
138
-
139
- gl.branches.include?('master').should be_true
140
- end
141
- end
142
-
143
-
144
- it "should remove if server changed but not local" do
145
- clone_repo('master') do |gl|
146
- gp = GitProc::Process.new(gl)
147
- gp.stub(:ask_about_removing_master).and_return(true)
148
-
149
- change_file_and_commit('c.txt', 'c on origin/master', gitlib)
150
-
151
- gl.checkout('fb', :new_branch => 'master')
152
-
153
- gl.fetch
154
-
155
- gp.verify_preconditions
156
-
157
- gl.branches.include?('master').should be_false
158
- end
159
- end
160
-
161
-
162
- it "should not remove if server did not change but local did" do
163
- clone_repo('master') do |gl|
164
- change_file_and_commit('c.txt', 'c on master', gl)
165
-
166
- gl.checkout('fb', :new_branch => 'master')
167
-
168
- gl.fetch
169
-
170
- gp = GitProc::Process.new(gl)
171
- gp.verify_preconditions
172
-
173
- gl.branches.include?('master').should be_true
174
- end
175
- end
176
-
177
-
178
- it "should remove if server and local are the same" do
179
- change_file_and_commit('c.txt', 'c on origin/master', gitlib)
180
-
181
- clone_repo('master') do |gl|
182
- gl.checkout('fb', :new_branch => 'master')
183
- gp = GitProc::Process.new(gl)
184
- gp.stub(:ask_about_removing_master).and_return(true)
185
-
186
- gl.fetch
187
- gp.verify_preconditions
188
-
189
- gl.branches.include?('master').should be_false
190
- end
191
- end
192
-
193
- end
194
-
195
-
196
- it "should not remove the int-branch if not a clone" do
197
- gitlib.config['gitProcess.keepLocalIntegrationBranch'] = 'false'
198
- gitlib.checkout('fb', :new_branch => 'master')
199
-
200
- gitprocess = GitProc::Process.new(gitlib)
201
- gitprocess.verify_preconditions
202
-
203
- gitlib.branches.include?('master').should be_true
204
- end
205
-
206
- end
207
-
208
- end