socialcast-git-extensions 0.10.3 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -12,8 +12,7 @@ begin
12
12
  gem.authors = ["Ryan Sonnek"]
13
13
  gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
14
  gem.add_runtime_dependency "grit", ">= 0"
15
- gem.add_runtime_dependency "jira4r", ">= 0"
16
- gem.add_runtime_dependency "soap4r", ">= 0"
15
+ gem.add_runtime_dependency "wireframe-jira4r", ">= 0"
17
16
  gem.add_runtime_dependency "activesupport", ">= 0"
18
17
  gem.add_runtime_dependency "git_remote_branch", ">= 0"
19
18
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.3
1
+ 0.11.0
@@ -11,25 +11,12 @@ remote = ARGV.delete("--remote") || ARGV.delete("-r")
11
11
  run_cmd "git checkout master"
12
12
  run_cmd "git pull"
13
13
 
14
- def each_branch(options = {}, &block)
15
- reserved_branches = %w{ HEAD master last_known_good_master staging last_known_good_staging next_release last_known_good_next_release }
16
- args = []
17
- args << '-r' if options[:remote]
18
- args << '--merged'
19
- branches = `git branch #{args.join(' ')}`.split("\n")
20
- branches.each do |branch|
21
- branch = branch.gsub(/\*/, '').strip.split(' ').first
22
- branch = branch.split('/').last if options[:remote]
23
- yield(branch) unless reserved_branches.include?(branch)
24
- end
25
- end
26
-
27
- each_branch do |branch|
14
+ branches(:merged => true).each do |branch|
28
15
  run_cmd "git branch -d #{branch}"
29
16
  end
30
17
 
31
18
  if remote
32
- each_branch :remote => true do |branch|
19
+ branches(:merged => true, :remote => true).each do |branch|
33
20
  run_cmd "grb rm #{branch}"
34
21
  end
35
22
  end
@@ -7,16 +7,39 @@ include Socialcast
7
7
  run_cmd 'git checkout master'
8
8
  run_cmd 'git pull'
9
9
  run_cmd 'git pull origin last_known_good_next_release'
10
- run_cmd 'put push origin HEAD'
10
+ run_cmd 'git push origin HEAD'
11
11
 
12
12
  filter_id = '10102'
13
13
  issues = jira_server.getIssuesFromFilterWithLimit filter_id, 0, 1000
14
- issues.each do |issue|
15
- #TODO: only resolve if the git branch has been merged into master?
16
- puts "Should this ticket be closed? #{issue.key}"
17
- # puts 'Transitioning ticket from "Resolved" to "Closed"'
18
- # release_action = '101'
19
- # jira_server.progressWorkflowAction issue.key, release_action, []
14
+ branches = issues.collect do |issue|
15
+ field = issue.customFieldValues.detect {|k| k.customfieldId == GIT_BRANCH_FIELD }
16
+ field ? field.values.first : nil
17
+ end.uniq.compact
18
+
19
+ issues_with_no_branch = issues.reject do |issue|
20
+ issue.customFieldValues.detect {|k| k.customfieldId == GIT_BRANCH_FIELD }
21
+ end
22
+ if issues_with_no_branch.any?
23
+ puts "The following tickets do not have a git branch configured"
24
+ puts issues_with_no_branch.collect(&:key).join(' ')
25
+ end
26
+
27
+ branches.each do |branch|
28
+ if branches(:merged => true, :remote => true).include?(branch)
29
+ puts "All changes in #{branch} have been merged into master"
30
+ issues_in_branch = associated_tickets(branch)
31
+ puts "Related tickets on branch #{branch}: #{issues_in_branch.collect(&:key).join(' ')}"
32
+
33
+ issues_in_branch.each do |issue|
34
+ puts "#{issue.key} - #{issue.summary}"
35
+ next unless Readline.readline("Mark this issue as released? (y/n)? ") == 'y'
36
+
37
+ release_action = '101'
38
+ jira_server.progressWorkflowAction issue.key, release_action, []
39
+ end
40
+ else
41
+ puts "#{branch} has NOT yet been merged into master"
42
+ end
20
43
  end
21
44
 
22
45
  run_cmd 'git prune-merged -r'
@@ -1,5 +1,5 @@
1
1
  require 'jira4r'
2
- require 'activesupport'
2
+ require 'active_support'
3
3
  require 'grit'
4
4
 
5
5
  module Socialcast
@@ -65,12 +65,29 @@ module Socialcast
65
65
  jira_server.progressWorkflowAction ticket, action.to_s, []
66
66
  end
67
67
  end
68
+ def associated_tickets(branch)
69
+ jira_server.getIssuesFromJqlSearch "project = 'SCWEBAPP' and 'Git Branch' ~ '#{branch}'", 1000
70
+ end
68
71
 
69
72
  def run_cmd(cmd)
