]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Reintegrate: sometimes a specific cherry-pick need to be carried forward
authorJunio C Hamano <gitster@pobox.com>
Sat, 14 Feb 2009 00:56:28 +0000 (16:56 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sat, 14 Feb 2009 00:56:28 +0000 (16:56 -0800)
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

index dfdb73ed9f72f4836f93651d7b7dada79ca84cc7..0b56201d86f6b0c9ddb9ebca2d3a1481d39c9842 100755 (executable)
@@ -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 <<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"