git-commit-notifier 0.10.2 → 0.10.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +5 -1
- data/VERSION +1 -1
- data/bin/git-commit-notifier +6 -0
- data/config/git-notifier-config.example.yml +3 -0
- data/git-commit-notifier.gemspec +1 -1
- data/lib/git_commit_notifier/diff_to_html.rb +7 -2
- data/lib/git_commit_notifier/emailer.rb +11 -4
- data/lib/git_commit_notifier/executor.rb +6 -1
- data/local-run.rb +6 -0
- data/spec/lib/git_commit_notifier/emailer_spec.rb +15 -0
- metadata +28 -25
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Git Commit Notifier
|
2
2
|
|
3
|
-
[![Build Status](
|
3
|
+
[![Build Status](http://travis-ci.org/bitboxer/git-commit-notifier.png)](http://travis-ci.org/bitboxer/git-commit-notifier)
|
4
4
|
|
5
5
|
__by Bodo Tasche (bodo 'at' wannawork 'dot' de), Akzhan Abdulin (akzhan 'dot' abdulin 'at' gmail 'dot' com), Csoma Zoltan (info 'at' railsprogrammer 'dot' net)__
|
6
6
|
|
@@ -116,6 +116,10 @@ old commits in processes of forking, branching etc.
|
|
116
116
|
|
117
117
|
The file _previously.txt_ is created at the first commit. If you moved the file to the server, you have to check the rights to that file and fix them if needed. The git repo owner needs the right to write into that file.
|
118
118
|
|
119
|
+
### Empty html on ruby 1.8.7
|
120
|
+
|
121
|
+
Check <code>gem list premailer</code>. Please remove premailer 1.7.2 if exists (<code>gem uninstall premailer -v 1.7.2; gem install premailer</code>), because 1.7.2 was broken.
|
122
|
+
|
119
123
|
## Credits
|
120
124
|
|
121
125
|
Thanks for [putpat.tv](http://www.putpat.tv), [Primalgrasp](http://www.primalgrasp.com) and [Undev](http://undev.ru/) for sponsoring this work.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.10.
|
1
|
+
0.10.3
|
data/bin/git-commit-notifier
CHANGED
@@ -28,6 +28,9 @@ mailinglist: developers@example.com,dev2@example.com,dev3@example.com,cto@exampl
|
|
28
28
|
# stylesheet file (embedded template/styles.css by default)
|
29
29
|
# stylesheet: /absolute/path/to/readable/stylesheet.css
|
30
30
|
|
31
|
+
# custom template file (embedded template/email.html.erb)
|
32
|
+
# custom_template: /absolute/path/to/readable/email.html.erb
|
33
|
+
|
31
34
|
# select the delivery method: smtp, nntp, sendmail, or debug
|
32
35
|
delivery_method: sendmail
|
33
36
|
|
data/git-commit-notifier.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
|
28
28
|
s.add_runtime_dependency(%q<diff-lcs>, ["~> 1.1.2"])
|
29
29
|
s.add_runtime_dependency(%q<nntp>, ["~> 1.0"])
|
30
|
-
s.add_runtime_dependency(%q<premailer>, ["~> 1.7", "!= 1.7.2"])
|
30
|
+
s.add_runtime_dependency(%q<premailer>, ["~> 1.7", ">= 1.7.1", "!= 1.7.2"])
|
31
31
|
s.add_runtime_dependency(%q<nokogiri>, ["~> 1.4"])
|
32
32
|
s.add_development_dependency(%q<rake>, ["~> 0.8", "!= 0.9.0"])
|
33
33
|
s.add_development_dependency(%q<bundler>, ["~> 1.0", ">=1.0.10"])
|
@@ -434,8 +434,13 @@ module GitCommitNotifier
|
|
434
434
|
return nil if old_commit?(commit_info)
|
435
435
|
changed_files = ""
|
436
436
|
if merge_commit?(commit_info)
|
437
|
+
changed_file_list = []
|
437
438
|
merge_revisions = commit_info[:merge].split
|
438
|
-
|
439
|
+
merge_first_parent = merge_revisions.slice!(0)
|
440
|
+
merge_revisions.each do |merge_other_parent|
|
441
|
+
changed_file_list += Git.changed_files(merge_first_parent, merge_other_parent)
|
442
|
+
end
|
443
|
+
changed_files = "Changed files:\n\n#{changed_file_list.uniq.join()}\n"
|
439
444
|
end
|
440
445
|
|
441
446
|
title = "<div class=\"title\">"
|
@@ -460,7 +465,7 @@ module GitCommitNotifier
|
|
460
465
|
|
461
466
|
title += "<br />\n"
|
462
467
|
|
463
|
-
title += "<strong>Branch:</strong> #{CGI.escapeHTML(branch_name)}\n<br />"
|
468
|
+
title += "<strong>Branch:</strong> #{CGI.escapeHTML(branch_name)}\n<br />" if branch_name
|
464
469
|
title += "<strong>Date:</strong> #{CGI.escapeHTML commit_info[:date]}\n<br />"
|
465
470
|
title += "<strong>Author:</strong> #{CGI.escapeHTML(commit_info[:author])} <#{commit_info[:email]}>\n<br />"
|
466
471
|
title += "<strong>Committer:</strong> #{CGI.escapeHTML(commit_info[:committer])} <#{commit_info[:commit_email]}>\n</div>"
|
@@ -5,10 +5,12 @@ class GitCommitNotifier::Emailer
|
|
5
5
|
TEMPLATE = File.join(File.dirname(__FILE__), '/../../template/email.html.erb').freeze
|
6
6
|
PARAMETERS = %w[project_path recipient from_address from_alias subject text_message html_message ref_name old_rev new_rev].freeze
|
7
7
|
|
8
|
-
|
8
|
+
def config
|
9
|
+
@@config
|
10
|
+
end
|
9
11
|
|
10
12
|
def initialize(config, options = {})
|
11
|
-
|
13
|
+
@@config = config || {}
|
12
14
|
PARAMETERS.each do |name|
|
13
15
|
instance_variable_set("@#{name}".to_sym, options[name.to_sym])
|
14
16
|
end
|
@@ -19,9 +21,14 @@ class GitCommitNotifier::Emailer
|
|
19
21
|
@template = nil
|
20
22
|
end
|
21
23
|
|
24
|
+
def template_source
|
25
|
+
template_file = @@config['custom_template'] || TEMPLATE
|
26
|
+
IO.read(template_file)
|
27
|
+
end
|
28
|
+
|
22
29
|
def template
|
23
30
|
unless @template
|
24
|
-
source =
|
31
|
+
source = template_source
|
25
32
|
begin
|
26
33
|
require 'erubis'
|
27
34
|
@template = Erubis::Eruby.new(source)
|
@@ -136,7 +143,7 @@ class GitCommitNotifier::Emailer
|
|
136
143
|
when :nntp then perform_delivery_nntp(content, config['nntp_settings'])
|
137
144
|
when :debug then perform_delivery_debug(content)
|
138
145
|
else # sendmail
|
139
|
-
perform_delivery_sendmail(content,
|
146
|
+
perform_delivery_sendmail(content, config['sendmail_options'])
|
140
147
|
end
|
141
148
|
end
|
142
149
|
|
@@ -10,7 +10,12 @@ module GitCommitNotifier
|
|
10
10
|
GitCommitNotifier::CommitHook.show_error("You have to add a path to the config file for git-commit-notifier")
|
11
11
|
puts "Usage: git-commit-notifier config-script [oldrev newrev [ref]]"
|
12
12
|
when 1
|
13
|
-
|
13
|
+
stdin = $stdin.gets
|
14
|
+
if stdin.nil?
|
15
|
+
GitCommitNotifier::CommitHook.show_error("No data given on standard input")
|
16
|
+
return
|
17
|
+
end
|
18
|
+
oldrev, newrev, ref = stdin.strip.split
|
14
19
|
GitCommitNotifier::CommitHook.run args.first, oldrev, newrev, ref
|
15
20
|
when 2
|
16
21
|
GitCommitNotifier::CommitHook.run args.first, args.last, args.last, ""
|
data/local-run.rb
CHANGED
@@ -6,6 +6,12 @@ if RUBY_VERSION < '1.9'
|
|
6
6
|
require 'jcode'
|
7
7
|
end
|
8
8
|
|
9
|
+
if RUBY_VERSION >= '1.9'
|
10
|
+
Encoding.default_external = "utf-8"
|
11
|
+
Encoding.default_internal = "utf-8"
|
12
|
+
end
|
13
|
+
|
14
|
+
|
9
15
|
require 'rubygems'
|
10
16
|
$LOAD_PATH.unshift(File.expand_path('./lib', File.dirname(__FILE__)))
|
11
17
|
|
@@ -86,4 +86,19 @@ describe GitCommitNotifier::Emailer do
|
|
86
86
|
GitCommitNotifier::Emailer.template.should be_kind_of(ERB)
|
87
87
|
end
|
88
88
|
end
|
89
|
+
|
90
|
+
describe :template_source do
|
91
|
+
it "should return custom template if custom is provided" do
|
92
|
+
emailer = GitCommitNotifier::Emailer.new({'custom_template' => '/path/to/custom/template'})
|
93
|
+
mock(IO).read('/path/to/custom/template') { 'custom templated text' }
|
94
|
+
dont_allow(IO).read(GitCommitNotifier::Emailer::TEMPLATE)
|
95
|
+
GitCommitNotifier::Emailer.template_source.should == 'custom templated text'
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should return the default template if custom_template is not provided" do
|
99
|
+
emailer = GitCommitNotifier::Emailer.new({})
|
100
|
+
mock(IO).read(GitCommitNotifier::Emailer::TEMPLATE) { 'default templated text' }
|
101
|
+
GitCommitNotifier::Emailer.template_source.should == 'default templated text'
|
102
|
+
end
|
103
|
+
end
|
89
104
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-commit-notifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,12 +10,12 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-10-16 00:00:00.000000000 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: diff-lcs
|
18
|
-
requirement: &
|
18
|
+
requirement: &70201601412560 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: 1.1.2
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70201601412560
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: nntp
|
29
|
-
requirement: &
|
29
|
+
requirement: &70201601412080 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,24 +34,27 @@ dependencies:
|
|
34
34
|
version: '1.0'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70201601412080
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: premailer
|
40
|
-
requirement: &
|
40
|
+
requirement: &70201601411560 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '1.7'
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.7.1
|
46
49
|
- - ! '!='
|
47
50
|
- !ruby/object:Gem::Version
|
48
51
|
version: 1.7.2
|
49
52
|
type: :runtime
|
50
53
|
prerelease: false
|
51
|
-
version_requirements: *
|
54
|
+
version_requirements: *70201601411560
|
52
55
|
- !ruby/object:Gem::Dependency
|
53
56
|
name: nokogiri
|
54
|
-
requirement: &
|
57
|
+
requirement: &70201601410600 !ruby/object:Gem::Requirement
|
55
58
|
none: false
|
56
59
|
requirements:
|
57
60
|
- - ~>
|
@@ -59,10 +62,10 @@ dependencies:
|
|
59
62
|
version: '1.4'
|
60
63
|
type: :runtime
|
61
64
|
prerelease: false
|
62
|
-
version_requirements: *
|
65
|
+
version_requirements: *70201601410600
|
63
66
|
- !ruby/object:Gem::Dependency
|
64
67
|
name: rake
|
65
|
-
requirement: &
|
68
|
+
requirement: &70201601410100 !ruby/object:Gem::Requirement
|
66
69
|
none: false
|
67
70
|
requirements:
|
68
71
|
- - ~>
|
@@ -73,10 +76,10 @@ dependencies:
|
|
73
76
|
version: 0.9.0
|
74
77
|
type: :development
|
75
78
|
prerelease: false
|
76
|
-
version_requirements: *
|
79
|
+
version_requirements: *70201601410100
|
77
80
|
- !ruby/object:Gem::Dependency
|
78
81
|
name: bundler
|
79
|
-
requirement: &
|
82
|
+
requirement: &70201601372340 !ruby/object:Gem::Requirement
|
80
83
|
none: false
|
81
84
|
requirements:
|
82
85
|
- - ~>
|
@@ -87,10 +90,10 @@ dependencies:
|
|
87
90
|
version: 1.0.10
|
88
91
|
type: :development
|
89
92
|
prerelease: false
|
90
|
-
version_requirements: *
|
93
|
+
version_requirements: *70201601372340
|
91
94
|
- !ruby/object:Gem::Dependency
|
92
95
|
name: code-cleaner
|
93
|
-
requirement: &
|
96
|
+
requirement: &70201601371500 !ruby/object:Gem::Requirement
|
94
97
|
none: false
|
95
98
|
requirements:
|
96
99
|
- - ! '>='
|
@@ -98,10 +101,10 @@ dependencies:
|
|
98
101
|
version: '0'
|
99
102
|
type: :development
|
100
103
|
prerelease: false
|
101
|
-
version_requirements: *
|
104
|
+
version_requirements: *70201601371500
|
102
105
|
- !ruby/object:Gem::Dependency
|
103
106
|
name: rspec-core
|
104
|
-
requirement: &
|
107
|
+
requirement: &70201601370900 !ruby/object:Gem::Requirement
|
105
108
|
none: false
|
106
109
|
requirements:
|
107
110
|
- - ! '>='
|
@@ -109,10 +112,10 @@ dependencies:
|
|
109
112
|
version: '0'
|
110
113
|
type: :development
|
111
114
|
prerelease: false
|
112
|
-
version_requirements: *
|
115
|
+
version_requirements: *70201601370900
|
113
116
|
- !ruby/object:Gem::Dependency
|
114
117
|
name: rspec-expectations
|
115
|
-
requirement: &
|
118
|
+
requirement: &70201601370320 !ruby/object:Gem::Requirement
|
116
119
|
none: false
|
117
120
|
requirements:
|
118
121
|
- - ! '>='
|
@@ -120,10 +123,10 @@ dependencies:
|
|
120
123
|
version: '0'
|
121
124
|
type: :development
|
122
125
|
prerelease: false
|
123
|
-
version_requirements: *
|
126
|
+
version_requirements: *70201601370320
|
124
127
|
- !ruby/object:Gem::Dependency
|
125
128
|
name: rr
|
126
|
-
requirement: &
|
129
|
+
requirement: &70201601369720 !ruby/object:Gem::Requirement
|
127
130
|
none: false
|
128
131
|
requirements:
|
129
132
|
- - ~>
|
@@ -131,10 +134,10 @@ dependencies:
|
|
131
134
|
version: '1.0'
|
132
135
|
type: :development
|
133
136
|
prerelease: false
|
134
|
-
version_requirements: *
|
137
|
+
version_requirements: *70201601369720
|
135
138
|
- !ruby/object:Gem::Dependency
|
136
139
|
name: faker
|
137
|
-
requirement: &
|
140
|
+
requirement: &70201601369140 !ruby/object:Gem::Requirement
|
138
141
|
none: false
|
139
142
|
requirements:
|
140
143
|
- - ~>
|
@@ -142,7 +145,7 @@ dependencies:
|
|
142
145
|
version: 0.9.5
|
143
146
|
type: :development
|
144
147
|
prerelease: false
|
145
|
-
version_requirements: *
|
148
|
+
version_requirements: *70201601369140
|
146
149
|
description: This git commit notifier sends html mails with nice diffs for every changed
|
147
150
|
file.
|
148
151
|
email: bodo@bitboxer.de
|
@@ -213,7 +216,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
216
|
version: '0'
|
214
217
|
segments:
|
215
218
|
- 0
|
216
|
-
hash:
|
219
|
+
hash: 3801418310889905206
|
217
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
221
|
none: false
|
219
222
|
requirements:
|