git-commit-mailer 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a9a76ede1a8e869ceb08833b8d53d8ac98a4a18
4
- data.tar.gz: cafcfc3b82ab6101a2b57b7d9eb176afac78f047
3
+ metadata.gz: 3c8f402644de43c9b76f2631aef1603d127d3f12
4
+ data.tar.gz: 8306e844d78ee136b1d499f9b9a73d033dcf83c5
5
5
  SHA512:
6
- metadata.gz: 3b582c308654f80df51c2f3804b1d4ee97a068432e79ab13ddd4e23f1339efb961a2bbe39cbf60399adeb34570ef531f14592938368d2136e6c3de63a50df291
7
- data.tar.gz: 87f2bc5f3cc64241d0a443a66a1e1d9f8027751928cac405f11a47943923f1bb413ecf713f968d32e5da5fe588d79a9284e2040d30998d3a9b9b37050e330255
6
+ metadata.gz: f1a33c639872bbc62c88c86cc4300bba9e6e4e9dcb8c6c32f1acfd619c43dbfc9d3258862a0619d9372f3369e890595f0a9378a56fe7e7dd2deb021673d9085a
7
+ data.tar.gz: 223867affd7a3ab35163af1d1528cb19d9c2ad480dd3d0f3d7c2a29ac1dcc76dfe881d1177cd203b842e167ad5671ffeb02391b620a89824e73707abf32674f9
data/LICENSE ADDED
@@ -0,0 +1 @@
1
+ GPLv3 or later. See doc/text/GPL-3.txt for details.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # GitCommitMailer
4
4
 
5
- A utility to send commit mails for commits pushed to git repositories.
5
+ A utility to send commit mails for commits pushed to Git repositories.
6
6
 
