git-commit-notifier 0.11.10 → 0.11.11

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/CHANGES.md CHANGED
@@ -2,10 +2,19 @@
2
2
 
3
3
  ## Not yet released
4
4
 
5
+ ## Version 0.11.11
6
+
7
+ * Allow per branch mailing lists.
8
+ * Support for github option for link_files setting.
9
+ * Added possibility to automatically send a mail to the committer.
10
+ * Allow short_commit_id in subject template
11
+
12
+ ## Version 0.11.10
13
+
5
14
  * Display info message if the config.yml specified is not found.
6
15
  * Strip whitespace after splitting emails for SMTP.
7
16
  * Added prefer_git_config_mailinglist config variable.
8
- * Allow to use one configuarion per all cgit projects.
17
+ * Allow to use one configuration file per all cgit projects.
9
18
  * Support for Gitalist.
10
19
 
11
20
  ## Version 0.11.9
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
@@ -6,3 +6,5 @@ gem "rcov", :group => :test, :platforms => :mri_18
6
6
  gem "erubis", "~> 2.7"
7
7
  gem "ripper", :group => :development, :platforms => :mri_18
8
8
 
9
+ gem "coveralls", :require => false, :platforms => [:mri_19, :mri_20], :group => :development
10
+
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # Git Commit Notifier
2
2
 
