Philippe Mathieu-Daudé <[email protected]> writes:
> On Tue, Feb 2, 2021 at 3:23 PM Philippe Mathieu-Daudé <[email protected]> wrote: >> On 2/2/21 2:39 PM, Alex Bennée wrote: >> > From: Stefan Weil <[email protected]> >> > >> > /bin/true is missing on macOS, but simply "true" is available as a shell >> > builtin. >> > >> > Signed-off-by: Stefan Weil <[email protected]> >> >> Reviewed ... : >> https://www.mail-archive.com/[email protected]/msg777004.html >> ... before Peter: >> https://www.mail-archive.com/[email protected]/msg777010.html >> >> > Reviewed-by: Peter Maydell <[email protected]> <snip> It turns out there isn't an easy way to extract the information direct from b4 so I just scripted it into Emacs: (defun my-git-check-for-updates-with-b4 (id subject) "Fetch `id' via the b4 tool and check for new tags." (let ((tags) (add-dco (rx (: "+ " (group (regexp my-bare-dco-tag-re)))))) (with-temp-buffer (call-process "b4" nil t t "am" id "-o" "-") (goto-char 0) (when (re-search-forward subject nil t) (forward-line) (beginning-of-line) (while (string-match add-dco (thing-at-point 'line)) (push (match-string-no-properties 1 (thing-at-point 'line)) tags) (forward-line)))) tags)) (defun my-commit-update-with-b4 () "Check if the current commit has tags from it's last posting. This only works if there is a message id in the buffer to search for." (interactive) (let ((subj) (id)) (save-excursion (goto-char 0) (setq subj (substring-no-properties (thing-at-point 'line))) (if (re-search-forward my-capture-msgid-re nil t) (setq id (match-string-no-properties 1)))) (when (and subj id) (let ((tags (my-git-check-for-updates-with-b4 id subj))) (--map (save-excursion (goto-char 0) (when (not (re-search-forward it nil t)) (re-search-forward my-capture-msgid-re nil t) (beginning-of-line) (insert it ?\n))) tags))))) -- Alex Bennée
