etc: teams: Parse 'From' commit more leniently.

When a Change-Id is used, patman prepends a Message-Id field on the first line
of the patch, which broke the assumption that the 'From $commit' line must
appear on the first line.

* etc/teams.scm.in (git-patch->commit-id): Loop each line of the file until a
match is found.  Update doc.

Series-to: 66027@debbugs.gnu.org
Series-version: 3
Series-changes: 3
 - New commit
Series-cc: Giovanni Biscuolo <g@xelera.eu>, Simon Tournier <zimon.toutoune@gmail.com>
Change-Id: I20400f87469ffb761ffc82dd32e34cd06f619043
This commit is contained in:
Maxim Cournoyer 2023-10-12 23:14:00 -04:00
parent f44fa21c3e
commit fb3707762d
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -770,13 +770,16 @@ (define (diff-revisions rev-start rev-end)
files))
(define (git-patch->commit-id file)
"Parse the commit ID from the first line of FILE, a patch produced with git."
"Parse the commit ID from FILE, a patch produced with git."
(call-with-input-file file
(lambda (port)
(let ((m (string-match "^From ([0-9a-f]{40})" (read-line port))))
(unless m
(error "invalid patch file:" file))
(match:substring m 1)))))
(let loop ((line (read-line port)))
(when (eof-object? line)
(error "could not find 'from' commit in patch" file))
(let ((m (string-match "^From ([0-9a-f]{40})" line)))
(if m
(match:substring m 1)
(loop (read-line port))))))))
(define (git-patch->revisions file)
"Return the start and end revisions of FILE, a patch file produced with git."