3
- [![Build Status](https://travis-ci.org/git-commit-notifier/git-commit-notifier.png)](https://travis-ci.org/git-commit-notifier/git-commit-notifier)
3
+ [![build status](https://secure.travis-ci.org/git-commit-notifier/git-commit-notifier.png)](https://travis-ci.org/git-commit-notifier/git-commit-notifier)
4
+ [![Code Climate](https://codeclimate.com/github/git-commit-notifier/git-commit-notifier.png)](https://codeclimate.com/github/git-commit-notifier/git-commit-notifier)
5
+ [![Coverage Status](https://coveralls.io/repos/git-commit-notifier/git-commit-notifier/badge.png?branch=master)](https://coveralls.io/r/git-commit-notifier/git-commit-notifier)
4
6
 
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)__
7
+ ## Description
6
8
 
7
9
  This gem sends email commit messages splitting commits that were pushed in one step.
8
10
  The Email is delivered as text or HTML with changes refined per word. Emails
@@ -26,6 +28,8 @@ Example email:
26
28
 
27
29
  ![Example](http://img171.imageshack.us/img171/954/gitcommitnotifieremailpq3.png "Example")
28
30
 
31
+ __by Bodo Tasche (bodo 'at' wannawork 'dot' de), Akzhan Abdulin (akzhan 'dot' abdulin 'at' gmail 'dot' com), Csoma Zoltan (info 'at' railsprogrammer 'dot' net)__
32
+
29
33
  ## Requirements
30
34
 
31
35
  * Ruby 1.8.7 or higher.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.10
1
+ 0.11.11
@@ -32,6 +32,7 @@ show_summary: true
32
32
  # branch_name - Name of the git branch
33
33
  # slash_branch_name - /branch_name (master is "" unless show_master_branch_name)
34
34
  # commit_id - The git commit id (hash)
35
+ # short_commit_id - The abbreviated git commit id (first 7 digits of the hash)
35
36
  # description - The git description tag ("git describe --always")
36
37
  # message - The commit message
37
38
  # commit_number - The commit number within the push; 1-based
@@ -55,6 +56,13 @@ show_summary: true
55
56
  # The recipient (or newsgroup for nntp) for the commit
56
57
  # It can send to multiple destinations, just separate email addresses by ",".
57
58
  mailinglist: developers@example.com,dev2@example.com,dev3@example.com,cto@example.com
59
+ # or setup mailing list per branch
60
+ # mailinglist:
61
+ # master: developers@example.com,dev2@example.com,dev3@example.com,cto@example.com
62
+ # default: otherbranches@example.com
63
+
64
+ # If set to true, the committer (author) will receive the commit mail as well.
65
+ send_mail_to_committer: false
58
66
 
59
67
  # If set to true, the notifier will check first for a git config hooks.mailinglist
60
68
  # variable and use the recipients listed there before checking for the recipient(s)
@@ -115,7 +123,7 @@ nntp_settings:
115
123
  port: 119
116
124
 
117
125
  # Decorate files and commit ids with link to a webview. Possible values: none, gitweb,
118
- # gitorious, cgit, trac, gitlabhq, gitalist or redmine
126
+ # gitorious, cgit, trac, gitlabhq, gitalist, github or redmine
119
127
  link_files: none
120
128
 
121
129
  # If link_files is set to "gitweb", you need to configure the path to your gitweb
@@ -155,6 +163,12 @@ gitalist:
155
163
  path: http://gitalist.example.com
156
164
  project: test.git
157
165
 
166
+ # If link_files is set to "github", you need to configure the project name of
167
+ # your GitHub account
168
+ github:
169
+ path: https://github.com
170
+ project: project-name
171
+
158
172
  # If link_files is set to "redmine", you need to configure the path to your redmine
159
173
  # instance
160
174
  redmine:
@@ -40,6 +40,18 @@ module GitCommitNotifier
40
40
  @logger ||= Logger.new(config)
41
41
  end
42
42
 
43
+ def email?(email)
44
+ !!(email =~ /@/)
45
+ end
46
+
47
+ def add_committer_to_recipient(recipient, committer_email)
48
+ if email?(committer_email)
49
+ "#{recipient},#{committer_email}"
50
+ else
51
+ recipient
52
+ end
53
+ end
54
+
43
55
  # Gets list of branches from {config} to include into notifications.
44
56
  # @note All branches will be notified about if returned list is nil; otherwise only specified branches will be notifified about.
45
57
  # @return [Array(String), NilClass] Array of branches to include into notifications or nil.
@@ -105,11 +117,14 @@ module GitCommitNotifier
105
117
  slash_branch_name = "" if !config["show_master_branch_name"] && slash_branch_name == '/master'
106
118
 
107
119
  # Identify email recipients
108
- if config["prefer_git_config_mailinglist"]
109
- recipient = Git.mailing_list_address || config["mailinglist"]
120
+ recipient = nil
121
+ recipient = Git.mailing_list_address if config["prefer_git_config_mailinglist"]
122
+ if config["mailinglist"].kind_of?(Hash)
123
+ recipient ||= config["mailinglist"][branch_name] || config["mailinglist"]["default"]
110
124
  else
111
- recipient = config["mailinglist"] || Git.mailing_list_address
125
+ recipient ||= config["mailinglist"]
112
126
  end
127
+ recipient ||= Git.mailing_list_address unless config["prefer_git_config_mailinglist"]
113
128
 
114
129
  # If no recipients specified, bail out gracefully. This is not an error, and might be intentional
115
130
  if recipient.nil? || recipient.length == 0
@@ -141,6 +156,7 @@ module GitCommitNotifier
141
156
  # branch_name
142
157
  # slash_branch_name
143
158
  # commit_id (hash)
159
+ # short_commit_id (first few unique digits of the hash)
144
160
  # description ('git describe' tag)
145
161
  # short_message
146
162
  # commit_number
@@ -153,6 +169,7 @@ module GitCommitNotifier
153
169
  :branch_name => branch_name,
154
170
  :slash_branch_name => slash_branch_name,
155
171
  :commit_id => nil,
172
+ :short_commit_id => lambda { |commit_info| Git.short_commit_id(commit_info[:commit]) },
156
173
  :description => lambda { |commit_info| Git.describe(commit_info[:commit]) },
157
174
  :message => nil,
158
175
  :commit_number => nil,
@@ -192,7 +209,7 @@ module GitCommitNotifier
192
209
 
193
210
  emailer = Emailer.new(config,
194
211
  :project_path => project_path,
195
- :recipient => recipient,
212
+ :recipient => config["send_mail_to_committer"] ? add_committer_to_recipient(recipient, result[:commit_info][:email]) : recipient,
196
213
  :from_address => config["from"] || result[:commit_info][:email],
197
214
  :from_alias => result[:commit_info][:author],
198
215
  :reply_to_address => config["reply_to_author"] ? result[:commit_info][:email] : config["from"] || result[:commit_info][:email],
@@ -239,7 +256,7 @@ module GitCommitNotifier
239
256
 
240
257
  emailer = Emailer.new(config,
241
258
  :project_path => project_path,
242
- :recipient => recipient,
259
+ :recipient => config["send_mail_to_committer"] ? add_committer_to_recipient(recipient, result[:commit_info][:email]) : recipient,
243
260
  :from_address => config["from"] || result[:commit_info][:email],
244
261
  :from_alias => result[:commit_info][:author],
245
262
  :reply_to_address => config["reply_to_author"] ? result[:commit_info][:email] : config["from"] || result[:commit_info][:email],
@@ -211,6 +211,8 @@ module GitCommitNotifier
211
211
  end
212
212
  elsif config["link_files"] == "gitalist" && config["gitalist"]
213
213
  "<a href='#{config['gitalist']['path']}/#{config['gitalist']['project'] || Git.repo_name}/#{@current_commit}/blob/#{file_name}'>#{file_name}</a>"
214
+ elsif config["link_files"] == "github" && config["github"]
215
+ "<a href='#{config['github']['path']}/#{config['github']['project']}/#{Git.repo_name}/blob/#{@current_commit}/#{file_name}'>#{file_name}</a>"
214
216
  elsif config["link_files"] == "redmine" && config["redmine"]
215
217
  "<a href='#{config['redmine']['path']}/projects/#{config['redmine']['project'] || Git.repo_name}/repository/revisions/#{@current_commit}/entry/#{file_name}'>#{file_name}</a>"
216
218
  else
@@ -510,6 +512,7 @@ module GitCommitNotifier
510
512
  :gitlabhq => lambda { |config, commit| "<a href='#{config['gitlabhq']['path']}/#{Git.repo_name.gsub(".", "_")}/commits/#{commit}'>#{commit}</a>" },
511
513
  :gitalist => lambda { |config, commit| "<a href='#{config['gitalist']['path']}/projects/#{config['gitalist']['project'] || Git.repo_name}/#{commit}/log'>#{commit}</a>" },
512
514
  :redmine => lambda { |config, commit| "<a href='#{config['redmine']['path']}/projects/#{config['redmine']['project'] || Git.repo_name}/repository/revisions/#{commit}'>#{commit}</a>" },
515
+ :github => lambda { |config, commit| "<a href='#{config['github']['path']}/#{config['github']['project']}/#{Git.repo_name}/commit/#{commit}'>#{commit}</a>" },
513
516
  :default => lambda { |config, commit| commit.to_s }
514
517
  }.freeze
515
518
 
@@ -107,6 +107,10 @@ class GitCommitNotifier::Git
107
107
  from_shell("git rev-parse '#{param}'").strip
108
108
  end
109
109
 
110
+ def short_commit_id(param)
111
+ from_shell("git rev-parse --short '#{param}'").strip
112
+ end
113
+
110
114
  def branch_head(treeish)
111
115
  from_shell("git rev-parse #{treeish}").strip
112
116
  end
data/spec/spec_helper.rb CHANGED
@@ -9,6 +9,9 @@ end
9
9
  if RUBY_VERSION >= '1.9'
10
10
  Encoding.default_external = "utf-8"
11
11
  Encoding.default_internal = "utf-8"
12
+
13
+ require 'coveralls'
14
+ Coveralls.wear!
12
15
  end
13
16
 
14
17
  require 'rubygems'
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.11.10
4
+ version: 0.11.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-18 00:00:00.000000000 Z
13
+ date: 2013-05-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: diff-lcs
@@ -339,7 +339,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
339
339
  version: '0'
340
340
  segments:
341
341
  - 0
342
- hash: -83889522611154396
342
+ hash: 778864539407809625
343
343
  required_rubygems_version: !ruby/object:Gem::Requirement
344
344
  none: false
345
345
  requirements: