primedia-qa_release_tasks 0.3.0 → 0.4.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.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'spec/rake/spectask'
7
7
  require 'lib/qa_release_tasks'
8
8
 
9
9
  GEM = "qa_release_tasks"
10
- GEM_VERSION = "0.1.1"
10
+ GEM_VERSION = QaReleaseTasks.version
11
11
  AUTHORS = "Jason Noble", "Rein Henrichs"
12
12
  SUMMARY = "A gem that provides workflow driven rake tasks for git QA branch management"
13
13
 
@@ -20,10 +20,11 @@ spec = Gem::Specification.new do |s|
20
20
  s.summary = SUMMARY
21
21
  s.description = s.summary
22
22
  s.authors = AUTHORS
23
+ s.executables = ['git-changelog']
23
24
 
24
25
  s.require_path = 'lib'
25
26
  s.autorequire = GEM
26
- s.files = %w(LICENSE README.rdoc Rakefile) + Dir.glob("{lib,spec}/**/*")
27
+ s.files = %w(LICENSE README.rdoc Rakefile) + Dir.glob("{bin,lib,spec}/**/*")
27
28
  end
28
29
 
29
30
  task :default => :spec
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby -wKU
2
+ require File.join(File.dirname(__FILE__), '../lib/qa_release_tasks')
3
+ require 'optparse'
4
+
5
+ options = {}
6
+ OptionParser.new do |opts|
7
+ opts.banner = "Git Changelog - Show a list of changes by version."
8
+
9
+ opts.separator ''
10
+
11
+ opts.on_tail('-h', '--help', 'Displays this help message') do
12
+ puts opts
13
+ exit
14
+ end
15
+
16
+ opts.on_tail("--version", "Show version") do
17
+ puts 'git changelog version ' + QaReleaseTasks.version
18
+ exit
19
+ end
20
+
21
+ opts.on('-l', '--limit [LIMIT]', Integer, 'Maximum commits for each version, default is 20') do |limit|
22
+ options[:limit] = limit || 20
23
+ end
24
+
25
+ opts.on('--no-limit', 'Show all commits for each version') do
26
+ options[:limit] = false
27
+ end
28
+
29
+ opts.on('-a', '--all', 'Show all versions') do
30
+ options[:all] = true
31
+ end
32
+
33
+ opts.on('--from [VERSION]',
34
+ 'Start changelog at this version. Defaults to most recent version.') do |from|
35
+ options[:from] = from
36
+ end
37
+
38
+ opts.on('--to [VERSION]',
39
+ 'End changelog at this version. Defaults to second most recent version.') do |to|
40
+ options[:to] = to
41
+ end
42
+ end.parse!
43
+
44
+ Git::ReleaseNotes.new(options).annotate!
@@ -3,17 +3,28 @@ module Git
3
3
  require 'enumerator'
4
4
  include CLI
5
5
  include Commands
6
+
7
+ attr_reader :options
8
+ def initialize(options = {})
9
+ @options = options
10
+ @limit = options[:limit].nil? ? 20 : options[:limit]
11
+ end
6
12
 
7
13
  def annotate!
8
14
  assert_is_git_repo
9
15
  tags = get_tags.reverse
10
16
  error "No version tags available." if tags.empty?
11
17
 
12
- start_tag = ask "Start at which tag?", tags[0], tags
13
- start_index = tags.index(start_tag)
14
- end_tag = ask "End at which tag?", tags[start_index + 1] || tags[start_index], tags
18
+ if options[:all]
19
+ start_index = 0
20
+ end_index = tags.length - 1
21
+ else
22
+ start_tag = options[:from] || ask("Start at which tag?", tags[0], tags)
23
+ start_index = tags.index(start_tag)
24
+ end_tag = options[:to] || ask("End at which tag?", tags[start_index + 1] || tags[start_index], tags)
25
+ end_index = tags.index(end_tag) + 1 # include end tag
26
+ end
15
27
  puts
16
- end_index = tags.index(end_tag) + 1 # include end tag
17
28
 
18
29
  start_index.upto(end_index-1) do |i|
19
30
  start = tags[i]
@@ -21,11 +32,12 @@ module Git
21
32
  range = ''
22
33
  range << "refs/tags/#{finish}.." if finish # log until end tag if there is an end tag
23
34
  range << "refs/tags/#{start}"
24
- log = `git log --no-merges --pretty=format:"%h %s" #{range}`.strip
35
+ log = `git log --no-merges --pretty=format:"%h %s" #{range}`.strip.split("\n")
25
36
  next if log.empty?
26
37
  puts "#{start}"
27
38
  puts "=" * start.length
28
- puts log
39
+ puts @limit ? log[0,@limit] : log
40
+ puts " ... and #{log.size - @limit} more." if @limit && log.size > @limit
29
41
  puts
30
42
  end
31
43
  end
@@ -42,6 +42,14 @@ module Git
42
42
  system("git pull") &&
43
43
  response = %x(git merge master)
44
44
 
45
+ unless $?.success?
46
+ `git reset --hard`
47
+ error <<-EOS
48
+ Conflicts when updating the QA branch from master prevented a release from being created.
49
+ Please resolve these conflicts and then re-run rake qa:release:new.
50
+ EOS
51
+ end
52
+
45
53
  unless response.include?("Fast forward") || response.include?('Already up-to-date.')
46
54
  warn "There are outstanding changes in qa_branch that may need to be merged into master"
47
55
  end
@@ -4,3 +4,11 @@ require 'git/commands'
4
4
  require 'git/release_notes'
5
5
  require 'git/tagger'
6
6
  require 'tasks/qa_release'
7
+
8
+ module QaReleaseTasks
9
+ VERSION = '0.4.1'
10
+
11
+ def self.version
12
+ VERSION
13
+ end
14
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primedia-qa_release_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Noble
@@ -10,14 +10,14 @@ autorequire: qa_release_tasks
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-04-01 00:00:00 -07:00
14
- default_executable:
13
+ date: 2009-04-02 00:00:00 -07:00
14
+ default_executable: git-changelog
15
15
  dependencies: []
16
16
 
17
17
  description: A gem that provides workflow driven rake tasks for git QA branch management
18
18
  email:
19
- executables: []
20
-
19
+ executables:
20
+ - git-changelog
21
21
  extensions: []
22
22
 
23
23
  extra_rdoc_files:
@@ -27,6 +27,7 @@ files:
27
27
  - LICENSE
28
28
  - README.rdoc
29
29
  - Rakefile
30
+ - bin/git-changelog
30
31
  - lib/cli.rb
31
32
  - lib/git
32
33
  - lib/git/commands.rb