From: Andrey Borzenkov Date: Sun, 22 Jan 2006 15:21:53 GMT Subject: Re: git cherry unkillable Message-ID: <200601221821.54461.arvidjaar@mail.ru> In-Reply-To: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Sunday 22 January 2006 17:51, sean wrote: > On Sun, 22 Jan 2006 06:39:04 -0500 > > sean wrote: > > The attached patch works for me but i'm concerned about it a bit. > > Below is a better version that doesn't obscure the proper exit value in the > normal case and exits with 1 if interrupted by the user. It also ensures > that the cleanup isn't executed twice when the script is interrupted. > > However, for Bash (at least) none of this is necessary; all the traps could > just be changed to only trap 0 and the cleanup will be executed for all > cases. However, I don't know how compatible that is with other shells. > If other shells behave the same, the best fix is just to strip the 1,2,3 > and 15 from each of the existing trap lines and not bother with the patch > given below. > this patch fails on zsh; trap 0 never executed after signal (SIGINT to be sure) is caught: #!/bin/zsh trap "exit 0" 1 2 3 15 trap "echo exiting" 0 sleep 100000000 {pts/0}% /tmp/timout.zsh ^C {pts/0}% - -andrey > Sean > > > diff --git a/git-cherry.sh b/git-cherry.sh > index 1a62320..0b2ef1f 100755 > --- a/git-cherry.sh > +++ b/git-cherry.sh > @@ -49,7 +49,8 @@ ours=`git-rev-list $ours ^$limit` || exi > tmp=.cherry-tmp$$ > patch=$tmp-patch > mkdir $patch > -trap "rm -rf $tmp-*" 0 1 2 3 15 > +trap "rm -rf $tmp-*" 0 > +trap "exit 1" 1 2 3 15 > > _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' > _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" > diff --git a/git-format-patch.sh b/git-format-patch.sh > index 7e67c4e..6ba6339 100755 > --- a/git-format-patch.sh > +++ b/git-format-patch.sh > @@ -77,7 +77,8 @@ tt) > esac > > tmp=.tmp-series$$ > -trap 'rm -f $tmp-*' 0 1 2 3 15 > +trap "rm -f $tmp-*" 0 > +trap "exit 1" 1 2 3 15 > > series=$tmp-series > commsg=$tmp-commsg > diff --git a/git-ls-remote.sh b/git-ls-remote.sh > index f699268..7dc224b 100755 > --- a/git-ls-remote.sh > +++ b/git-ls-remote.sh > @@ -38,7 +38,8 @@ peek_repo="$(get_remote_url "$@")" > shift > > tmp=.ls-remote-$$ > -trap "rm -fr $tmp-*" 0 1 2 3 15 > +trap "rm -rf $tmp-*" 0 > +trap "exit 1" 1 2 3 15 > tmpdir=$tmp-d > > case "$peek_repo" in > diff --git a/git-reset.sh b/git-reset.sh > index 6c9e58a..166b635 100755 > --- a/git-reset.sh > +++ b/git-reset.sh > @@ -4,7 +4,8 @@ USAGE='[--mixed | --soft | --hard] [ . git-sh-setup > > tmp=${GIT_DIR}/reset.$$ > -trap 'rm -f $tmp-*' 0 1 2 3 15 > +trap "rm -f $tmp-*" 0 > +trap "exit 1" 1 2 3 15 > > reset_type=--mixed > case "$1" in -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFD06MSR6LMutpd94wRApgAAJ0e0AUIS83XTa4BA1rEY1XriHKZmQCgnXZd 1sElZOLAgyuxgi3EHiaMGFc= =xwjP -----END PGP SIGNATURE-----