@@ -123,11 +123,32 @@ def update_branch(repo_dir, remote, branch):
123123 stderr = subprocess .DEVNULL
124124 )
125125
126+
127+ def _merge_commits_to_prs (log : str ):
128+ """Extracts PR numbers from merge commits in a git log.
129+
130+ Args:
131+ log: git log
132+
133+ Returns:
134+ list of PR numbers
135+
136+ >>> log = 'Merge #19495\\ n'
137+ >>> log += 'drivers/lsm303agr: Rename deprecated unit G to GForce\\ n'
138+ >>> log += 'Merge #19499 #19500\\ n'
139+ >>> log += 'sam0/usbdev: partial revert of #17086\\ n'
140+ >>> prs = _merge_commits_to_prs(log)
141+ >>> assert prs == [19495, 19499, 19500]
142+ """
143+ merge_lines = [line for line in log .splitlines () if line .strip ().startswith ('Merge #' )]
144+ return [int (line ) for line in re .findall (r"#([0-9]+)" , '\n ' .join (merge_lines ))]
145+
146+
126147def get_merged_prs_with_git (repo_dir , since ):
127148 log = subprocess .run (git (repo_dir ) + ["log" , "--merges" , "%s..HEAD" % since ],
128149 capture_output = True , text = True ).stdout
129- merge_lines = [ line for line in log . splitlines () if line . strip (). startswith ( 'Merge #' )]
130- return [ int ( line ) for line in re . findall ( r"#([0-9]+)" , ' \n ' . join ( merge_lines ))]
150+ return _merge_commits_to_prs ( log )
151+
131152
132153def get_tags (repo_dir , remote ):
133154 subprocess .run (git (repo_dir ) + ["fetch" , "--tags" , remote ])
0 commit comments