gitscape 1.5 → 1.5.1
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.
- data/lib/gitscape/base.rb +42 -36
- data/lib/gitscape/version.rb +1 -1
- metadata +3 -2
data/lib/gitscape/base.rb
CHANGED
@@ -44,7 +44,7 @@ class Gitscape::Base
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def live_iteration
|
47
|
-
toRet = `git branch -a --merged live`.split("\n").select{|b| /release\/i(\d+)$/.match b}.map{|b| b.scan(/release\/i(\d+)$/).flatten[0].to_i}.sort.last
|
47
|
+
toRet = `git branch -a --merged origin/live`.split("\n").select{|b| /release\/i(\d+)$/.match b}.map{|b| b.scan(/release\/i(\d+)$/).flatten[0].to_i}.sort.last
|
48
48
|
toRet
|
49
49
|
end
|
50
50
|
|
@@ -147,7 +147,11 @@ class Gitscape::Base
|
|
147
147
|
`git checkout #{previous_branch}`
|
148
148
|
end
|
149
149
|
|
150
|
-
def release_start
|
150
|
+
def release_start options={:push=>true, :update_env=>true}
|
151
|
+
# Handle default options
|
152
|
+
options[:push] = true if options[:push].nil?
|
153
|
+
options[:update_env] = true if options[:update_env].nil?
|
154
|
+
|
151
155
|
# Switch to master branch
|
152
156
|
puts `git checkout master`
|
153
157
|
puts `git pull origin master`
|
@@ -155,47 +159,47 @@ class Gitscape::Base
|
|
155
159
|
# Check that the working copy is clean
|
156
160
|
exit 1 unless git_working_copy_is_clean
|
157
161
|
|
158
|
-
|
159
|
-
|
160
|
-
previous_version_number = version_file.read.delete("i").to_i
|
161
|
-
new_version_number = previous_version_number + 1
|
162
|
-
|
163
|
-
# Get the new release_branch_name
|
164
|
-
release_branch_name = "i#{new_version_number}"
|
162
|
+
new_version_number = live_iteration + 1
|
163
|
+
release_branch_name = "release/i#{new_version_number}"
|
165
164
|
|
166
165
|
# Cut the branch
|
167
|
-
puts `git checkout -b "
|
166
|
+
puts `git checkout -b "#{release_branch_name}" master`
|
168
167
|
exit 1 unless $?.exitstatus == 0
|
169
168
|
|
170
169
|
# Bump the version number
|
171
|
-
`echo "#{
|
170
|
+
`echo "#i{new_version_number}" > ./version`
|
172
171
|
exit 1 unless $?.exitstatus == 0
|
173
172
|
|
174
173
|
# Commit the bump
|
175
|
-
puts `git commit -a -m "Begin #{
|
174
|
+
puts `git commit -a -m "Begin i#{new_version_number} release candidate"`
|
176
175
|
exit 1 unless $?.exitstatus == 0
|
176
|
+
|
177
|
+
# Push to origin
|
178
|
+
if options[:push]
|
179
|
+
puts `git push origin -u "#{release_branch_name}"`
|
180
|
+
exit 1 unless $?.exitstatus == 0
|
181
|
+
end
|
177
182
|
|
178
183
|
# Update qa to the new commit
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
puts `git push origin -u "release/#{release_branch_name}"`
|
184
|
-
exit 1 unless $?.exitstatus == 0
|
184
|
+
if options[:update_env]
|
185
|
+
puts `git push origin "#{release_branch_name}:qa"`
|
186
|
+
exit 1 unless $?.exitstatus == 0
|
187
|
+
end
|
185
188
|
end
|
186
189
|
|
187
|
-
def release_finish
|
190
|
+
def release_finish options={:push=>true, :update_env=>true}
|
191
|
+
# Handle default options
|
192
|
+
options[:push] = true if options[:push].nil?
|
193
|
+
options[:update_env] = true if options[:update_env].nil?
|
194
|
+
|
188
195
|
# Check if the working copy is clean, if not, exit
|
189
196
|
exit 1 unless git_working_copy_is_clean
|
190
197
|
|
191
198
|
# Get the right release_branch_name to merge
|
192
|
-
current_version_number =
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
end
|
197
|
-
release_branch_name = "release/i#{new_version_number}"
|
198
|
-
release_branch = @repo.branch release_branch_name
|
199
|
+
current_version_number = live_iteration
|
200
|
+
new_version_number = current_version_number + 1
|
201
|
+
|
202
|
+
release_branch = "release/i#{new_version_number}"
|
199
203
|
|
200
204
|
# Fetch in order to have the latest branch revisions
|
201
205
|
|
@@ -206,7 +210,7 @@ class Gitscape::Base
|
|
206
210
|
branch_revisions = Hash[ branches.map {|branch| [branch["name"], branch["revision"]] } ]
|
207
211
|
|
208
212
|
# Check if the required branches in sync
|
209
|
-
required_synced_branches = [[
|
213
|
+
required_synced_branches = [[release_branch, "remotes/origin/qa"]]
|
210
214
|
required_synced_branches.each do |branch_pair|
|
211
215
|
if branch_revisions[ branch_pair[0] ] != branch_revisions[ branch_pair[0] ]
|
212
216
|
puts "*** ERROR: The #{branch_pair[0]} branch is not the same as the #{branch_pair[1]} branch.
|
@@ -216,8 +220,8 @@ class Gitscape::Base
|
|
216
220
|
end
|
217
221
|
|
218
222
|
# Checkout release branch
|
219
|
-
puts `git checkout #{
|
220
|
-
puts `git pull origin #{
|
223
|
+
puts `git checkout #{release_branch}`
|
224
|
+
puts `git pull origin #{release_branch}`
|
221
225
|
|
222
226
|
# Checkout live
|
223
227
|
puts `git checkout live`
|
@@ -229,12 +233,12 @@ class Gitscape::Base
|
|
229
233
|
merge_options = "--no-ff -s recursive -Xignore-space-change"
|
230
234
|
|
231
235
|
# Merge the release branch into live
|
232
|
-
puts `git merge #{merge_options} #{
|
236
|
+
puts `git merge #{merge_options} #{release_branch}`
|
233
237
|
|
234
238
|
# Error and conflict checking
|
235
239
|
if !$?.success? then exit 4 end
|
236
240
|
if git_has_conflicts then
|
237
|
-
puts "Merge conflicts when pulling #{
|
241
|
+
puts "Merge conflicts when pulling #{release_branch} into live"
|
238
242
|
puts "Please bother Xavier if you see this message :)"
|
239
243
|
exit 2
|
240
244
|
end
|
@@ -254,12 +258,12 @@ class Gitscape::Base
|
|
254
258
|
# Merge the release branch into master
|
255
259
|
puts `git checkout master`
|
256
260
|
puts `git pull origin master`
|
257
|
-
puts `git merge #{merge_options} #{
|
261
|
+
puts `git merge #{merge_options} #{release_branch}`
|
258
262
|
|
259
263
|
# Error and conflict checking
|
260
264
|
if !$?.success? then exit 4 end
|
261
265
|
if git_has_conflicts then
|
262
|
-
puts "Merge conflicts when pulling #{
|
266
|
+
puts "Merge conflicts when pulling #{release_branch} into master"
|
263
267
|
puts "Please bother Xavier if you see this message :)"
|
264
268
|
exit 2
|
265
269
|
end
|
@@ -276,9 +280,11 @@ class Gitscape::Base
|
|
276
280
|
puts `git tag -d rollback-to/i#{current_version_number}`
|
277
281
|
exit 4
|
278
282
|
end
|
279
|
-
|
280
|
-
|
281
|
-
|
283
|
+
|
284
|
+
if options[:push] && options[:update_env]
|
285
|
+
puts `git push origin live --tags`
|
286
|
+
puts `git push origin master`
|
287
|
+
end
|
282
288
|
end
|
283
289
|
|
284
290
|
# Returns true if the supplied Git commit hash or reference exists
|
data/lib/gitscape/version.rb
CHANGED
metadata
CHANGED
@@ -5,7 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 5
|
8
|
-
|
8
|
+
- 1
|
9
|
+
version: 1.5.1
|
9
10
|
platform: ruby
|
10
11
|
authors:
|
11
12
|
- Jon Botelho
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2013-04-
|
18
|
+
date: 2013-04-02 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|