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

Reply via email to