gitscape 1.3.4 → 1.3.5
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/bin/gitscape +42 -4
- data/gitscape.gemspec +1 -1
- data/lib/gitscape/base.rb +17 -12
- data/lib/gitscape/version.rb +1 -1
- metadata +4 -3
data/bin/gitscape
CHANGED
@@ -4,12 +4,52 @@ begin
|
|
4
4
|
require 'gitscape'
|
5
5
|
rescue LoadError
|
6
6
|
require 'rubygems'
|
7
|
+
require "optparse"
|
7
8
|
require 'gitscape'
|
8
9
|
end
|
9
10
|
|
11
|
+
|
12
|
+
OVERVIEW = <<-EOS
|
13
|
+
gitscape perform git-related promotions in a consistent manner.
|
14
|
+
|
15
|
+
The following actions are supported.
|
16
|
+
|
17
|
+
hotfix_start <branch-name> Creates a branch off live called hotfix/<branch-name>
|
18
|
+
hotfix_finish [<branch-name>] Merges the branch hotfix/<branch-name> into live,
|
19
|
+
the current release branch and master. If <branch-name> is
|
20
|
+
omitted and you are already on a hotfix branch, it is used.
|
21
|
+
release_start Branches master, incrementing the release number to create
|
22
|
+
a new release branch, release/i<version+1>. The release
|
23
|
+
branch is forced to the qa branch.
|
24
|
+
** These actions update the origin server. **
|
25
|
+
release_finish After performing several validations, it merges the latest
|
26
|
+
release branch into live and master. Tags are created that
|
27
|
+
facilitate a rollback.
|
28
|
+
** These actions update the origin server. **
|
29
|
+
EOS
|
30
|
+
|
31
|
+
# Parse option overrides.
|
32
|
+
options = {}
|
33
|
+
|
34
|
+
op = OptionParser.new do |op|
|
35
|
+
op.banner = 'Usage: gitscape [action] [options]'
|
36
|
+
op.separator('Options:')
|
37
|
+
op.on '--trace', 'Verbose output for debugging' do
|
38
|
+
options[:trace] = true
|
39
|
+
end
|
40
|
+
op.on '-h', '--help', 'Show a list of actions' do
|
41
|
+
puts OVERVIEW
|
42
|
+
exit
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
args = op.parse(ARGV)
|
47
|
+
|
48
|
+
# Get the app name. Note that if the app name is 'app', we have to rename it
|
49
|
+
# so that it doesn't conflict with the 'app' subdirectory.
|
50
|
+
|
10
51
|
if ARGV.size < 1
|
11
|
-
puts
|
12
|
-
puts "TODO: write usage help text"
|
52
|
+
puts op
|
13
53
|
exit(1)
|
14
54
|
else
|
15
55
|
case ARGV[0]
|
@@ -21,8 +61,6 @@ else
|
|
21
61
|
Gitscape::Base.new.release_start
|
22
62
|
when "release_finish"
|
23
63
|
Gitscape::Base.new.release_finish ARGV[1].to_i
|
24
|
-
when "promote_to_qa"
|
25
|
-
Gitscape::Base.new.promote_to_qa ARGV[1].to_i
|
26
64
|
else
|
27
65
|
puts "Unknown command"
|
28
66
|
end
|
data/gitscape.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.name = "gitscape"
|
8
8
|
s.version = Gitscape::VERSION
|
9
9
|
s.platform = Gem::Platform::RUBY
|
10
|
-
s.authors = ["Jon Botelho"]
|
10
|
+
s.authors = ["Jon Botelho", "Xavier Matos"]
|
11
11
|
s.email = ["gitscape@eachscape.com"]
|
12
12
|
s.homepage = "https://github.com/eachscape/gitscape"
|
13
13
|
s.summary = "Various Git utilities for cherry-pick/rebase workflows."
|
data/lib/gitscape/base.rb
CHANGED
@@ -58,8 +58,8 @@ class Gitscape::Base
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def git_has_conflicts puts_conflicts=true
|
61
|
-
conflicts_status = `git status --porcelain
|
62
|
-
has_conflicts = conflicts_status.
|
61
|
+
conflicts_status = `git status --porcelain`
|
62
|
+
has_conflicts = conflicts_status.scan(/[AUD]{2}/).count > 0
|
63
63
|
|
64
64
|
puts conflicts_status if has_conflicts && puts_conflicts
|
65
65
|
|
@@ -198,8 +198,13 @@ class Gitscape::Base
|
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
|
+
# Checkout release branch
|
202
|
+
puts `git checkout #{release_branch_name}`
|
203
|
+
puts `git pull live`
|
204
|
+
|
201
205
|
# Checkout live
|
202
|
-
`git checkout live`
|
206
|
+
puts `git checkout live`
|
207
|
+
puts `git pull live`
|
203
208
|
|
204
209
|
# Record the revision of live used for the rollback tag
|
205
210
|
live_rollback_revision = `git log -n1 --oneline`.scan(/(^[^ ]+) .*$/).flatten[0]
|
@@ -207,7 +212,7 @@ class Gitscape::Base
|
|
207
212
|
merge_options = "--no-ff -s recursive -Xignore-space-change"
|
208
213
|
|
209
214
|
# Merge the release branch into live
|
210
|
-
`git merge #{merge_options} #{release_branch_name}`
|
215
|
+
puts `git merge #{merge_options} #{release_branch_name}`
|
211
216
|
|
212
217
|
# Error and conflict checking
|
213
218
|
if !$?.success? then exit 4 end
|
@@ -230,8 +235,9 @@ class Gitscape::Base
|
|
230
235
|
live_release_revision = `git log -n1 --oneline`.scan(/(^[^ ]+) .*$/).flatten[0]
|
231
236
|
|
232
237
|
# Merge the release branch into master
|
233
|
-
`git checkout master`
|
234
|
-
`git
|
238
|
+
puts `git checkout master`
|
239
|
+
puts `git pull`
|
240
|
+
puts `git merge #{merge_options} #{release_branch_name}`
|
235
241
|
|
236
242
|
# Error and conflict checking
|
237
243
|
if !$?.success? then exit 4 end
|
@@ -242,21 +248,20 @@ class Gitscape::Base
|
|
242
248
|
end
|
243
249
|
|
244
250
|
# Tag the state of live for both release and rollback
|
245
|
-
`git tag rollback-to/i#{current_version_number} #{live_rollback_revision}`
|
251
|
+
puts `git tag rollback-to/i#{current_version_number} #{live_rollback_revision}`
|
246
252
|
if !$?.success? then
|
247
253
|
puts "=== WARNING: Failed to create rollback-to/i#{current_version_number} tag"
|
248
|
-
`git tag -d rollback-to/i#{current_version_number}`
|
249
254
|
end
|
250
255
|
|
251
256
|
`git tag live/i#{new_version_number}/release #{live_release_revision}`
|
252
257
|
if !$?.success? then
|
253
|
-
|
254
|
-
`git tag -d
|
258
|
+
puts "=== WARNING: Failed to create live/i#{new_version_number}/release"
|
259
|
+
puts `git tag -d rollback-to/i#{current_version_number}`
|
255
260
|
exit 4
|
256
261
|
end
|
257
262
|
|
258
|
-
`git push origin live --tags`
|
259
|
-
`git push origin master`
|
263
|
+
puts `git push origin live --tags`
|
264
|
+
puts `git push origin master`
|
260
265
|
end
|
261
266
|
|
262
267
|
# Returns true if the supplied Git commit hash or reference exists
|
data/lib/gitscape/version.rb
CHANGED
metadata
CHANGED
@@ -5,16 +5,17 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 1.3.
|
8
|
+
- 5
|
9
|
+
version: 1.3.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jon Botelho
|
13
|
+
- Xavier Matos
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2013-03-
|
18
|
+
date: 2013-03-19 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|