vclog 1.5.0 → 1.6.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/HISTORY.rdoc +12 -0
- data/README.rdoc +5 -5
- data/REQUIRE +1 -0
- data/VERSION +2 -2
- data/bin/vclog +1 -1
- data/features/git.feature +8 -8
- data/features/hg.feature +8 -8
- data/features/svn.feature +8 -8
- data/lib/plugins/syckle/vclog.rb +19 -9
- data/lib/vclog/adapters/abstract.rb +78 -9
- data/lib/vclog/adapters/darcs.rb +5 -5
- data/lib/vclog/adapters.rb +3 -4
- data/lib/vclog/change.rb +14 -28
- data/lib/vclog/changelog.rb +8 -12
- data/lib/vclog/cli/abstract.rb +99 -0
- data/lib/vclog/cli/bump.rb +30 -0
- data/lib/vclog/cli/changelog.rb +33 -0
- data/lib/vclog/cli/help.rb +37 -0
- data/lib/vclog/cli/history.rb +40 -0
- data/lib/vclog/cli/list.rb +28 -0
- data/lib/vclog/cli/version.rb +30 -0
- data/lib/vclog/cli.rb +70 -51
- data/lib/vclog/config.rb +65 -0
- data/lib/vclog/formatter.rb +27 -10
- data/lib/vclog/heuristics/default.rb +20 -0
- data/lib/vclog/heuristics.rb +86 -8
- data/lib/vclog/history.rb +26 -191
- data/lib/vclog/kernel.rb +12 -0
- data/lib/vclog/metadata.rb +1 -0
- data/lib/vclog/release.rb +25 -10
- data/lib/vclog/tag.rb +14 -4
- data/lib/vclog/templates/changelog.ansi.rb +52 -0
- data/lib/vclog/templates/{changelog.atom → changelog.atom.erb} +0 -0
- data/lib/vclog/templates/changelog.gnu.rb +31 -0
- data/lib/vclog/templates/{changelog.html → changelog.html.erb} +0 -0
- data/lib/vclog/templates/changelog.json.rb +1 -0
- data/lib/vclog/templates/changelog.markdown.rb +30 -0
- data/lib/vclog/templates/changelog.rdoc.rb +30 -0
- data/lib/vclog/templates/{changelog.xml → changelog.xml.erb} +0 -0
- data/lib/vclog/templates/changelog.yaml.rb +1 -0
- data/lib/vclog/templates/history.ansi.rb +59 -0
- data/lib/vclog/templates/{history.atom → history.atom.erb} +1 -1
- data/lib/vclog/templates/history.gnu.rb +41 -0
- data/lib/vclog/templates/history.html.erb +52 -0
- data/lib/vclog/templates/history.json.rb +1 -0
- data/lib/vclog/templates/history.markdown.rb +40 -0
- data/lib/vclog/templates/history.rdoc.rb +40 -0
- data/lib/vclog/templates/{history.xml → history.xml.erb} +1 -1
- data/lib/vclog/templates/history.yaml.rb +1 -0
- data/lib/vclog.rb +6 -1
- metadata +95 -21
- data/ROADMAP.rdoc +0 -31
- data/lib/vclog/templates/changelog.gnu +0 -6
- data/lib/vclog/templates/changelog.json +0 -1
- data/lib/vclog/templates/changelog.markdown +0 -6
- data/lib/vclog/templates/changelog.rdoc +0 -6
- data/lib/vclog/templates/changelog.yaml +0 -1
- data/lib/vclog/templates/history.gnu +0 -12
- data/lib/vclog/templates/history.html +0 -47
- data/lib/vclog/templates/history.json +0 -1
- data/lib/vclog/templates/history.markdown +0 -12
- data/lib/vclog/templates/history.rdoc +0 -12
- data/lib/vclog/templates/history.yaml +0 -1
data/HISTORY.rdoc
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
= RELEASE HISTORY
|
2
2
|
|
3
|
+
== 1.6.0 / 2010-06-22
|
4
|
+
|
5
|
+
Previous versions utilized a system of "commit tagging" to identify types of commits. This proved less than optimal --it was unconventional, but worse it was easy to forget to put the proper label in the message. The new version of VClog uses a customizable heuristics systems instead. Rather than be limited to a strict syntax structure, you can write matching rules in .config/vclog/rules.rb that determine the commit type, and set descriptive labels for each type. This makes it very easy to get excellent History output. Also in this release the command-line interface has changed to use subcommands. And the default output format is now an ANSI-color GNU-like format. Use `-f gnu` to get the old default format.
|
6
|
+
|
7
|
+
Changes:
|
8
|
+
|
9
|
+
* 2 Major Enhancements
|
10
|
+
|
11
|
+
* Heuristics system for categorizing commits
|
12
|
+
* Command-line interface uses subcommands
|
13
|
+
|
14
|
+
|
3
15
|
== 1.5.0 / 2010-05-29
|
4
16
|
|
5
17
|
This release adds support for Mercurial repositories and Atom newsfeed output format. The commandline inteface has change such that <code>--foramt</code>/<code>-f</code> is used to select the format instead of using the previous per-format options, e.g. use <code>-f xml</code> instead of <code>--xml</code>. This release also includes some subtantial changes under-the-hood --the first of a two part code refactoring process.
|
data/README.rdoc
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
= VCLog
|
2
2
|
|
3
|
-
* http://proutils.
|
4
|
-
* http://
|
3
|
+
* home: http://proutils.github.com/vclog
|
4
|
+
* work: http://github.com/proutils/vclog
|
5
5
|
|
6
6
|
|
7
7
|
== DESCRIPTION
|
@@ -12,8 +12,8 @@ It currently supports Git and Subversion.
|
|
12
12
|
|
13
13
|
== SYNOPSIS
|
14
14
|
|
15
|
-
|
16
|
-
repository's root directory try:
|
15
|
+
The default format is a ANSI colored GNU-like text style.
|
16
|
+
From a repository's root directory try:
|
17
17
|
|
18
18
|
$ vclog
|
19
19
|
|
@@ -21,7 +21,7 @@ To generate an XML formatted changelog use:
|
|
21
21
|
|
22
22
|
$ vclog -f xml
|
23
23
|
|
24
|
-
See 'vclog
|
24
|
+
See 'vclog help' for more options.
|
25
25
|
|
26
26
|
|
27
27
|
== NOTE ABOUT SUBVSERION
|
data/REQUIRE
CHANGED
data/VERSION
CHANGED
data/bin/vclog
CHANGED
data/features/git.feature
CHANGED
@@ -46,41 +46,41 @@ Feature: Git Support
|
|
46
46
|
|
47
47
|
Scenario: Git Release History
|
48
48
|
Given a suitable Git repository
|
49
|
-
When I run "vclog
|
49
|
+
When I run "vclog r"
|
50
50
|
Then the exit status should be 0
|
51
51
|
|
52
52
|
Scenario: Git Release History in RDoc
|
53
53
|
Given a suitable Git repository
|
54
|
-
When I run "vclog
|
54
|
+
When I run "vclog r -f rdoc"
|
55
55
|
Then the exit status should be 0
|
56
56
|
|
57
57
|
Scenario: Git Release History in Markdown
|
58
58
|
Given a suitable Git repository
|
59
|
-
When I run "vclog
|
59
|
+
When I run "vclog rel -f markdown"
|
60
60
|
Then the exit status should be 0
|
61
61
|
|
62
62
|
Scenario: Git Release History in HTML
|
63
63
|
Given a suitable Git repository
|
64
|
-
When I run "vclog
|
64
|
+
When I run "vclog rel -f html"
|
65
65
|
Then the exit status should be 0
|
66
66
|
|
67
67
|
Scenario: Git Release History in XML
|
68
68
|
Given a suitable Git repository
|
69
|
-
When I run "vclog
|
69
|
+
When I run "vclog rel -f xml"
|
70
70
|
Then the exit status should be 0
|
71
71
|
|
72
72
|
Scenario: Git Release History in Atom
|
73
73
|
Given a suitable Git repository
|
74
|
-
When I run "vclog
|
74
|
+
When I run "vclog rel -f atom"
|
75
75
|
Then the exit status should be 0
|
76
76
|
|
77
77
|
Scenario: Git Release History in YAML
|
78
78
|
Given a suitable Git repository
|
79
|
-
When I run "vclog
|
79
|
+
When I run "vclog rel -f yaml"
|
80
80
|
Then the exit status should be 0
|
81
81
|
|
82
82
|
Scenario: Git Release History in JSON
|
83
83
|
Given a suitable Git repository
|
84
|
-
When I run "vclog
|
84
|
+
When I run "vclog rel -f json"
|
85
85
|
Then the exit status should be 0
|
86
86
|
|
data/features/hg.feature
CHANGED
@@ -46,41 +46,41 @@ Feature: Mercurial Support
|
|
46
46
|
|
47
47
|
Scenario: Mercurial Release History
|
48
48
|
Given a suitable Mercurial repository
|
49
|
-
When I run "vclog
|
49
|
+
When I run "vclog rel"
|
50
50
|
Then the exit status should be 0
|
51
51
|
|
52
52
|
Scenario: Mercurial Release History in RDoc
|
53
53
|
Given a suitable Mercurial repository
|
54
|
-
When I run "vclog
|
54
|
+
When I run "vclog rel -f rdoc"
|
55
55
|
Then the exit status should be 0
|
56
56
|
|
57
57
|
Scenario: Mercurial Release History in Markdown
|
58
58
|
Given a suitable Mercurial repository
|
59
|
-
When I run "vclog
|
59
|
+
When I run "vclog rel -f markdown"
|
60
60
|
Then the exit status should be 0
|
61
61
|
|
62
62
|
Scenario: Mercurial Release History in HTML
|
63
63
|
Given a suitable Mercurial repository
|
64
|
-
When I run "vclog
|
64
|
+
When I run "vclog rel -f html"
|
65
65
|
Then the exit status should be 0
|
66
66
|
|
67
67
|
Scenario: Mercurial Release History in XML
|
68
68
|
Given a suitable Mercurial repository
|
69
|
-
When I run "vclog
|
69
|
+
When I run "vclog rel -f xml"
|
70
70
|
Then the exit status should be 0
|
71
71
|
|
72
72
|
Scenario: Mercurial Release History in Atom
|
73
73
|
Given a suitable Mercurial repository
|
74
|
-
When I run "vclog
|
74
|
+
When I run "vclog rel -f atom"
|
75
75
|
Then the exit status should be 0
|
76
76
|
|
77
77
|
Scenario: Mercurial Release History in YAML
|
78
78
|
Given a suitable Mercurial repository
|
79
|
-
When I run "vclog
|
79
|
+
When I run "vclog rel -f yaml"
|
80
80
|
Then the exit status should be 0
|
81
81
|
|
82
82
|
Scenario: Mercurial Release History in JSON
|
83
83
|
Given a suitable Mercurial repository
|
84
|
-
When I run "vclog
|
84
|
+
When I run "vclog rel -f json"
|
85
85
|
Then the exit status should be 0
|
86
86
|
|
data/features/svn.feature
CHANGED
@@ -46,41 +46,41 @@ Feature: Subversion Support
|
|
46
46
|
|
47
47
|
Scenario: Subversion Release History
|
48
48
|
Given a suitable Subversion repository
|
49
|
-
When I run "vclog
|
49
|
+
When I run "vclog rel"
|
50
50
|
Then the exit status should be 0
|
51
51
|
|
52
52
|
Scenario: Subversion Release History in RDoc
|
53
53
|
Given a suitable Subversion repository
|
54
|
-
When I run "vclog
|
54
|
+
When I run "vclog rel -f rdoc"
|
55
55
|
Then the exit status should be 0
|
56
56
|
|
57
57
|
Scenario: Subversion Release History in Markdown
|
58
58
|
Given a suitable Subversion repository
|
59
|
-
When I run "vclog
|
59
|
+
When I run "vclog rel -f markdown"
|
60
60
|
Then the exit status should be 0
|
61
61
|
|
62
62
|
Scenario: Subversion Release History in HTML
|
63
63
|
Given a suitable Subversion repository
|
64
|
-
When I run "vclog
|
64
|
+
When I run "vclog rel -f html"
|
65
65
|
Then the exit status should be 0
|
66
66
|
|
67
67
|
Scenario: Subversion Release History in XML
|
68
68
|
Given a suitable Subversion repository
|
69
|
-
When I run "vclog
|
69
|
+
When I run "vclog rel -f xml"
|
70
70
|
Then the exit status should be 0
|
71
71
|
|
72
72
|
Scenario: Subversion Release History in Atom
|
73
73
|
Given a suitable Subversion repository
|
74
|
-
When I run "vclog
|
74
|
+
When I run "vclog rel -f atom"
|
75
75
|
Then the exit status should be 0
|
76
76
|
|
77
77
|
Scenario: Subversion Release History in YAML
|
78
78
|
Given a suitable Subversion repository
|
79
|
-
When I run "vclog
|
79
|
+
When I run "vclog rel -f yaml"
|
80
80
|
Then the exit status should be 0
|
81
81
|
|
82
82
|
Scenario: Subversion Release History in JSON
|
83
83
|
Given a suitable Subversion repository
|
84
|
-
When I run "vclog
|
84
|
+
When I run "vclog rel -f json"
|
85
85
|
Then the exit status should be 0
|
86
86
|
|
data/lib/plugins/syckle/vclog.rb
CHANGED
@@ -40,18 +40,23 @@ module Syckle::Plugins
|
|
40
40
|
# Some formats can reference an optional stylesheet (namely +xml+ and +html+).
|
41
41
|
attr_accessor :style
|
42
42
|
|
43
|
+
# Minimu change level to include.
|
44
|
+
attr_accessor :level
|
45
|
+
|
43
46
|
#
|
44
47
|
def initialize_defaults
|
45
48
|
require 'vclog'
|
49
|
+
|
46
50
|
@version = metadata.version
|
47
51
|
@title = metadata.title
|
48
52
|
@formats = ['atom']
|
49
53
|
@type = 'log'
|
54
|
+
@level = 0
|
50
55
|
end
|
51
56
|
|
52
57
|
#
|
53
58
|
def valid?
|
54
|
-
return false unless format =~ /^(html|yaml|json|xml|rdoc|markdown|gnu|txt|atom)$/
|
59
|
+
return false unless format =~ /^(html|yaml|json|xml|rdoc|markdown|gnu|txt|atom|ansi)$/
|
55
60
|
return false unless type =~ /^(log|rel|history|changelog)$/
|
56
61
|
return true
|
57
62
|
end
|
@@ -68,16 +73,12 @@ module Syckle::Plugins
|
|
68
73
|
@type = f.to_s.downcase
|
69
74
|
end
|
70
75
|
|
71
|
-
# Generate changelog.
|
72
|
-
def document
|
73
|
-
document_changelog
|
74
|
-
end
|
75
|
-
|
76
76
|
#++
|
77
77
|
# TODO: apply_naming_policy ?
|
78
78
|
#--
|
79
79
|
|
80
|
-
|
80
|
+
#
|
81
|
+
def document
|
81
82
|
formats.each do |format|
|
82
83
|
case type
|
83
84
|
when 'rel', 'history'
|
@@ -87,7 +88,7 @@ module Syckle::Plugins
|
|
87
88
|
end
|
88
89
|
#apply_naming_policy('changelog', log_format.downcase)
|
89
90
|
if dryrun?
|
90
|
-
report "# vclog --#{type} -f #{format}
|
91
|
+
report "# vclog --#{type} -f #{format} >> #{file}"
|
91
92
|
else
|
92
93
|
changed = save(format, file)
|
93
94
|
if changed
|
@@ -130,10 +131,18 @@ module Syckle::Plugins
|
|
130
131
|
# )
|
131
132
|
#end
|
132
133
|
|
134
|
+
def vclog_config
|
135
|
+
@vclog_config ||= (
|
136
|
+
vcf = VCLog::Config.new(project.root.to_s)
|
137
|
+
vcf.level = level
|
138
|
+
vcf
|
139
|
+
)
|
140
|
+
end
|
141
|
+
|
133
142
|
# Access to version control system.
|
134
143
|
def vcs
|
135
144
|
#@vcs ||= VCLog::VCS.new #(self)
|
136
|
-
@vcs ||= VCLog::Adapters.factory
|
145
|
+
@vcs ||= VCLog::Adapters.factory(vclog_config)
|
137
146
|
end
|
138
147
|
|
139
148
|
# Convert log to desired format.
|
@@ -148,6 +157,7 @@ module Syckle::Plugins
|
|
148
157
|
:version => version,
|
149
158
|
:title => title
|
150
159
|
}
|
160
|
+
|
151
161
|
vcs.display(doctype, format, options)
|
152
162
|
end
|
153
163
|
|
@@ -2,6 +2,8 @@ module VCLog
|
|
2
2
|
module Adapters
|
3
3
|
|
4
4
|
require 'time'
|
5
|
+
require 'pathname'
|
6
|
+
|
5
7
|
require 'vclog/formatter'
|
6
8
|
require 'vclog/changelog'
|
7
9
|
require 'vclog/history'
|
@@ -14,19 +16,40 @@ module Adapters
|
|
14
16
|
# = Version Control System
|
15
17
|
class Abstract
|
16
18
|
|
19
|
+
# Root location.
|
17
20
|
attr :root
|
18
21
|
|
22
|
+
# Heuristics object.
|
23
|
+
attr :heuristics
|
24
|
+
|
25
|
+
# Minimu change level.
|
26
|
+
attr :level
|
27
|
+
|
19
28
|
#
|
20
|
-
def initialize(
|
21
|
-
@root
|
29
|
+
def initialize(config)
|
30
|
+
@root = config.root # File.expand_path(config.root)
|
31
|
+
@heuristics = config.heuristics
|
32
|
+
@level = config.level.to_i
|
22
33
|
end
|
23
34
|
|
35
|
+
#
|
24
36
|
def tags
|
25
37
|
@tags ||= extract_tags.map{ |t| Tag===t ? t : Tag.new(*t) }
|
26
38
|
end
|
27
39
|
|
40
|
+
#
|
28
41
|
def changes
|
29
|
-
@changes ||=
|
42
|
+
@changes ||= (
|
43
|
+
changes = []
|
44
|
+
extract_changes.each do |c|
|
45
|
+
raise "how did this happen?" if Change == c
|
46
|
+
rev, date, who, msg = *c
|
47
|
+
type, level, label = *heuristics.lookup(msg)
|
48
|
+
next if level < self.level
|
49
|
+
changes << Change.new(rev, date, who, msg, type, level, label)
|
50
|
+
end
|
51
|
+
changes
|
52
|
+
)
|
30
53
|
end
|
31
54
|
|
32
55
|
#
|
@@ -45,26 +68,42 @@ module Adapters
|
|
45
68
|
end
|
46
69
|
|
47
70
|
#
|
48
|
-
def history
|
49
|
-
@history ||= History.new(self
|
71
|
+
def history
|
72
|
+
@history ||= History.new(self)
|
50
73
|
end
|
51
74
|
|
52
75
|
#
|
53
|
-
def display(type, format, options
|
76
|
+
def display(type, format, options)
|
77
|
+
@options = options
|
54
78
|
formatter = Formatter.new(self)
|
55
79
|
formatter.display(type, format, options)
|
56
80
|
end
|
57
81
|
|
82
|
+
# TODO: allow config of these levels thresholds ?
|
83
|
+
def bump
|
84
|
+
max = history.releases[0].changes.map{ |c| c.level }.max
|
85
|
+
if max > 1
|
86
|
+
bump_part('major')
|
87
|
+
elsif max >= 0
|
88
|
+
bump_part('minor')
|
89
|
+
else
|
90
|
+
bump_part('patch')
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
58
94
|
# Provides a bumped version number.
|
59
|
-
def
|
60
|
-
|
95
|
+
def bump_part(part=nil)
|
96
|
+
raise "bad version part - #{part}" unless ['major', 'minor', 'patch', 'build', ''].include?(part.to_s)
|
61
97
|
|
62
98
|
if tags.last
|
63
|
-
v = tags.
|
99
|
+
v = tags[-1].name # TODO: ensure the latest version
|
100
|
+
v = tags[-2].name if v == 'HEAD'
|
64
101
|
else
|
65
102
|
v = '0.0.0'
|
66
103
|
end
|
104
|
+
|
67
105
|
v = v.split(/\W/) # TODO: preserve split chars
|
106
|
+
|
68
107
|
case part.to_s
|
69
108
|
when 'major'
|
70
109
|
v[0] = v[0].succ
|
@@ -88,6 +127,17 @@ module Adapters
|
|
88
127
|
end
|
89
128
|
end
|
90
129
|
|
130
|
+
# Returns the current verion string.
|
131
|
+
def version
|
132
|
+
if tags.last
|
133
|
+
v = tags[-1].name # TODO: ensure the latest version
|
134
|
+
v = tags[-2].name if v == 'HEAD'
|
135
|
+
else
|
136
|
+
v = '0.0.0'
|
137
|
+
end
|
138
|
+
return v
|
139
|
+
end
|
140
|
+
|
91
141
|
private
|
92
142
|
|
93
143
|
#
|
@@ -157,6 +207,25 @@ module Adapters
|
|
157
207
|
end
|
158
208
|
=end
|
159
209
|
|
210
|
+
# Find vclog config directory. This searches up from the current
|
211
|
+
# working directory for the following paths (in order):
|
212
|
+
#
|
213
|
+
# .vclog/
|
214
|
+
# .config/vclog/
|
215
|
+
# config/vclog/
|
216
|
+
#
|
217
|
+
def lookup_config
|
218
|
+
conf = nil
|
219
|
+
Dir.ascend(Dir.pwd) do |path|
|
220
|
+
check = Dir['{.vclog/,.config/vclog/,config/vclog/}/'].first
|
221
|
+
if check
|
222
|
+
conf = path
|
223
|
+
break
|
224
|
+
end
|
225
|
+
end
|
226
|
+
conf
|
227
|
+
end
|
228
|
+
|
160
229
|
public
|
161
230
|
|
162
231
|
#
|
data/lib/vclog/adapters/darcs.rb
CHANGED
@@ -11,20 +11,20 @@ module Adapters
|
|
11
11
|
#
|
12
12
|
class Darcs < Abstract
|
13
13
|
|
14
|
-
|
14
|
+
# Is a darcs repository?
|
15
15
|
def repository?
|
16
16
|
File.directory?('_darcs')
|
17
17
|
end
|
18
18
|
|
19
|
-
|
19
|
+
# This is also a module function.
|
20
20
|
module_function :repository?
|
21
21
|
|
22
|
-
|
22
|
+
# Cached Changelog.
|
23
23
|
def changelog
|
24
24
|
@changelog ||= generate_changelog
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
# Generate Changelog object.
|
28
28
|
def generate_changelog
|
29
29
|
raise "not a darcs repository" unless repository?
|
30
30
|
|
@@ -48,7 +48,7 @@ module Adapters
|
|
48
48
|
return log
|
49
49
|
end
|
50
50
|
|
51
|
-
|
51
|
+
# Retrieve the "revision number" from the darcs tree.
|
52
52
|
def calculate_version
|
53
53
|
raise "not a darcs repository" unless repository?
|
54
54
|
|
data/lib/vclog/adapters.rb
CHANGED
@@ -8,11 +8,10 @@ module VCLog
|
|
8
8
|
module Adapters
|
9
9
|
|
10
10
|
#
|
11
|
-
def self.factory(
|
12
|
-
|
13
|
-
type = read_type(root)
|
11
|
+
def self.factory(config) #, options={})
|
12
|
+
type = read_type(config.root)
|
14
13
|
raise ArgumentError, "Not a recognized version control system." unless type
|
15
|
-
const_get(type.capitalize).new(
|
14
|
+
const_get(type.capitalize).new(config) #, options)
|
16
15
|
end
|
17
16
|
|
18
17
|
#
|
data/lib/vclog/change.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'vclog/kernel'
|
2
|
+
|
1
3
|
module VCLog
|
2
4
|
|
3
5
|
# = Change Log Entry class
|
@@ -10,15 +12,20 @@ module VCLog
|
|
10
12
|
attr_accessor :date
|
11
13
|
attr_accessor :revision
|
12
14
|
attr_accessor :message
|
15
|
+
|
13
16
|
attr_accessor :type
|
17
|
+
attr_accessor :level
|
18
|
+
attr_accessor :label
|
14
19
|
|
15
20
|
#
|
16
|
-
def initialize(rev, date, author, message)
|
21
|
+
def initialize(rev, date, author, message, type, level, label)
|
17
22
|
self.revision = rev
|
18
23
|
self.date = date
|
19
24
|
self.author = author
|
20
|
-
self.type = type
|
21
25
|
self.message = message
|
26
|
+
self.type = type
|
27
|
+
self.level = level
|
28
|
+
self.label = label
|
22
29
|
end
|
23
30
|
|
24
31
|
#
|
@@ -26,11 +33,6 @@ module VCLog
|
|
26
33
|
@author = author.strip
|
27
34
|
end
|
28
35
|
|
29
|
-
#
|
30
|
-
def message=(note)
|
31
|
-
@message, @type = split_type(note)
|
32
|
-
end
|
33
|
-
|
34
36
|
#def clean_type(type)
|
35
37
|
# case type.to_s
|
36
38
|
# when 'maj', 'major' then :major
|
@@ -42,6 +44,7 @@ module VCLog
|
|
42
44
|
# end
|
43
45
|
#end
|
44
46
|
|
47
|
+
=begin
|
45
48
|
#
|
46
49
|
def type_phrase
|
47
50
|
case type.to_s
|
@@ -56,27 +59,10 @@ module VCLog
|
|
56
59
|
when '-'
|
57
60
|
'Administrative Changes'
|
58
61
|
else
|
59
|
-
"#{type.capitalize} Enhancements"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
#
|
64
|
-
def type_number
|
65
|
-
case type.to_s.downcase
|
66
|
-
when 'maj', 'major'
|
67
|
-
0
|
68
|
-
when 'min', 'minor'
|
69
|
-
1
|
70
|
-
when 'bug'
|
71
|
-
2
|
72
|
-
when ''
|
73
|
-
4
|
74
|
-
when '-'
|
75
|
-
5
|
76
|
-
else # other
|
77
|
-
3
|
62
|
+
"#{type.to_s.capitalize} Enhancements"
|
78
63
|
end
|
79
64
|
end
|
65
|
+
=end
|
80
66
|
|
81
67
|
#
|
82
68
|
def <=>(other)
|
@@ -104,8 +90,7 @@ module VCLog
|
|
104
90
|
# to_h.to_yaml(*args)
|
105
91
|
#end
|
106
92
|
|
107
|
-
|
108
|
-
|
93
|
+
=begin
|
109
94
|
# Looks for a "[type]" indicator at the end of the commit message.
|
110
95
|
# If that is not found, it looks at front of message for
|
111
96
|
# "[type]" or "[type]:". Failing that it tries just "type:".
|
@@ -127,6 +112,7 @@ module VCLog
|
|
127
112
|
n.gsub!(/^\s*?\n/m,'') # remove blank lines
|
128
113
|
return n, t
|
129
114
|
end
|
115
|
+
=end
|
130
116
|
|
131
117
|
end #class Entry
|
132
118
|
|
data/lib/vclog/changelog.rb
CHANGED
@@ -17,24 +17,15 @@ module VCLog
|
|
17
17
|
|
18
18
|
DIR = File.dirname(__FILE__)
|
19
19
|
|
20
|
+
# Seconds in a day.
|
20
21
|
DAY = 24*60*60
|
21
22
|
|
23
|
+
#
|
22
24
|
attr :changes
|
23
25
|
|
24
|
-
attr_accessor :marker
|
25
|
-
|
26
|
-
attr_accessor :title
|
27
|
-
|
28
|
-
# Include revision id?
|
29
|
-
attr_accessor :rev_id
|
30
|
-
|
31
26
|
#
|
32
27
|
def initialize(changes=nil)
|
33
28
|
@changes = []
|
34
|
-
@marker = "#"
|
35
|
-
@title = "CHANGE LOG"
|
36
|
-
@rev_id = false
|
37
|
-
|
38
29
|
@changes = changes if changes
|
39
30
|
end
|
40
31
|
|
@@ -55,6 +46,11 @@ module VCLog
|
|
55
46
|
@changes << Change.new(rev, date, who, note, type)
|
56
47
|
end
|
57
48
|
|
49
|
+
#
|
50
|
+
def sort!(&block)
|
51
|
+
changes.sort!(&block)
|
52
|
+
end
|
53
|
+
|
58
54
|
#
|
59
55
|
def each(&block)
|
60
56
|
changes.each(&block)
|
@@ -384,7 +380,7 @@ end
|
|
384
380
|
entries = groups[n]
|
385
381
|
next if !entries
|
386
382
|
next if entries.empty?
|
387
|
-
string << "* #{entries.size} #{entries[0].
|
383
|
+
string << "* #{entries.size} #{entries[0].label}\n\n"
|
388
384
|
entries.sort!{|a,b| a.date <=> b.date }
|
389
385
|
entries.each do |entry|
|
390
386
|
#string << "== #{date} #{who}\n\n" # no email :(
|