@@ -17,24 +17,25 @@ class ForwardMerge
17
17
end
18
18
end
19
19
20
- def find_forward_merge ( message_file )
20
+ def find_forward_merges ( message_file )
21
21
$log. debug "Searching for for forward merge"
22
22
rev = `git rev-parse -q --verify MERGE_HEAD` . strip
23
23
$log. debug "Found #{ rev } from git rev-parse"
24
24
return nil unless rev
25
25
message = File . read ( message_file )
26
+ forward_merges = [ ]
26
27
message . each_line do |line |
27
28
$log. debug "Checking #{ line } for message"
28
29
match = /^(?:Fixes|Closes) gh-(\d +) in (\d \. \d \. [\d x](?:[\. \- ](?:M|RC)\d )?)$/ . match ( line )
29
30
if match then
30
31
issue = match [ 1 ]
31
32
milestone = match [ 2 ]
32
33
$log. debug "Matched reference to issue #{ issue } in milestone #{ milestone } "
33
- return ForwardMerge . new ( issue , milestone , message , line )
34
+ forward_merges << ForwardMerge . new ( issue , milestone , message , line )
34
35
end
35
36
end
36
- $log. debug "No match in merge message"
37
- return nil
37
+ $log. debug "No match in merge message" unless forward_merges
38
+ return forward_merges
38
39
end
39
40
40
41
def get_issue ( username , password , repository , number )
108
109
$log. debug "Running forward-merge hook script"
109
110
message_file = ARGV [ 0 ]
110
111
111
- forward_merge = find_forward_merge ( message_file )
112
- exit 0 unless forward_merge
112
+ forward_merges = find_forward_merges ( message_file )
113
+ exit 0 unless forward_merges
113
114
114
115
$log. debug "Loading config from ~/.spring-boot/forward_merge.yml"
115
116
config = YAML . load_file ( File . join ( Dir . home , '.spring-boot' , 'forward-merge.yml' ) )
@@ -118,15 +119,17 @@ password = config['github']['credentials']['password']
118
119
dry_run = config [ 'dry_run' ]
119
120
repository = 'spring-projects/spring-boot'
120
121
121
- existing_issue = get_issue ( username , password , repository , forward_merge . issue )
122
- title = existing_issue [ 'title' ]
123
- labels = existing_issue [ 'labels' ] . map { |label | label [ 'name' ] }
124
- labels << "status: forward-port"
125
- $log. debug "Processing issue '#{ title } '"
122
+ forward_merges . each do |forward_merge |
123
+ existing_issue = get_issue ( username , password , repository , forward_merge . issue )
124
+ title = existing_issue [ 'title' ]
125
+ labels = existing_issue [ 'labels' ] . map { |label | label [ 'name' ] }
126
+ labels << "status: forward-port"
127
+ $log. debug "Processing issue '#{ title } '"
126
128
127
- milestone = find_milestone ( username , password , repository , forward_merge . milestone )
128
- new_issue_number = create_issue ( username , password , repository , forward_merge . issue , title , labels , milestone , forward_merge . milestone , dry_run )
129
+ milestone = find_milestone ( username , password , repository , forward_merge . milestone )
130
+ new_issue_number = create_issue ( username , password , repository , forward_merge . issue , title , labels , milestone , forward_merge . milestone , dry_run )
129
131
130
- puts "Created gh-#{ new_issue_number } for forward port of gh-#{ forward_merge . issue } into #{ forward_merge . milestone } "
131
- rewritten_message = forward_merge . message . sub ( forward_merge . line , "Closes gh-#{ new_issue_number } \n " )
132
- File . write ( message_file , rewritten_message )
132
+ puts "Created gh-#{ new_issue_number } for forward port of gh-#{ forward_merge . issue } into #{ forward_merge . milestone } "
133
+ rewritten_message = forward_merge . message . sub ( forward_merge . line , "Closes gh-#{ new_issue_number } \n " )
134
+ File . write ( message_file , rewritten_message )
135
+ end
0 commit comments