git-changes 0.0.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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in git-changelog.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.libs << "test"
8
+ t.test_files = FileList['test/test*.rb']
9
+ t.verbose = true
10
+ end
11
+
data/bin/git-changes ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'git-changelog'
3
+
4
+ Git::Changelog::CLI.process!
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "git-changelog/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "git-changes"
7
+ s.version = Git::Changelog::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Guillermo Álvarez Fernández <guillermo@cientifico.net>"]
10
+ s.email = ["guillermo@cientifico.net"]
11
+ s.homepage = ""
12
+ s.summary = %q{Generate a changelog based on git log.}
13
+ s.description = %q{It taks the output from git-log, parses it, and output with the standard format of changelog.}
14
+
15
+ s.rubyforge_project = "git-changelog"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ s.add_development_dependency("ruby-debug")
22
+ s.add_development_dependency("rake")
23
+ end
@@ -0,0 +1,3 @@
1
+ require 'git-changelog/version'
2
+ require 'git-changelog/cli'
3
+ require 'git-changelog/parser'
@@ -0,0 +1,12 @@
1
+ class Git::Changelog::CLI
2
+ def process
3
+ @io = IO.popen("git log --summary --stat --no-merges --date=short")
4
+ parser = Git::Changelog::Parser.new(@io)
5
+ parser.generate_changelog
6
+ @io.close
7
+ end
8
+
9
+ def self.process!
10
+ new.process
11
+ end
12
+ end
@@ -0,0 +1,41 @@
1
+ class Git::Changelog::Parser
2
+ def initialize(io)
3
+ @io = io
4
+ end
5
+
6
+ def generate_changelog
7
+ commit = nil
8
+ @io.each_line do |line|
9
+
10
+ case line
11
+ when /^commit ([0123456789abcdef]{6,40})$/
12
+ process_commit(commit) if commit
13
+ commit = {:id => $1}
14
+ when /^Author: (.*)/
15
+ commit[:author] = $1
16
+ when /^Date:\s+(.*)$/
17
+ commit[:date] = $1
18
+ when / (delete mode|create mode) \d{3,6} ([\S]+)\s*$/, /^( )([^\s]*)\s+\|\s+\d+ [-+]*\s*$/,/^ mode change \d+ => (\d+) ([\S]*)\s*$/
19
+ commit[:files] ||= []
20
+ file = File.basename($3 || $3 || $3 || $2)
21
+ commit[:files] << file unless commit[:files].include?(file)
22
+ when /.*files changed.*insertions.*deletions/
23
+ when /^ (.*)$/
24
+ commit[:message] ||= ""
25
+ commit[:message] << $1 << "\n"
26
+ end
27
+ end
28
+ process_commit(commit) if commit
29
+ end
30
+
31
+ protected
32
+
33
+ def process_commit(commit)
34
+ current_commit_info = [commit[:author], commit[:date]]
35
+ if @last_commit_info != current_commit_info
36
+ puts "#{commit[:date]} #{commit[:author]}\n\n"
37
+ @last_commit_info = current_commit_info
38
+ end
39
+ puts " * #{commit[:files].join(", ")}: #{commit[:message].split("\n").first}\n\n"
40
+ end
41
+ end
@@ -0,0 +1,5 @@
1
+ module Git
2
+ module Changelog
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,26 @@
1
+ 2011-06-24 Guillermo Álvarez <guillermo@cientifico.net>
2
+
3
+ * README.md: tomate esa2
4
+
5
+ * README.md: tomate esa
6
+
7
+ 2010-06-22 Guillermo Álvarez <guillermo@cientifico.net>
8
+
9
+ * deploy.rb: Explicit 'git remote add origin #{deploy.repository}' to the bare repo
10
+
11
+ * deploy.rb: Remove the explicity host when calling deploy.run(deploy.host)
12
+
13
+ * deploy.rb, test_deploy.rb: Improve run method:
14
+
15
+ * Rakefile: Add a rake file to test
16
+
17
+ * deploy.rb: Create deploy.current_path in :generate_timestamp
18
+
19
+ * deploy.rb: Load dependencies only where dependencies are needed.
20
+
21
+ * deploy.rb: Remove restart hook from deploy.rb (ups!)
22
+
23
+ * README.md: Update README.md to show new links to the github wiki.
24
+
25
+ * .gitignore, LICENSE, README.md, deploy.rb, object.rb: Initial version
26
+
data/test/git-log.txt ADDED
@@ -0,0 +1,117 @@
1
+ commit 06437883f3f058e5f63822ba8be9a07b3889dc8a
2
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
3
+ Date: 2011-06-24
4
+
5
+ tomate esa2
6
+
7
+ README.md | 71 -------------------------------------------------------------
8
+ 1 files changed, 0 insertions(+), 71 deletions(-)
9
+ delete mode 100755 README.md
10
+
11
+ commit 0fbc6bf8a277ee421b7cfb25e5b866539320b7d9
12
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
13
+ Date: 2011-06-24
14
+
15
+ tomate esa
16
+
17
+ 0 files changed, 0 insertions(+), 0 deletions(-)
18
+ mode change 100644 => 100755 README.md
19
+
20
+ commit 0b2f9f116f6cd67c70f11d2e5667c68cb89e400a
21
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
22
+ Date: 2010-06-22
23
+
24
+ Explicit 'git remote add origin #{deploy.repository}' to the bare repo
25
+ (Forgot something: Bare git repos don't save the origin.)
26
+
27
+ lib/rake/deploy.rb | 3 ++-
28
+ 1 files changed, 2 insertions(+), 1 deletions(-)
29
+
30
+ commit c8e409b0b8b65799caa112712c0936d53f9cc717
31
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
32
+ Date: 2010-06-22
33
+
34
+ Remove the explicity host when calling deploy.run(deploy.host)
35
+
36
+ lib/rake/deploy.rb | 22 +++++++++++-----------
37
+ 1 files changed, 11 insertions(+), 11 deletions(-)
38
+
39
+ commit ec9a2742752864653eb651bcdfc684415a56e738
40
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
41
+ Date: 2010-06-22
42
+
43
+ Improve run method:
44
+ * 1,2 or 3 parameters: (command), (host,command), (host,user,command)
45
+ * Let host be an array of hosts: deploy.run(["machine1","machine2"],"ls")
46
+
47
+ lib/rake/deploy/deploy.rb | 29 ++++++++++++++++++++++++-----
48
+ test/test_deploy.rb | 33 +++++++++++++++++++++++++++++++++
49
+ 2 files changed, 57 insertions(+), 5 deletions(-)
50
+ create mode 100644 test/test_deploy.rb
51
+
52
+ commit 4b7db26d9e3e354ee70fb3f8540218b142082d88
53
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
54
+ Date: 2010-06-22
55
+
56
+ Add a rake file to test
57
+
58
+ Rakefile | 10 ++++++++++
59
+ 1 files changed, 10 insertions(+), 0 deletions(-)
60
+ create mode 100644 Rakefile
61
+
62
+ commit f37805bf5bf1744244cfb23d5f0da80efa486f02
63
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
64
+ Date: 2010-06-22
65
+
66
+ Create deploy.current_path in :generate_timestamp
67
+
68
+ lib/rake/deploy.rb | 2 +-
69
+ 1 files changed, 1 insertions(+), 1 deletions(-)
70
+
71
+ commit 3d9096ef668bbb607150651c198b35bfdaa042ca
72
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
73
+ Date: 2010-06-22
74
+
75
+ Load dependencies only where dependencies are needed.
76
+
77
+ lib/rake/deploy.rb | 2 --
78
+ lib/rake/deploy/deploy.rb | 3 +++
79
+ 2 files changed, 3 insertions(+), 2 deletions(-)
80
+
81
+ commit e2c2335da79d07724bf4608dcc38b319061026ef
82
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
83
+ Date: 2010-06-22
84
+
85
+ Remove restart hook from deploy.rb (ups!)
86
+
87
+ lib/rake/deploy.rb | 5 -----
88
+ 1 files changed, 0 insertions(+), 5 deletions(-)
89
+
90
+ commit 6af3fed781b93eb48242613e1ba1538ba6ddfee5
91
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
92
+ Date: 2010-06-22
93
+
94
+ Update README.md to show new links to the github wiki.
95
+
96
+ README.md | 8 ++++----
97
+ 1 files changed, 4 insertions(+), 4 deletions(-)
98
+
99
+ commit 5c4c582ca6a11fee844df4b03b52f21a0665ca77
100
+ Author: Guillermo Álvarez <guillermo@cientifico.net>
101
+ Date: 2010-06-22
102
+
103
+ Initial version
104
+
105
+ .gitignore | 2 +
106
+ LICENSE | 22 ++++++++++++++
107
+ README.md | 71 +++++++++++++++++++++++++++++++++++++++++++++
108
+ lib/rake/deploy.rb | 61 ++++++++++++++++++++++++++++++++++++++
109
+ lib/rake/deploy/deploy.rb | 19 ++++++++++++
110
+ lib/rake/deploy/object.rb | 5 +++
111
+ 6 files changed, 180 insertions(+), 0 deletions(-)
112
+ create mode 100644 .gitignore
113
+ create mode 100644 LICENSE
114
+ create mode 100644 README.md
115
+ create mode 100644 lib/rake/deploy.rb
116
+ create mode 100644 lib/rake/deploy/deploy.rb
117
+ create mode 100644 lib/rake/deploy/object.rb
@@ -0,0 +1,37 @@
1
+ require 'test/unit'
2
+ require 'git-changelog'
3
+ require 'stringio'
4
+
5
+ class GitChangeLogTest < Test::Unit::TestCase
6
+
7
+ def fixture_path(name)
8
+ dir = File.dirname(__FILE__)
9
+ File.join(dir,name)
10
+ end
11
+
12
+ def test_parser
13
+ input = File.open(fixture_path('git-log.txt'),'r')
14
+ parser = Git::Changelog::Parser.new(input)
15
+ out = capture_stdout{ parser.generate_changelog }
16
+ assert_equal File.read(fixture_path('git-changelog.txt')), out
17
+ ensure
18
+ input.close if input
19
+ end
20
+
21
+
22
+
23
+ def capture_stdout
24
+ out = StringIO.new
25
+ old_stdout = $stdout
26
+ $stdout = out
27
+ $stdout.sync = true
28
+ yield
29
+ ensure
30
+ $stdout = old_stdout
31
+ out.rewind
32
+ return out.read
33
+ end
34
+ end
35
+
36
+
37
+
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: git-changes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Guillermo Álvarez Fernández <guillermo@cientifico.net>
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-06-24 00:00:00.000000000 +02:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ruby-debug
17
+ requirement: &2156725120 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *2156725120
26
+ - !ruby/object:Gem::Dependency
27
+ name: rake
28
+ requirement: &2156724700 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *2156724700
37
+ description: It taks the output from git-log, parses it, and output with the standard
38
+ format of changelog.
39
+ email:
40
+ - guillermo@cientifico.net
41
+ executables:
42
+ - git-changes
43
+ extensions: []
44
+ extra_rdoc_files: []
45
+ files:
46
+ - .gitignore
47
+ - Gemfile
48
+ - Rakefile
49
+ - bin/git-changes
50
+ - git-changelog.gemspec
51
+ - lib/git-changelog.rb
52
+ - lib/git-changelog/cli.rb
53
+ - lib/git-changelog/parser.rb
54
+ - lib/git-changelog/version.rb
55
+ - test/git-changelog.txt
56
+ - test/git-log.txt
57
+ - test/test_git-changelog.rb
58
+ has_rdoc: true
59
+ homepage: ''
60
+ licenses: []
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubyforge_project: git-changelog
79
+ rubygems_version: 1.6.2
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Generate a changelog based on git log.
83
+ test_files:
84
+ - test/git-changelog.txt
85
+ - test/git-log.txt
86
+ - test/test_git-changelog.rb