X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=git-rebase--merge.sh;h=71429fd74373f3f804fc841b5dd60faca2baaec6;hb=dd3ce0e3fd86af4dd36c160059e1cfd501bf50d2;hp=dc599077f0e55472ae814ed4e15f5b3a1b729caf;hpb=189627cd588c2937de7b655595b8ed777f445c85;p=platform%2Fupstream%2Fgit.git diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh index dc59907..71429fd 100644 --- a/git-rebase--merge.sh +++ b/git-rebase--merge.sh @@ -1,10 +1,10 @@ -#!/bin/sh +# This shell script fragment is sourced by git-rebase to implement +# its merge-based non-interactive mode that copes well with renamed +# files. # # Copyright (c) 2010 Junio C Hamano. # -. git-sh-setup - prec=4 read_state () { @@ -27,7 +27,7 @@ continue_merge () { cmt=`cat "$state_dir/current"` if ! git diff-index --quiet --ignore-submodules HEAD -- then - if ! git commit --no-verify -C "$cmt" + if ! git commit ${gpg_sign_opt:+"$gpg_sign_opt"} --no-verify -C "$cmt" then echo "Commit failed, please do not call \"git commit\"" echo "directly, but instead do one of the following: " @@ -98,10 +98,20 @@ finish_rb_merge () { "$GIT_DIR"/hooks/post-rewrite rebase <"$state_dir"/rewritten fi fi - rm -r "$state_dir" say All done. } +# The whole contents of this file is run by dot-sourcing it from +# inside a shell function. It used to be that "return"s we see +# below were not inside any function, and expected to return +# to the function that dot-sourced us. +# +# However, FreeBSD /bin/sh misbehaves on such a construct and +# continues to run the statements that follow such a "return". +# As a work-around, we introduce an extra layer of a function +# here, and immediately call it after defining it. +git_rebase__merge () { + case "$action" in continue) read_state @@ -112,7 +122,7 @@ continue) continue_merge done finish_rb_merge - exit + return ;; skip) read_state @@ -124,7 +134,7 @@ skip) continue_merge done finish_rb_merge - exit + return ;; esac @@ -152,3 +162,7 @@ do done finish_rb_merge + +} +# ... and then we call the whole thing. +git_rebase__merge