socialcast-git-extensions 3.0.9 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -35,12 +35,15 @@ module Socialcast
35
35
  branch = current_branch
36
36
  repo = current_repo
37
37
  url = create_pull_request token, branch, repo, description
38
+ say "Pull request created: #{url}"
38
39
 
39
40
  short_description = description.split("\n").first(5).join("\n")
40
- review_message = ["@SocialcastDevelopers #reviewrequest for #{branch} #scgitx", short_description, changelog_summary(branch)].join("\n\n")
41
+ review_message = ["#reviewrequest for #{branch} #scgitx", "/cc @SocialcastDevelopers", short_description, changelog_summary(branch)].join("\n\n")
41
42
  post review_message, :url => url, :message_type => 'review_request'
42
43
  end
43
44
 
45
+ # TODO: use --no-edit to skip merge messages
46
+ # TODO: use pull --rebase to skip merge commit
44
47
  desc 'update', 'Update the current branch with latest changes from the remote feature branch and master'
45
48
  def update
46
49
  branch = current_branch
@@ -64,7 +67,7 @@ module Socialcast
64
67
  say "Deleting branches that have been merged into "
65
68
  say Socialcast::Gitx::BASE_BRANCH, :green
66
69
  branches(:merged => true, :remote => true).each do |branch|
67
- run_cmd "grb rm #{branch}" unless aggregate_branch?(branch)
70
+ run_cmd "git push origin --delete #{branch}" unless aggregate_branch?(branch)
68
71
  end
69
72
  branches(:merged => true).each do |branch|
70
73
  run_cmd "git branch -d #{branch}" unless aggregate_branch?(branch)
@@ -73,8 +76,7 @@ module Socialcast
73
76
 
74
77
  desc 'track', 'set the current branch to track the remote branch with the same name'
75
78
  def track
76
- branch = current_branch
77
- run_cmd "git branch --set-upstream #{branch} origin/#{branch}"
79
+ track_branch current_branch
78
80
  end
79
81
 
80
82
  desc 'start', 'start a new git branch with latest changes from master'
@@ -100,7 +102,7 @@ module Socialcast
100
102
 
101
103
  desc 'share', 'Share the current branch in the remote repository'
102
104
  def share
103
- run_cmd "grb publish #{current_branch}"
105
+ share_branch current_branch
104
106
  end
105
107
 
106
108
  desc 'integrate', 'integrate the current branch into one of the aggregate development branches'
@@ -129,11 +131,12 @@ module Socialcast
129
131
  good_branch = default_good_branch if good_branch.length == 0
130
132
  good_branch = "last_known_good_#{good_branch}" unless good_branch.starts_with?('last_known_good_')
131
133
 
132
- removed_branches = reset_branch(bad_branch, good_branch)
133
- reset_branch("last_known_good_#{bad_branch}", good_branch)
134
+ removed_branches = nuke_branch(bad_branch, good_branch)
135
+ nuke_branch("last_known_good_#{bad_branch}", good_branch)
134
136
 
135
137
  message_parts = []
136
138
  message_parts << "#worklog resetting #{bad_branch} branch to #{good_branch} #scgitx"
139
+ message_parts << "/cc @SocialcastDevelopers"
137
140
  if removed_branches.any?
138
141
  message_parts << ""
139
142
  message_parts << "the following branches were affected:"
@@ -42,7 +42,7 @@ module Socialcast
42
42
  # reset the specified branch to the same set of commits as the destination branch
43
43
  # reverts commits on aggregate branches back to a known good state
44
44
  # returns list of branches that were removed
45
- def reset_branch(branch, head_branch)
45
+ def nuke_branch(branch, head_branch)
46
46
  return [] if branch == head_branch
47
47
  raise "Only aggregate branches are allowed to be reset: #{AGGREGATE_BRANCHES}" unless aggregate_branch?(branch)
48
48
  say "Resetting "
@@ -56,12 +56,22 @@ module Socialcast
56
56
  run_cmd "git branch -D #{branch}" rescue nil