70
73
  puts "\nRunning: #{cmd}"
71
74
  raise "#{cmd} failed" unless system cmd
72
75
  end
73
76
 
77
+ def branches(options = {})
78
+ branches = []
79
+ reserved_branches = %w{ HEAD master last_known_good_master staging last_known_good_staging next_release last_known_good_next_release }
80
+ args = []
81
+ args << '-r' if options[:remote]
82
+ args << '--merged' if options[:merged]
83
+ output = `git branch #{args.join(' ')}`.split("\n")
84
+ output.each do |branch|
85
+ branch = branch.gsub(/\*/, '').strip.split(' ').first
86
+ branch = branch.split('/').last if options[:remote]
87
+ branches << branch unless reserved_branches.include?(branch)
88
+ end
89
+ branches
90
+ end
74
91
  def reset_branch(branch)
75
92
  run_cmd "git checkout master"
76
93
  run_cmd "git pull"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{socialcast-git-extensions}
8
- s.version = "0.10.3"
8
+ s.version = "0.11.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ryan Sonnek"]
12
- s.date = %q{2010-07-09}
12
+ s.date = %q{2010-07-16}
13
13
  s.description = %q{git extension scripts for socialcast workflow}
14
14
  s.email = %q{ryan@socialcast.com}
15
15
  s.executables = ["git-integrate", "git-promote", "git-prune-merged", "git-release", "git-release-pending", "git-reset-staging", "git-track", "git-update", "git-wtf"]
@@ -55,23 +55,20 @@ Gem::Specification.new do |s|
55
55
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
56
  s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
57
57
  s.add_runtime_dependency(%q<grit>, [">= 0"])
58
- s.add_runtime_dependency(%q<jira4r>, [">= 0"])
59
- s.add_runtime_dependency(%q<soap4r>, [">= 0"])
58
+ s.add_runtime_dependency(%q<wireframe-jira4r>, [">= 0"])
60
59
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
61
60
  s.add_runtime_dependency(%q<git_remote_branch>, [">= 0"])
62
61
  else
63
62
  s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
64
63
  s.add_dependency(%q<grit>, [">= 0"])
65
- s.add_dependency(%q<jira4r>, [">= 0"])
66
- s.add_dependency(%q<soap4r>, [">= 0"])
64
+ s.add_dependency(%q<wireframe-jira4r>, [">= 0"])
67
65
  s.add_dependency(%q<activesupport>, [">= 0"])
68
66
  s.add_dependency(%q<git_remote_branch>, [">= 0"])
69
67
  end
70
68
  else
71
69
  s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
72
70
  s.add_dependency(%q<grit>, [">= 0"])
73
- s.add_dependency(%q<jira4r>, [">= 0"])
74
- s.add_dependency(%q<soap4r>, [">= 0"])
71
+ s.add_dependency(%q<wireframe-jira4r>, [">= 0"])
75
72
  s.add_dependency(%q<activesupport>, [">= 0"])
76
73
  s.add_dependency(%q<git_remote_branch>, [">= 0"])
77
74
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socialcast-git-extensions
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
4
+ hash: 51
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 10
9
- - 3
10
- version: 0.10.3
8
+ - 11
9
+ - 0
10
+ version: 0.11.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Sonnek
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-09 00:00:00 -05:00
18
+ date: 2010-07-16 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -47,7 +47,7 @@ dependencies:
47
47
  type: :runtime
48
48
  version_requirements: *id002
49
49
  - !ruby/object:Gem::Dependency
50
- name: jira4r
50
+ name: wireframe-jira4r
51
51
  prerelease: false
52
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
53
  none: false
@@ -61,7 +61,7 @@ dependencies:
61
61
  type: :runtime
62
62
  version_requirements: *id003
63
63
  - !ruby/object:Gem::Dependency
64
- name: soap4r
64
+ name: activesupport
65
65
  prerelease: false
66
66
  requirement: &id004 !ruby/object:Gem::Requirement
67
67
  none: false
@@ -75,7 +75,7 @@ dependencies:
75
75
  type: :runtime
76
76
  version_requirements: *id004
77
77
  - !ruby/object:Gem::Dependency
78
- name: activesupport
78
+ name: git_remote_branch
79
79
  prerelease: false
80
80
  requirement: &id005 !ruby/object:Gem::Requirement
81
81
  none: false
@@ -88,20 +88,6 @@ dependencies:
88
88
  version: "0"
89
89
  type: :runtime
90
90
  version_requirements: *id005
91
- - !ruby/object:Gem::Dependency
92
- name: git_remote_branch
93
- prerelease: false
94
- requirement: &id006 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- type: :runtime
104
- version_requirements: *id006
105
91
  description: git extension scripts for socialcast workflow
106
92
  email: ryan@socialcast.com
107
93
  executables: