Skip to content

Commit 8131dbc

Browse files
committed
Merge branch '2.2.x' into 2.3.x
Closes spring-projectsgh-21709
2 parents 7179806 + ea25b51 commit 8131dbc

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

git/hooks/prepare-forward-merge

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/usr/bin/ruby
2+
require 'json'
3+
require 'net/http'
4+
require 'yaml'
5+
require 'logger'
6+
7+
$log = Logger.new(STDOUT)
8+
$log.level = Logger::DEBUG
9+
10+
11+
def get_fixed_issues()
12+
$log.debug "Searching for for forward merge"
13+
rev=`git rev-parse -q --verify MERGE_HEAD`.strip
14+
$log.debug "Found #{rev} from git rev-parse"
15+
return nil unless rev
16+
fixed = []
17+
message = `git log -1 --pretty=%B #{rev}`
18+
message.each_line do |line|
19+
$log.debug "Checking #{line} for message"
20+
fixed << line.strip if /^(?:Fixes|Closes) gh-(\d+)/.match(line)
21+
end
22+
$log.debug "Found fixed issues #{fixed}"
23+
return fixed;
24+
end
25+
26+
def rewrite_message(message_file, fixed)
27+
current_branch = `git rev-parse --abbrev-ref HEAD`
28+
rewritten_message = ""
29+
message = File.read(message_file)
30+
message.each_line do |line|
31+
match = /^Merge.*branch\ '(.*)'(?:\ into\ (.*))$/.match(line)
32+
if match
33+
from_branch = match[1]
34+
if from_branch.include? "/"
35+
from_branch = from_branch.partition("/").last
36+
end
37+
to_brach = match[2]
38+
$log.debug "Rewriting merge message"
39+
line = "Merge branch '#{from_branch}'" + (to_brach ? " into #{to_brach}\n" : "\n")
40+
end
41+
if fixed and line.start_with?("#")
42+
$log.debug "Adding fixed"
43+
rewritten_message << "\n"
44+
fixed.each do |fixes|
45+
rewritten_message << "#{fixes} in #{current_branch}\n"
46+
end
47+
fixed = nil
48+
end
49+
rewritten_message << line
50+
end
51+
return rewritten_message
52+
end
53+
54+
$log.debug "Running prepare-forward-merge hook script"
55+
56+
message_file=ARGV[0]
57+
message_type=ARGV[1]
58+
59+
if message_type != "merge"
60+
$log.debug "Not a merge commit"
61+
exit 0;
62+
end
63+
64+
$log.debug "Searching for for forward merge"
65+
fixed = get_fixed_issues()
66+
rewritten_message = rewrite_message(message_file, fixed)
67+
File.write(message_file, rewritten_message)

test

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
test

0 commit comments

Comments
 (0)