From: Junio C Hamano Date: Sat, 03 Mar 2007 20:56:06 GMT Subject: Re: git pull fails to exit with non-zero status after fatal error Message-ID: <7vabyu9hcp.fsf@assigned-by-dhcp.cox.net> In-Reply-To: Johannes Schindelin writes: > 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 ;;