(require 'debbugs) (defvar backporting-fixed-bug-list (debbugs-get-bugs :status "done" :tag "fixed" :archive "both")) (defvar backporting-fixed-bug-status-list (apply #'debbugs-get-status backporting-fixed-bug-list)) (defun backporting-fixed-25.2-bug-list () (cl-loop for bug in backporting-fixed-bug-status-list if (and (member "25.2" (cdr (assq 'fixed_versions bug))) (not (equal "wishlist" (cdr (assq 'severity bug))))) collect (cdr (assq 'id bug)))) (mapconcat #'number-to-string (backporting-fixed-25.2-bug-list) "\\|") ;;; Actually I think this misses a call to tac, because it seemed that ;;; the commits were picked in reverse order (I did a rebase to put ;;; the in right order afterwards). ;; git log --format='%H' --grep='16294\|16345\|16390\|16406\|16483\|16513\|16904\|17039\|17582\|17707\|17716\|17738\|17989\|17999\|18024\|18028\|18089\|18092\|18110\|18202\|18211\|18279\|18527\|18634\|18809\|18829\|19114\|19152\|19209\|19213\|19214\|19215\|19255\|19368\|19497\|19587\|19638\|19722\|19754\|19801\|19851\|20038\|20158\|20181\|20304\|20460\|20520\|20654\|20702\|20724\|21002\|21024\|21091\|21171\|21225\|21231\|21252\|21269\|21552\|21576\|21577\|21601\|21706\|21851\|21852\|21881\|21936\|21962\|22117\|22140\|22170\|22325\|22530\|22531\|22576\|22583\|22586\|22592\|22594\|22596\|22648\|22664\|22724\|22764\|22824\|22827\|22837\|22841\|22928\|22964\|23020\|23071\|23116\|23167\|23262\|23290\|23374\|23390\|23401\|23411\|23459\|23949\|23955\|24133\|24166\|24257\|24308\|24315\|10540\|10723\|10942\|11400\|12378\|12939\|13187\|13269\|13571\|13745\|14256\|14554\|14577\|14687\|14854\|14919\|15021\|15047\|15171\|15909\|3137\|3393\|4589\|5001\|5262\|5314\|5479\|5650\|5727\|7522\|7751\|8634\|8693\|8925\|9342\|9730' gnu/emacs-25..gnu/master | git cherry-pick -x --allow-empty --stdin