--- /dev/null
+#!/bin/sh
+
+set -x
+git clean -dfx
+git stash
+git cherry-pick --quit
+
+hashes="$(git log --date-order ^HEAD --no-merges --format=%h --reverse "$@")"
+
+for x in $hashes; do
+ if git cherry-pick -x "$x"; then
+ git log --oneline --no-walk "$x" >> PICK-GOOD
+ else
+ git cherry-pick --abort
+ git log --oneline --no-walk "$x" >> PICK-BAD
+ fi
+done
+
+git merge -s ours "$x" -m"zygo: cherry-picked up to $x (extra args $@)
+
+All commits:
+
+$(git log --oneline --date-order --reverse --no-walk $hashes)
+
+Included:
+
+$(cat PICK-GOOD)
+
+Excluded:
+
+$(cat PICK-BAD)"