From fb3707762de577074c73d40575fe759095ef83e6 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Thu, 12 Oct 2023 23:14:00 -0400 Subject: 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 , Simon Tournier Change-Id: I20400f87469ffb761ffc82dd32e34cd06f619043 --- etc/teams.scm.in | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'etc') diff --git a/etc/teams.scm.in b/etc/teams.scm.in index 55242caad1..703d76fe8d 100644 --- a/etc/teams.scm.in +++ b/etc/teams.scm.in @@ -770,13 +770,16 @@ and REV-END, two git revision strings." 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." -- cgit v1.2.3