7
7
  See also [Git](http://git-scm.com/).
8
8
 
@@ -15,12 +15,12 @@ See also [Git](http://git-scm.com/).
15
15
  ## License
16
16
 
17
17
  GitCommitMailer is licensed under GPLv3 or later. See
18
- license/GPL-3.txt for details.
18
+ doc/text/GPL-3.txt for details.
19
19
 
20
20
  ## Dependencies
21
21
 
22
- * Ruby >= 2.0.0
23
- * git >= 1.7
22
+ * Ruby >= 1.9.3
23
+ * Git >= 1.7
24
24
 
25
25
  ## Install
26
26
 
@@ -28,20 +28,20 @@ license/GPL-3.txt for details.
28
28
  $ gem install git-commit-mailer
29
29
  ~~~
30
30
 
31
- git-commit-mailer utilizes git's hook functionality to send
31
+ git-commit-mailer utilizes Git's hook functionality to send
32
32
  commit mails.
33
33
 
34
34
  Edit "post-receive" shell script file to execute it from there,
35
- which is located under "hooks" directory in a git repository.
35
+ which is located under "hooks" directory in a Git repository.
36
36
 
37
37
  Example:
38
38
 
39
39
  ~~~
40
- git-commit-mailer \
41
- --from-domain=example.com \
42
- --error-to=onodera@example.com \
43
- commit@example.com
40
+ git-commit-mailer \
41
+ --from-domain=example.com \
42
+ --error-to=onodera@example.com \
43
+ commit@example.com
44
44
  ~~~
45
45
 
46
- For more detailed usage and options, execute commit-email.rb
46
+ For more detailed usage and options, execute git-commit-mailer
47
47
  with `--help` option.
File without changes
data/doc/text/news.md ADDED
@@ -0,0 +1,18 @@
1
+ # News
2
+
3
+ ## 1.0.1 - 2015-06-09 {#version-1-0-1}
4
+
5
+ GitHub support improvement release!
6
+
7
+ ### Improvements
8
+
9
+ * Supported GitHub issue link by `#NNN` form in commit message.
10
+ * Followed line number link change in commit page on GitHub.
11
+
12
+ ### Fixes
13
+
14
+ * Fixed message ID duplication problem in merge commits.
15
+
16
+ ## 1.0.0 - 2015-05-23 {#version-1-0-0}
17
+
18
+ The initial release!
@@ -46,7 +46,7 @@ class GitCommitMailer
46
46
  attr_reader :subject, :author_name, :author_email, :date, :summary
47
47
  attr_accessor :merge_status
48
48
  attr_writer :reference
49
- attr_reader :merge_revisions
49
+ attr_reader :merge_commits
50
50
  def initialize(mailer, reference, revision)
51
51
  @mailer = mailer
52
52
  @reference = reference
@@ -65,7 +65,7 @@ class GitCommitMailer
65
65
  parse_diff
66
66
 
67
67
  @merge_status = []
68
- @merge_revisions = []
68
+ @merge_commits = []
69
69
  end
70
70
 
71
71
  def first_parent
@@ -85,7 +85,11 @@ class GitCommitMailer
85
85
  end
86
86
 
87
87
  def message_id
88
- "<#{@revision}@#{self.class.host_name}>"
88
+ if merge?
89
+ "<merge.#{@parent_revisions.first}.#{@revision}@#{self.class.host_name}>"
90
+ else
91
+ "<#{@revision}@#{self.class.host_name}>"
92
+ end
89
93
  end
90
94
 
91
95
  def headers
@@ -102,8 +106,8 @@ class GitCommitMailer
102
106
 
103
107
  def related_mail_headers
104
108
  headers = []
105
- @merge_revisions.each do |merge_revision|
106
- merge_message_id = "<#{merge_revision}@#{self.class.host_name}>"
109
+ @merge_commits.each do |merge_commit|
110
+ merge_message_id = merge_commit.message_id
107
111
  headers << "References: #{merge_message_id}"
108
112
  headers << "In-Reply-To: #{merge_message_id}"
109
113
  end
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
3
  # Copyright (C) 2009 Ryo Onodera <onodera@clear-code.com>
4
- # Copyright (C) 2012-2014 Kouhei Sutou <kou@clear-code.com>
4
+ # Copyright (C) 2012-2015 Kouhei Sutou <kou@clear-code.com>
5
5
  #
6
6
  # This program is free software: you can redistribute it and/or modify
7
7
  # it under the terms of the GNU General Public License as published by
@@ -16,6 +16,8 @@
16
16
  # You should have received a copy of the GNU General Public License
17
17
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
18
 
19
+ require "digest/md5"
20
+
19
21
  class GitCommitMailer
20
22
  class HTMLMailBodyFormatter < MailBodyFormatter
21
23
  include ERB::Util
@@ -27,7 +29,7 @@ class GitCommitMailer
27
29
 
28
30
  private
29
31
  def template
30
- <<-EOT
32
+ <<-TEMPLATE
31
33
  <!DOCTYPE html>
32
34
  <html>
33
35
  <head>
@@ -51,7 +53,7 @@ class GitCommitMailer
51
53
  </dd>
52
54
  <% end %>
53
55
  <%= dt("Message") %>
54
- <%= dd(pre(h(@info.summary.strip))) %>
56
+ <%= dd(format_summary(@info.summary.strip)) %>
55
57
  <%= format_files("Added", @info.added_files) %>
56
58
  <%= format_files("Copied", @info.copied_files) %>
57
59
  <%= format_files("Removed", @info.deleted_files) %>
@@ -63,7 +65,7 @@ class GitCommitMailer
63
65
  <%= format_diffs %>
64
66
  </body>
65
67
  </html>
66
- EOT
68
+ TEMPLATE
67
69
  end
68
70
 
69
71
  def format_revision
@@ -209,6 +211,22 @@ EOT
209
211
  [from_line_column, to_line_column, content_column]
210
212
  end
211
213
 
214
+ def format_summary(summary)
215
+ case @mailer.repository_browser
216
+ when "github"
217
+ linked_summary = h(summary).gsub(/\#(\d+)/) do
218
+ %Q(<a href="#{github_issue_url($1)}">\##{$1}</a>)
219
+ end
220
+ pre(linked_summary)
221
+ else
222
+ pre(h(summary))
223
+ end
224
+ end
225
+
226
+ def github_issue_url(id)
227
+ "#{@mailer.github_base_url}/#{@mailer.github_user}/#{@mailer.github_repository}/issues/#{id}"
228
+ end
229
+
212
230
  def tag_start(name, attributes)
213
231
  start_tag = "<#{name}"
214
232
  unless attributes.empty?
@@ -431,7 +449,12 @@ EOT
431
449
 
432
450
  def span_line_number_hunk_header(file_path, direction, offset)
433
451
  content = "..."
434
- url = commit_file_line_number_url(file_path, direction, offset - 1)
452
+ if offset <= 1
453
+ offset_omitted = nil
454
+ else
455
+ offset_omitted = offset - 1
456
+ end
457
+ url = commit_file_line_number_url(file_path, direction, offset_omitted)
435
458
  if url
436
459
  content = tag("a", {"href" => url}, content)
437
460
  end
@@ -559,5 +582,37 @@ EOT
559
582
  },
560
583
  content)
561
584
  end
585
+
586
+ def commit_file_url(file)
587
+ case @mailer.repository_browser
588
+ when "github"
589
+ base_url = commit_url
590
+ return nil if base_url.nil?
591
+ file_md5 = Digest::MD5.hexdigest(file)
592
+ "#{base_url}#diff-#{file_md5}"
593
+ when "github-wiki"
594
+ commit_file_url_github_wiki(file)
595
+ else
596
+ nil
597
+ end
598
+ end
599
+
600
+ def commit_file_line_number_url(file, direction, line_number)
601
+ base_url = commit_url
602
+ return nil if base_url.nil?
603
+
604
+ case @mailer.repository_browser
605
+ when "github"
606
+ file_md5 = Digest::MD5.hexdigest(file)
607
+ url = "#{base_url}#diff-#{file_md5}"
608
+ if line_number
609
+ url << ((direction == :from) ? "L" : "R")
610
+ url << line_number.to_s
611
+ end
612
+ url
613
+ else
614
+ nil
615
+ end
616
+ end
562
617
  end
563
618
  end
@@ -49,21 +49,6 @@ class GitCommitMailer
49
49
  end
50
50
  end
51
51
 
52
- def commit_file_url(file)
53
- case @mailer.repository_browser
54
- when "github"
55
- base_url = commit_url
56
- return nil if base_url.nil?
57
- index = @info.file_index(file)
58
- return nil if index.nil?
59
- "#{base_url}#diff-#{index}"
60
- when "github-wiki"
61
- commit_file_url_github_wiki(file)
62
- else
63
- nil
64
- end
65
- end
66
-
67
52
  def commit_file_url_github_wiki(file)
68
53
  return nil if file.nil?
69
54
 
@@ -76,22 +61,5 @@ class GitCommitMailer
76
61
  revision = @info.revision
77
62
  "#{base_url}/#{user}/#{repository}/wiki/#{page_name_in_url}/#{revision}"
78
63
  end
79
-
80
- def commit_file_line_number_url(file, direction, line_number)
81
- base_url = commit_url
82
- return nil if base_url.nil?
83
-
84
- case @mailer.repository_browser
85
- when "github"
86
- index = @info.file_index(file)
87
- return nil if index.nil?
88
- url = "#{base_url}#L#{index}"
89
- url << ((direction == :from) ? "L" : "R")
90
- url << line_number.to_s
91
- url
92
- else
93
- nil
94
- end
95
- end
96
64
  end
97
65
  end
@@ -47,7 +47,7 @@ class GitCommitMailer
47
47
  end
48
48
 
49
49
  def message_id
50
- "<#{old_revision}.#{new_revision}@#{self.class.host_name}>"
50
+ "<push.#{old_revision}.#{new_revision}@#{self.class.host_name}>"
51
51
  end
52
52
 
53
53
  def headers
@@ -1,4 +1,4 @@
1
1
  class GitCommitMailer
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  URL = "https://github.com/clear-code/git-commit-mailer"
4
4
  end
@@ -1039,7 +1039,7 @@ EOF
1039
1039
  merge_message = "Merged #{merge_commit.short_revision}: #{merge_commit.subject}"
1040
1040
  if not is_traversing_first_parent and not commit_info.merge_status.index(merge_message)
1041
1041
  commit_info.merge_status << merge_message
1042
- commit_info.merge_revisions << merge_commit.revision
1042
+ commit_info.merge_commits << merge_commit
1043
1043
  end
1044
1044
 
1045
1045
  if commit_info.merge?
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.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Onodera
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-03-25 00:00:00.000000000 Z
13
+ date: 2015-06-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -81,9 +81,12 @@ files:
81
81
  - ".gitignore"
82
82
  - ".travis.yml"
83
83
  - Gemfile
84
+ - LICENSE
84
85
  - README.md
85
86
  - Rakefile
86
87
  - bin/git-commit-mailer
88
+ - doc/text/GPL-3.txt
89
+ - doc/text/news.md
87
90
  - git-commit-mailer.gemspec
88
91
  - lib/git-commit-mailer.rb
89
92
  - lib/git-commit-mailer/commit-info.rb
@@ -94,7 +97,6 @@ files:
94
97
  - lib/git-commit-mailer/push-info.rb
95
98
  - lib/git-commit-mailer/text-mail-body-formatter.rb
96
99
  - lib/git-commit-mailer/version.rb
97
- - license/GPL-3.txt
98
100
  homepage: https://github.com/clear-code/git-commit-mailer
99
101
  licenses:
100
102
  - GPL-3.0+
@@ -115,8 +117,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
117
  version: '0'
116
118
  requirements: []
117
119
  rubyforge_project:
118
- rubygems_version: 2.4.5
120
+ rubygems_version: 2.2.2
119
121
  signing_key:
120
122
  specification_version: 4
121
123
  summary: A utility to send commit mails for commits pushed to git repositories.
122
124
  test_files: []
125
+ has_rdoc: