Re: git pull fails to exit with non-zero status after fatal error
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 28 quoted lines
> On Sat, 3 Mar 2007, Larry Streepy wrote:
>
>> $ git pull
>> Updating b5d9263..506b347
>> tools/Pvt/Pvt.py: needs update
>> fatal: Entry 'tools/Pvt/Pvt.py' not uptodate. Cannot merge.
>> $ echo $?
>> 0
>>
>> Notice the exit status of 0.
>
> Does this fix it?
>
> diff --git a/git-merge.sh b/git-merge.sh
> index 498c938..6b23bf5 100755
> --- a/git-merge.sh
> +++ b/git-merge.sh
> @@ -295,8 +295,9 @@ f,*)
> new_head=$(git-rev-parse --verify "$1^0") &&
> git-read-tree -v -m -u --exclude-per-directory=.gitignore $head "$new_head" &&
> finish "$new_head" "Fast forward"
> + ret=$?
> dropsave
> - exit 0
> + exit $ret
> ;;
> ?,1,?*"$LF"?*,*)
> # We are not doing octopus and not fast forward. Need a
The cation "dropsave" takes is to remove the files that are not needed after a successful merge, so I think it is better to fail if the && chain that ends with finish, like this.
diff --git a/git-merge.sh b/git-merge.sh
index 498c938..4afcd95 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -294,7 +294,7 @@ f,*)
git-update-index --refresh 2>/dev/null
new_head=$(git-rev-parse --verify "$1^0") &&
git-read-tree -v -m -u --exclude-per-directory=.gitignore $head "$new_head" &&
- finish "$new_head" "Fast forward"
+ finish "$new_head" "Fast forward" || exit
dropsave
exit 0
;;