git-commit-mailer 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/text/news.md +25 -0
- data/git-commit-mailer.gemspec +2 -0
- data/lib/git-commit-mailer.rb +19 -10
- data/lib/git-commit-mailer/commit-info.rb +3 -3
- data/lib/git-commit-mailer/file-diff.rb +9 -1
- data/lib/git-commit-mailer/html-mail-body-formatter.rb +164 -23
- data/lib/git-commit-mailer/mail-body-formatter.rb +15 -0
- data/lib/git-commit-mailer/text-mail-body-formatter.rb +3 -3
- data/lib/git-commit-mailer/version.rb +1 -1
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 136f22114f43ec2e9948d128a9070084b3af3b0b
|
4
|
+
data.tar.gz: 11441281f87e1d875665e935939d5af2eb66c701
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f6c8edf2e5aebffd8132bdebe699570c2cf0027ce3032f6e1d3d22fc3560b68016312d78ececfd12ff79e5157080c1050e406f1727477123b1b35dc63c2b219
|
7
|
+
data.tar.gz: 508e1476fb0050113ccbccde483a0209eb173bbebbb216bb69d2c3bf0b2a30a50cf40566eaf7683511b46e130127b242d530645e016a45c70f29ceb597ab3892
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.0.4 - 2016-10-07 {#version-1-0-4}
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* [GitHub] Supported formatting merge message.
|
8
|
+
|
9
|
+
* [GitHub] Supported `GH-NNN` auto link.
|
10
|
+
|
11
|
+
* Supported diff in a line.
|
12
|
+
|
13
|
+
* Improved color schema.
|
14
|
+
|
15
|
+
* Supported special characters such as "," in author name.
|
16
|
+
|
17
|
+
* Supported showing diff in merge commit.
|
18
|
+
|
19
|
+
* [GitLab] Supported GitLab Wiki as a repository browser.
|
20
|
+
|
21
|
+
### Fixes
|
22
|
+
|
23
|
+
* Fixed a bug that `@domain` in email address is handled as mention.
|
24
|
+
|
25
|
+
* Fixed a bug that commit ID like string in email address is handled
|
26
|
+
as commit ID.
|
27
|
+
|
3
28
|
## 1.0.3 - 2015-06-09 {#version-1-0-3}
|
4
29
|
|
5
30
|
### Improvements
|
data/git-commit-mailer.gemspec
CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
+
spec.add_runtime_dependency "diff-lcs"
|
23
|
+
|
22
24
|
spec.add_development_dependency "bundler"
|
23
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
26
|
spec.add_development_dependency "test-unit"
|
data/lib/git-commit-mailer.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
1
|
# Copyright (C) 2009 Ryo Onodera <onodera@clear-code.com>
|
4
|
-
# Copyright (C) 2012-
|
2
|
+
# Copyright (C) 2012-2016 Kouhei Sutou <kou@clear-code.com>
|
5
3
|
#
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
@@ -273,7 +271,7 @@ class GitCommitMailer
|
|
273
271
|
|
274
272
|
def make_parser(options)
|
275
273
|
OptionParser.new do |parser|
|
276
|
-
parser.banner += "TO"
|
274
|
+
parser.banner += " TO"
|
277
275
|
|
278
276
|
add_repository_options(parser, options)
|
279
277
|
add_email_options(parser, options)
|
@@ -304,7 +302,7 @@ class GitCommitMailer
|
|
304
302
|
options.reference = reference
|
305
303
|
end
|
306
304
|
|
307
|
-
available_software = ["github", "github-wiki", "gitlab"]
|
305
|
+
available_software = ["github", "github-wiki", "gitlab", "gitlab-wiki"]
|
308
306
|
label = available_software.join(", ")
|
309
307
|
parser.on("--repository-browser=SOFTWARE",
|
310
308
|
available_software,
|
@@ -559,11 +557,22 @@ class GitCommitMailer
|
|
559
557
|
if /\A[^\s<]+@[^\s>]\z/ =~ @from
|
560
558
|
@from
|
561
559
|
else
|
562
|
-
"#{info.author_name} <#{@from}>"
|
560
|
+
"#{format_name(info.author_name)} <#{@from}>"
|
561
|
+
end
|
562
|
+
else
|
563
|
+
"#{format_name(info.author_name)} <#{info.author_email}>"
|
564
|
+
end
|
565
|
+
end
|
566
|
+
|
567
|
+
def format_name(name)
|
568
|
+
case name
|
569
|
+
when /[,"\\]/
|
570
|
+
escaped_name = name.gsub(/["\\]/) do |special_character|
|
571
|
+
"\\#{special_character}"
|
563
572
|
end
|
573
|
+
"\"#{escaped_name}\""
|
564
574
|
else
|
565
|
-
|
566
|
-
"#{info.author_name} <#{info.author_email}>"
|
575
|
+
name
|
567
576
|
end
|
568
577
|
end
|
569
578
|
|
@@ -1037,8 +1046,8 @@ EOF
|
|
1037
1046
|
end
|
1038
1047
|
|
1039
1048
|
merge_message = "Merged #{merge_commit.short_revision}: #{merge_commit.subject}"
|
1040
|
-
if not is_traversing_first_parent and not commit_info.
|
1041
|
-
commit_info.
|
1049
|
+
if not is_traversing_first_parent and not commit_info.merge_messages.index(merge_message)
|
1050
|
+
commit_info.merge_messages << merge_message
|
1042
1051
|
commit_info.merge_commits << merge_commit
|
1043
1052
|
end
|
1044
1053
|
|
@@ -44,7 +44,7 @@ class GitCommitMailer
|
|
44
44
|
attr_reader :added_files, :copied_files, :deleted_files, :updated_files
|
45
45
|
attr_reader :renamed_files, :type_changed_files, :diffs
|
46
46
|
attr_reader :subject, :author_name, :author_email, :date, :summary
|
47
|
-
attr_accessor :
|
47
|
+
attr_accessor :merge_messages
|
48
48
|
attr_writer :reference
|
49
49
|
attr_reader :merge_commits
|
50
50
|
def initialize(mailer, reference, revision)
|
@@ -64,7 +64,7 @@ class GitCommitMailer
|
|
64
64
|
parse_file_status
|
65
65
|
parse_diff
|
66
66
|
|
67
|
-
@
|
67
|
+
@merge_messages = []
|
68
68
|
@merge_commits = []
|
69
69
|
end
|
70
70
|
|
@@ -185,7 +185,7 @@ class GitCommitMailer
|
|
185
185
|
@diffs = []
|
186
186
|
output = []
|
187
187
|
n_bytes = 0
|
188
|
-
git("log -n 1 --pretty=format:'' -C -p #{@revision}") do |io|
|
188
|
+
git("log -n 1 --pretty=format:'' -C --cc -p #{@revision}") do |io|
|
189
189
|
io.each_line do |line|
|
190
190
|
n_bytes += line.bytesize
|
191
191
|
break if n_bytes > mailer.max_diff_size
|
@@ -83,9 +83,14 @@ class GitCommitMailer
|
|
83
83
|
|
84
84
|
def parse_header(lines)
|
85
85
|
line = lines.shift.strip
|
86
|
-
|
86
|
+
case line
|
87
|
+
when /\Adiff --git ("?a\/.*) ("?b\/.*)/
|
87
88
|
@from_file = extract_file_path($1)
|
88
89
|
@to_file = extract_file_path($2)
|
90
|
+
when /\Adiff --(?:combined|cc) (.*?)/
|
91
|
+
path = CommitInfo.unescape_file_path($1)
|
92
|
+
@from_file = path
|
93
|
+
@to_file = path
|
89
94
|
else
|
90
95
|
raise "Unexpected diff header format: #{line}"
|
91
96
|
end
|
@@ -116,6 +121,9 @@ class GitCommitMailer
|
|
116
121
|
when /\Aindex ([0-9a-f]{7,})\.\.([0-9a-f]{7,})/
|
117
122
|
@old_blob = $1
|
118
123
|
@new_blob = $2
|
124
|
+
when /\Aindex ([0-9a-f]{7,}),([0-9a-f]{7,}\.\.[0-9a-f]{7,})/
|
125
|
+
@old_blob = $1
|
126
|
+
@new_blob = $2
|
119
127
|
else
|
120
128
|
return false
|
121
129
|
end
|
@@ -18,6 +18,8 @@
|
|
18
18
|
|
19
19
|
require "digest/md5"
|
20
20
|
|
21
|
+
require "diff/lcs"
|
22
|
+
|
21
23
|
class GitCommitMailer
|
22
24
|
class HTMLMailBodyFormatter < MailBodyFormatter
|
23
25
|
include ERB::Util
|
@@ -42,18 +44,18 @@ class GitCommitMailer
|
|
42
44
|
<%= dd(h(@mailer.format_time(@info.date))) %>
|
43
45
|
<%= dt("New Revision") %>
|
44
46
|
<%= dd(format_revision) %>
|
45
|
-
<% unless @info.
|
47
|
+
<% unless @info.merge_messages.empty? %>
|
46
48
|
<%= dt("Merge") %>
|
47
49
|
<%= dd_start %>
|
48
50
|
<ul>
|
49
|
-
<% @info.
|
50
|
-
<li><%=
|
51
|
+
<% @info.merge_messages.each do |message| %>
|
52
|
+
<li><%= format_message(message) %></li>
|
51
53
|
<% end %>
|
52
54
|
</ul>
|
53
55
|
</dd>
|
54
56
|
<% end %>
|
55
57
|
<%= dt("Message") %>
|
56
|
-
<%= dd(
|
58
|
+
<%= dd(pre(format_message(@info.summary))) %>
|
57
59
|
<%= format_files("Added", @info.added_files) %>
|
58
60
|
<%= format_files("Copied", @info.copied_files) %>
|
59
61
|
<%= format_files("Removed", @info.deleted_files) %>
|
@@ -72,7 +74,7 @@ class GitCommitMailer
|
|
72
74
|
revision = @info.revision
|
73
75
|
url = commit_url
|
74
76
|
if url
|
75
|
-
formatted_revision = "
|
77
|
+
formatted_revision = tag("a", {"href" => url}, h(revision))
|
76
78
|
else
|
77
79
|
formatted_revision = h(revision)
|
78
80
|
end
|
@@ -170,6 +172,8 @@ class GitCommitMailer
|
|
170
172
|
from_line_column = ""
|
171
173
|
to_line_column = ""
|
172
174
|
content_column = ""
|
175
|
+
content_lines = []
|
176
|
+
|
173
177
|
file_path = diff.file_path
|
174
178
|
diff.changes.each do |type, line_number, line|
|
175
179
|
case type
|
@@ -179,6 +183,8 @@ class GitCommitMailer
|
|
179
183
|
from_line_number)
|
180
184
|
to_line_column << span_line_number_hunk_header(file_path, :to,
|
181
185
|
to_line_number)
|
186
|
+
|
187
|
+
flush_content_lines(content_column, content_lines)
|
182
188
|
case line
|
183
189
|
when /\A(@@[\s0-9\-+,]+@@\s*)(.+)(\s*)\z/
|
184
190
|
hunk_info = $1
|
@@ -187,50 +193,152 @@ class GitCommitMailer
|
|
187
193
|
else
|
188
194
|
formatted_line = h(line)
|
189
195
|
end
|
190
|
-
content_column << span_diff_hunk_header(formatted_line)
|
196
|
+
content_column << span_diff_hunk_header(formatted_line) << "\n"
|
191
197
|
when :added
|
192
198
|
from_line_column << span_line_number_nothing
|
193
199
|
to_line_column << span_line_number_added(file_path, line_number)
|
194
|
-
|
200
|
+
content_lines << [:added, line]
|
195
201
|
when :deleted
|
196
202
|
from_line_column << span_line_number_deleted(file_path, line_number)
|
197
203
|
to_line_column << span_line_number_nothing
|
198
|
-
|
204
|
+
content_lines << [:deleted, line]
|
199
205
|
when :not_changed
|
200
206
|
from_line_number, to_line_number = line_number
|
201
207
|
from_line_column << span_line_number_not_changed(file_path, :from,
|
202
208
|
from_line_number)
|
203
209
|
to_line_column << span_line_number_not_changed(file_path, :to,
|
204
210
|
to_line_number)
|
205
|
-
content_column
|
211
|
+
flush_content_lines(content_column, content_lines)
|
212
|
+
content_column << span_diff_not_changed(h(line)) << "\n"
|
206
213
|
end
|
207
214
|
from_line_column << "\n"
|
208
215
|
to_line_column << "\n"
|
209
|
-
content_column << "\n"
|
210
216
|
end
|
217
|
+
flush_content_lines(content_column, content_lines)
|
211
218
|
[from_line_column, to_line_column, content_column]
|
212
219
|
end
|
213
220
|
|
214
|
-
def
|
221
|
+
def flush_content_lines(column, lines)
|
222
|
+
return if lines.empty?
|
223
|
+
|
224
|
+
added_lines = []
|
225
|
+
deleted_lines = []
|
226
|
+
lines.each do |type, line|
|
227
|
+
if type == :added
|
228
|
+
added_lines << line
|
229
|
+
else
|
230
|
+
deleted_lines << line
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
if added_lines.size == deleted_lines.size
|
235
|
+
nth_added = 0
|
236
|
+
nth_deleted = 0
|
237
|
+
lines.each do |type, line|
|
238
|
+
if type == :added
|
239
|
+
deleted_line = deleted_lines[nth_added]
|
240
|
+
formatted_added_line = format_added_words(line, deleted_line)
|
241
|
+
column << span_diff_added(formatted_added_line) << "\n"
|
242
|
+
nth_added += 1
|
243
|
+
else
|
244
|
+
added_line = added_lines[nth_deleted]
|
245
|
+
formatted_deleted_line = format_deleted_words(line, added_line)
|
246
|
+
column << span_diff_deleted(formatted_deleted_line) << "\n"
|
247
|
+
nth_deleted += 1
|
248
|
+
end
|
249
|
+
end
|
250
|
+
else
|
251
|
+
lines.each do |type, line|
|
252
|
+
if type == :added
|
253
|
+
column << span_diff_added(h(line)) << "\n"
|
254
|
+
else
|
255
|
+
column << span_diff_deleted(h(line)) << "\n"
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|
259
|
+
lines.clear
|
260
|
+
end
|
261
|
+
|
262
|
+
def format_changed_words(from_line, to_line, &formatter)
|
263
|
+
line = h(from_line[0, 1])
|
264
|
+
changed_chars = ""
|
265
|
+
|
266
|
+
flush_changed_chars = lambda do
|
267
|
+
unless changed_chars.empty?
|
268
|
+
line << formatter.call(h(changed_chars))
|
269
|
+
changed_chars.clear
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
Diff::LCS.sdiff(from_line[1..-1], to_line[1..-1]).each do |diff|
|
274
|
+
action, from, _to = *diff
|
275
|
+
_from_nth, from_char = from
|
276
|
+
next if from_char.nil?
|
277
|
+
|
278
|
+
case action
|
279
|
+
when "="
|
280
|
+
flush_changed_chars.call
|
281
|
+
line << h(from_char)
|
282
|
+
when "!", "-"
|
283
|
+
changed_chars << from_char
|
284
|
+
when "+"
|
285
|
+
flush_changed_chars.call
|
286
|
+
end
|
287
|
+
end
|
288
|
+
flush_changed_chars.call
|
289
|
+
|
290
|
+
line
|
291
|
+
end
|
292
|
+
|
293
|
+
def format_added_words(added_line, deleted_line)
|
294
|
+
format_changed_words(added_line, deleted_line) do |chars|
|
295
|
+
span_diff_added_word(chars)
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
def format_deleted_words(deleted_line, added_line)
|
300
|
+
format_changed_words(deleted_line, added_line) do |chars|
|
301
|
+
span_diff_deleted_word(chars)
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
def format_message(message)
|
306
|
+
message = message.strip
|
215
307
|
case @mailer.repository_browser
|
216
308
|
when "github"
|
217
|
-
|
309
|
+
format_message_github(message)
|
218
310
|
else
|
219
|
-
|
311
|
+
h(message)
|
220
312
|
end
|
221
313
|
end
|
222
314
|
|
315
|
+
PATTERN_HTML_SPECIAL_CHARACTER = /['&\"<>]/
|
316
|
+
PATTERN_EMAIL = /[\da-zA-Z\-_]+@[\da-zA-Z\-_.]+/
|
317
|
+
GITHUB_MARKUP_PATTERN_GH_ISSUE = /GH-\d+/
|
223
318
|
GITHUB_MARKUP_PATTERN_ISSUE = /\#\d+/
|
224
319
|
GITHUB_MARKUP_PATTERN_COMMIT = /[\da-fA-F]{7,}/
|
225
320
|
GITHUB_MARKUP_PATTERN_MENTION = /@[\da-zA-Z\-]+/
|
226
|
-
def
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
321
|
+
def format_message_github(message)
|
322
|
+
message.gsub(/
|
323
|
+
#{PATTERN_HTML_SPECIAL_CHARACTER}|
|
324
|
+
#{PATTERN_EMAIL}|
|
325
|
+
#{GITHUB_MARKUP_PATTERN_GH_ISSUE}|
|
326
|
+
#{GITHUB_MARKUP_PATTERN_ISSUE}|
|
327
|
+
#{GITHUB_MARKUP_PATTERN_COMMIT}|
|
328
|
+
#{GITHUB_MARKUP_PATTERN_MENTION}
|
329
|
+
/x) do |matched|
|
233
330
|
case matched
|
331
|
+
when /\A#{PATTERN_HTML_SPECIAL_CHARACTER}\z/
|
332
|
+
h(matched)
|
333
|
+
when /\A#{PATTERN_EMAIL}\z/
|
334
|
+
h(matched)
|
335
|
+
when /\A#{GITHUB_MARKUP_PATTERN_GH_ISSUE}\z/
|
336
|
+
issue_number = matched.gsub(/\AGH-/, "")
|
337
|
+
tag("a",
|
338
|
+
{
|
339
|
+
"href" => github_issue_url(issue_number),
|
340
|
+
},
|
341
|
+
h(matched))
|
234
342
|
when /\A#{GITHUB_MARKUP_PATTERN_ISSUE}\z/
|
235
343
|
issue_number = matched.gsub(/\A\#/, "")
|
236
344
|
tag("a",
|
@@ -256,7 +364,6 @@ class GitCommitMailer
|
|
256
364
|
h(matched)
|
257
365
|
end
|
258
366
|
end
|
259
|
-
pre(formatted_summary)
|
260
367
|
end
|
261
368
|
|
262
369
|
def github_issue_url(id)
|
@@ -462,14 +569,28 @@ class GitCommitMailer
|
|
462
569
|
|
463
570
|
def span_deleted_styles
|
464
571
|
{
|
465
|
-
"background-color" => "#
|
572
|
+
"background-color" => "#ffecec",
|
573
|
+
"color" => "#000000",
|
574
|
+
}
|
575
|
+
end
|
576
|
+
|
577
|
+
def span_deleted_word_styles
|
578
|
+
{
|
579
|
+
"background-color" => "#f8cbcb",
|
466
580
|
"color" => "#000000",
|
467
581
|
}
|
468
582
|
end
|
469
583
|
|
470
584
|
def span_added_styles
|
471
585
|
{
|
472
|
-
"background-color" => "#
|
586
|
+
"background-color" => "#eaffea",
|
587
|
+
"color" => "#000000",
|
588
|
+
}
|
589
|
+
end
|
590
|
+
|
591
|
+
def span_added_word_styles
|
592
|
+
{
|
593
|
+
"background-color" => "#a6f3a6",
|
473
594
|
"color" => "#000000",
|
474
595
|
}
|
475
596
|
end
|
@@ -605,6 +726,15 @@ class GitCommitMailer
|
|
605
726
|
content)
|
606
727
|
end
|
607
728
|
|
729
|
+
def span_diff_deleted_word(content)
|
730
|
+
tag("span",
|
731
|
+
{
|
732
|
+
"class" => "diff-deleted-word",
|
733
|
+
"style" => span_deleted_word_styles,
|
734
|
+
},
|
735
|
+
content)
|
736
|
+
end
|
737
|
+
|
608
738
|
def span_diff_added(content)
|
609
739
|
tag("span",
|
610
740
|
{
|
@@ -614,6 +744,15 @@ class GitCommitMailer
|
|
614
744
|
content)
|
615
745
|
end
|
616
746
|
|
747
|
+
def span_diff_added_word(content)
|
748
|
+
tag("span",
|
749
|
+
{
|
750
|
+
"class" => "diff-added-word",
|
751
|
+
"style" => span_added_word_styles,
|
752
|
+
},
|
753
|
+
content)
|
754
|
+
end
|
755
|
+
|
617
756
|
def span_diff_not_changed(content)
|
618
757
|
tag("span",
|
619
758
|
{
|
@@ -632,6 +771,8 @@ class GitCommitMailer
|
|
632
771
|
"#{base_url}#diff-#{file_md5}"
|
633
772
|
when "github-wiki"
|
634
773
|
commit_file_url_github_wiki(file)
|
774
|
+
when "gitlab-wiki"
|
775
|
+
commit_file_url_gitlab_wiki(file)
|
635
776
|
else
|
636
777
|
nil
|
637
778
|
end
|
@@ -40,6 +40,9 @@ class GitCommitMailer
|
|
40
40
|
return nil if @mailer.gitlab_project_uri.nil?
|
41
41
|
revision = @info.revision
|
42
42
|
"#{@mailer.gitlab_project_uri}/commit/#{revision}"
|
43
|
+
when "gitlab-wiki"
|
44
|
+
file = (@info.updated_files + @info.added_files).first
|
45
|
+
commit_file_url_gitlab_wiki(file)
|
43
46
|
else
|
44
47
|
nil
|
45
48
|
end
|
@@ -66,5 +69,17 @@ class GitCommitMailer
|
|
66
69
|
revision = @info.revision
|
67
70
|
"#{base_url}/#{user}/#{repository}/wiki/#{page_name_in_url}/#{revision}"
|
68
71
|
end
|
72
|
+
|
73
|
+
def commit_file_url_gitlab_wiki(file)
|
74
|
+
return nil if file.nil?
|
75
|
+
|
76
|
+
gitlab_project_uri = @mailer.gitlab_project_uri
|
77
|
+
return nil if gitlab_project_uri.nil?
|
78
|
+
|
79
|
+
page_name = file.gsub(/\.[^.]+\z/, "")
|
80
|
+
page_name_in_url = ERB::Util.u(page_name)
|
81
|
+
revision = @info.revision
|
82
|
+
"#{gitlab_project_uri}/wikis/#{page_name_in_url}?version_id=#{revision}"
|
83
|
+
end
|
69
84
|
end
|
70
85
|
end
|
@@ -31,9 +31,9 @@ class GitCommitMailer
|
|
31
31
|
New Revision: <%= @info.revision %>
|
32
32
|
<%= format_commit_url %>
|
33
33
|
|
34
|
-
<% unless @info.
|
35
|
-
<% @info.
|
36
|
-
<%=
|
34
|
+
<% unless @info.merge_messages.empty? %>
|
35
|
+
<% @info.merge_messages.each do |message| %>
|
36
|
+
<%= message %>
|
37
37
|
<% end %>
|
38
38
|
|
39
39
|
<% end %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-commit-mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Onodera
|
@@ -10,8 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-10-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: diff-lcs
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ">="
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0'
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: bundler
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,9 +131,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
131
|
version: '0'
|
118
132
|
requirements: []
|
119
133
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.
|
134
|
+
rubygems_version: 2.5.1
|
121
135
|
signing_key:
|
122
136
|
specification_version: 4
|
123
137
|
summary: A utility to send commit mails for commits pushed to git repositories.
|
124
138
|
test_files: []
|
125
|
-
has_rdoc:
|