while read branch eh
do
case "$eh" in
- "") git merge "$branch" || break ;;
- ?*) echo >&2 "Eh? $branch $eh"; break ;;
+ "")
+ echo >&2 "* $branch"
+ git merge "$branch" || break ;;
+ pick" "*)
+ echo >&2 "* $eh"
+ git cherry-pick "$branch" || break ;;
+ *) echo >&2 "Eh? $branch $eh"; break ;;
esac
done <<EOF'
+show_merge () {
+ branch=$(expr "$msg" : "$merge_msg") &&
+ tip=$(git rev-parse --verify "refs/heads/$branch" 2>/dev/null) &&
+ merged=$(git name-rev --refs="refs/heads/$branch" "$other" 2>/dev/null) &&
+ merged=$(expr "$merged" : "$x40 \(.*\)") &&
+ test "$merged" != undefined || {
+ other=$(git log -1 --pretty='format:%s' $other) &&
+ merged="$branch :rebased? $other"
+ }
+}
+
+show_pick () {
+ merged="$(git rev-parse --verify "$commit") pick $msg"
+}
+
git log --pretty=oneline --first-parent "$1" |
{
series=
while read commit msg
do
- other=$(git rev-parse --verify "$commit^2") &&
- branch=$(expr "$msg" : "$merge_msg") &&
- tip=$(git rev-parse --verify "refs/heads/$branch" 2>/dev/null) &&
- merged=$(git name-rev --refs="refs/heads/$branch" "$other" 2>/dev/null) &&
- merged=$(expr "$merged" : "$x40 \(.*\)") &&
- test "$merged" != undefined || {
- other=$(git log -1 --pretty='format:%s' $other) &&
- merged="$branch :rebased? $other"
- }
+ if other=$(git rev-parse -q --verify "$commit^2")
+ then
+ show_merge
+ else
+ show_pick
+ fi
+
if test -z "$series"
then
series="$merged"