57
57
  run_cmd "git push origin --delete #{branch}" rescue nil
58
58
  run_cmd "git checkout -b #{branch}"
59
- run_cmd "grb publish #{branch}"
59
+ share_branch branch
60
60
  run_cmd "git checkout #{Socialcast::Gitx::BASE_BRANCH}"
61
61
 
62
62
  removed_branches
63
63
  end
64
64
 
65
+ # share the local branch in the remote repo
66
+ def share_branch(branch)
67
+ run_cmd "git push origin #{branch}"
68
+ track_branch branch
69
+ end
70
+
71
+ def track_branch(branch)
72
+ run_cmd "git branch --set-upstream #{branch} origin/#{branch}"
73
+ end
74
+
65
75
  # integrate a branch into a destination aggregate branch
66
76
  # blow away the local aggregate branch to ensure pulling into most recent "clean" branch
67
77
  def integrate_branch(branch, destination_branch)
@@ -81,8 +91,8 @@ module Socialcast
81
91
  # nuke local branch and pull fresh version from remote repo
82
92
  def refresh_branch_from_remote(destination_branch)
83
93
  run_cmd "git branch -D #{destination_branch}" rescue nil
94
+ run_cmd "git fetch origin"
84
95
  run_cmd "git checkout #{destination_branch}"
85
- run_cmd "git pull origin #{destination_branch}"
86
96
  end
87
97
 
88
98
  def aggregate_branch?(branch)
@@ -1,5 +1,5 @@
1
1
  module Socialcast
2
2
  module Gitx
3
- VERSION = "3.0.9"
3
+ VERSION = "3.1.0"
4
4
  end
5
5
  end
@@ -15,7 +15,6 @@ Gem::Specification.new do |s|
15
15
  s.rubyforge_project = "socialcast-git-extensions"
16
16
 
17
17
  s.add_runtime_dependency(%q<grit>, [">= 0"])
18
- s.add_runtime_dependency(%q<git_remote_branch>, [">= 0"])
19
18
  s.add_runtime_dependency(%q<socialcast>, [">= 1.1.4"])
20
19
  s.add_runtime_dependency(%q<rest-client>, [">= 1.4.0"])
21
20
  s.add_runtime_dependency(%q<json_pure>, [">= 0"])
@@ -47,8 +47,8 @@ describe Socialcast::Gitx::CLI do
47
47
  "git pull origin master",
48
48
  "git push origin HEAD",
49
49
  "git branch -D prototype",
50
+ "git fetch origin",
50
51
  "git checkout prototype",
51
- "git pull origin prototype",
52
52
  "git pull . FOO",
53
53
  "git push origin HEAD",
54
54
  "git checkout FOO",
@@ -68,8 +68,8 @@ describe Socialcast::Gitx::CLI do
68
68
  "git pull origin master",
69
69
  "git push origin HEAD",
70
70
  "git branch -D prototype",
71
+ "git fetch origin",
71
72
  "git checkout prototype",
72
- "git pull origin prototype",
73
73
  "git pull . FOO",
74
74
  "git push origin HEAD",
75
75
  "git checkout FOO",
@@ -89,14 +89,14 @@ describe Socialcast::Gitx::CLI do
89
89
  "git pull origin master",
90
90
  "git push origin HEAD",
91
91
  "git branch -D staging",
92
+ "git fetch origin",
92
93
  "git checkout staging",
93
- "git pull origin staging",
94
94
  "git pull . FOO",
95
95
  "git push origin HEAD",
96
96
  "git checkout FOO",
97
97
  "git branch -D prototype",
98
+ "git fetch origin",
98
99
  "git checkout prototype",
99
- "git pull origin prototype",
100
100
  "git pull . staging",
101
101
  "git push origin HEAD",
102
102
  "git checkout staging",
@@ -140,8 +140,8 @@ describe Socialcast::Gitx::CLI do
140
140
  "git pull . FOO",
