From dc27452ae4adbb1df89166b6ac1dcaefd38a2e3f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 13 Feb 2009 16:56:28 -0800 Subject: [PATCH] Reintegrate: sometimes a specific cherry-pick need to be carried forward This is especially necessary when you reverted a premature merge to more stable integration branch while you do want to keep the topic cooking in more experimental integration branch. --- Reintegrate | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/Reintegrate b/Reintegrate index dfdb73ed9f..0b56201d86 100755 --- a/Reintegrate +++ b/Reintegrate @@ -10,25 +10,43 @@ echo '#!/bin/sh 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 </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" -- 2.11.4.GIT