-
Notifications
You must be signed in to change notification settings - Fork 69
Expand file tree
/
Copy pathcommit_hook.rb
More file actions
34 lines (28 loc) · 1 KB
/
commit_hook.rb
File metadata and controls
34 lines (28 loc) · 1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require 'rubygems'
require 'cgi'
require 'net/smtp'
require 'sha1'
require 'diff_to_html'
require 'emailer'
require 'git'
class CommitHook
def self.run(rev1, rev2, ref_name)
project_path = Dir.getwd
recipient = Git.mailing_list_address
prefix = Git.repo_name
branch_name = (ref_name =~ /master$/i) ? "" : "/#{ref_name.split("/").last}"
diff2html = DiffToHtml.new
diff2html.diff_between_revisions rev1, rev2, prefix, ref_name
diff2html.result.reverse.each_with_index do |result, i|
nr = number(diff2html.result.size, i)
emailer = Emailer.new project_path, recipient, result[:commit_info][:email], result[:commit_info][:author],
"[#{prefix}#{branch_name}]#{nr} #{result[:commit_info][:message]}", result[:text_content], result[:html_content], rev1, rev2, ref_name
emailer.send
end
end
def self.number(total_entries, i)
return '' if total_entries <= 1
digits = total_entries < 10 ? 1 : 3
'[' + sprintf("%0#{digits}d", i) + ']'
end
end