141
141
  "git push origin HEAD",
142
142
  "git branch -D staging",
143
+ "git fetch origin",
143
144
  "git checkout staging",
144
- "git pull origin staging",
145
145
  "git pull . master",
146
146
  "git push origin HEAD",
147
147
  "git checkout master",
@@ -159,7 +159,7 @@ describe Socialcast::Gitx::CLI do
159
159
  prototype_branches = %w( dev-foo dev-bar )
160
160
  master_branches = %w( dev-foo )
161
161
  Socialcast::Gitx::CLI.any_instance.should_receive(:branches).and_return(prototype_branches, master_branches, prototype_branches, master_branches)
162
- Socialcast::Gitx::CLI.any_instance.should_receive(:post).with("#worklog resetting prototype branch to last_known_good_master #scgitx\n\nthe following branches were affected:\n* dev-bar")
162
+ Socialcast::Gitx::CLI.any_instance.should_receive(:post).with("#worklog resetting prototype branch to last_known_good_master #scgitx\n/cc @SocialcastDevelopers\n\nthe following branches were affected:\n* dev-bar")
163
163
  Socialcast::Gitx::CLI.start ['nuke', 'prototype', '--destination', 'master']
164
164
  end
165
165
  it 'should publish message into socialcast' do end # see expectations
@@ -167,21 +167,23 @@ describe Socialcast::Gitx::CLI do
167
167
  Socialcast::Gitx::CLI.stubbed_executed_commands.should == [
168
168
  "git checkout master",
169
169
  "git branch -D last_known_good_master",
170
+ "git fetch origin",
170
171
  "git checkout last_known_good_master",
171
- "git pull origin last_known_good_master",
172
172
  "git branch -D prototype",
173
173
  "git push origin --delete prototype",
174
174
  "git checkout -b prototype",
175
- "grb publish prototype",
175
+ "git push origin prototype",
176
+ "git branch --set-upstream prototype origin/prototype",
176
177
  "git checkout master",
177
178
  "git checkout master",
178
179
  "git branch -D last_known_good_master",
180
+ "git fetch origin",
179
181
  "git checkout last_known_good_master",
180
- "git pull origin last_known_good_master",
181
182
  "git branch -D last_known_good_prototype",
182
183
  "git push origin --delete last_known_good_prototype",
183
184
  "git checkout -b last_known_good_prototype",
184
- "grb publish last_known_good_prototype",
185
+ "git push origin last_known_good_prototype",
186
+ "git branch --set-upstream last_known_good_prototype origin/last_known_good_prototype",
185
187
  "git checkout master"
186
188
  ]
187
189
  end
@@ -194,12 +196,13 @@ describe Socialcast::Gitx::CLI do
194
196
  Socialcast::Gitx::CLI.stubbed_executed_commands.should == [
195
197
  "git checkout master",
196
198
  "git branch -D last_known_good_staging",
199
+ "git fetch origin",
197
200
  "git checkout last_known_good_staging",
198
- "git pull origin last_known_good_staging",
199
201
  "git branch -D staging",
200
202
  "git push origin --delete staging",
201
203
  "git checkout -b staging",
202
- "grb publish staging",
204
+ "git push origin staging",
205
+ "git branch --set-upstream staging origin/staging",
203
206
  "git checkout master"
204
207
  ]
205
208
  end
@@ -213,12 +216,13 @@ describe Socialcast::Gitx::CLI do
213
216
  Socialcast::Gitx::CLI.stubbed_executed_commands.should == [
214
217
  "git checkout master",
215
218
  "git branch -D last_known_good_prototype",
219
+ "git fetch origin",
216
220
  "git checkout last_known_good_prototype",
217
- "git pull origin last_known_good_prototype",
218
221
  "git branch -D prototype",
219
222
  "git push origin --delete prototype",
220
223
  "git checkout -b prototype",
221
- "grb publish prototype",
224
+ "git push origin prototype",
225
+ "git branch --set-upstream prototype origin/prototype",
222
226
  "git checkout master"
223
227
  ]
224
228
  end
@@ -232,21 +236,23 @@ describe Socialcast::Gitx::CLI do
232
236
  Socialcast::Gitx::CLI.stubbed_executed_commands.should == [
233
237
  "git checkout master",
234
238
  "git branch -D last_known_good_master",
239
+ "git fetch origin",
235
240
  "git checkout last_known_good_master",
236
- "git pull origin last_known_good_master",
237
241
  "git branch -D prototype",
238
242
  "git push origin --delete prototype",
239
243
  "git checkout -b prototype",
240
- "grb publish prototype",
244
+ "git push origin prototype",
245
+ "git branch --set-upstream prototype origin/prototype",
241
246
  "git checkout master",
242
247
  "git checkout master",
243
248
  "git branch -D last_known_good_master",
249
+ "git fetch origin",
244
250
  "git checkout last_known_good_master",
245
- "git pull origin last_known_good_master",
246
251
  "git branch -D last_known_good_prototype",
247
252
  "git push origin --delete last_known_good_prototype",
248
253
  "git checkout -b last_known_good_prototype",
249
- "grb publish last_known_good_prototype",
254
+ "git push origin last_known_good_prototype",
255
+ "git branch --set-upstream last_known_good_prototype origin/last_known_good_prototype",
250
256
  "git checkout master"
251
257
  ]
252
258
  end
@@ -267,7 +273,7 @@ describe Socialcast::Gitx::CLI do
267
273
  stub_request(:post, "https://api.github.com/repos/socialcast/socialcast-git-extensions/pulls").
268
274
  to_return(:status => 200, :body => %q({"html_url": "http://github.com/repo/project/pulls/1"}), :headers => {})
269
275
 
270
- Socialcast::Gitx::CLI.any_instance.should_receive(:post).with("@SocialcastDevelopers #reviewrequest for FOO #scgitx\n\ntesting\n\n", :url => 'http://github.com/repo/project/pulls/1', :message_type => 'review_request')
276
+ Socialcast::Gitx::CLI.any_instance.should_receive(:post).with("#reviewrequest for FOO #scgitx\n\n/cc @SocialcastDevelopers\n\ntesting\n\n", :url => 'http://github.com/repo/project/pulls/1', :message_type => 'review_request')
271
277
  Socialcast::Gitx::CLI.start ['reviewrequest', '--description', 'testing']
272
278
  end
273
279
  it 'should create github pull request' do end # see expectations
@@ -292,14 +298,14 @@ describe Socialcast::Gitx::CLI do
292
298
  "git pull origin master",
293
299
  "git push origin HEAD",
294
300
  "git branch -D staging",
301
+ "git fetch origin",
295
302
  "git checkout staging",
296
- "git pull origin staging",
297
303
  "git pull . FOO",
298
304
  "git push origin HEAD",
299
305
  "git checkout FOO",
300
306
  "git branch -D prototype",
307
+ "git fetch origin",
301
308
  "git checkout prototype",
302
- "git pull origin prototype",
303
309
  "git pull . staging",
304
310
  "git push origin HEAD",
305
311
  "git checkout staging",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socialcast-git-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.9
4
+ version: 3.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-10 00:00:00.000000000 Z
12
+ date: 2012-09-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: grit
@@ -27,22 +27,6 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: git_remote_branch
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: socialcast
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -230,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
230
214
  version: '0'
231
215
  segments:
232
216
  - 0
233
- hash: 841044908944222691
217
+ hash: -204662035920604822
234
218
  required_rubygems_version: !ruby/object:Gem::Requirement
235
219
  none: false
236
220
  requirements:
@@ -239,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
223
  version: '0'
240
224
  segments:
241
225
  - 0
242
- hash: 841044908944222691
226
+ hash: -204662035920604822
243
227
  requirements: []
244
228
  rubyforge_project: socialcast-git-extensions
245
229
  rubygems_version: 1.8.24