@@ -17,24 +17,25 @@ class ForwardMerge
1717 end
1818end
1919
20- def find_forward_merge ( message_file )
20+ def find_forward_merges ( message_file )
2121 $log. debug "Searching for for forward merge"
2222 rev = `git rev-parse -q --verify MERGE_HEAD` . strip
2323 $log. debug "Found #{ rev } from git rev-parse"
2424 return nil unless rev
2525 message = File . read ( message_file )
26+ forward_merges = [ ]
2627 message . each_line do |line |
2728 $log. debug "Checking #{ line } for message"
2829 match = /^(?:Fixes|Closes) gh-(\d +) in (\d \. \d \. [\d x](?:[\. \- ](?:M|RC)\d )?)$/ . match ( line )
2930 if match then
3031 issue = match [ 1 ]
3132 milestone = match [ 2 ]
3233 $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 )
3435 end
3536 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
3839end
3940
4041def get_issue ( username , password , repository , number )
108109$log. debug "Running forward-merge hook script"
109110message_file = ARGV [ 0 ]
110111
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
113114
114115$log. debug "Loading config from ~/.spring-boot/forward_merge.yml"
115116config = YAML . load_file ( File . join ( Dir . home , '.spring-boot' , 'forward-merge.yml' ) )
@@ -118,15 +119,17 @@ password = config['github']['credentials']['password']
118119dry_run = config [ 'dry_run' ]
119120repository = 'spring-projects/spring-boot'
120121
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 } '"
126128
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 )
129131
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