Re: What's cooking in git.git (Nov 2012, #02; Fri, 9)
- From
Paul Fox <pgf@foxharp.boston.ma.us>
- Date
- Nov 10, 2012, 22:08 UTC
- Message-ID
- <20121110220811.DC6A42E8B68@grass.foxharp.boston.ma.us>
- In-Reply-To
- <871ug15k5c.fsf@Niukka.kon.iki.fi>
kalle olavi niemitalo wrote: > Paul Fox <pgf@foxharp.boston.ma.us> writes: > > > when i implemented the change, i wondered if some twisted emacs > > workflow would be an issue. ;-) and i almost blocked SIGQUIT as > > well -- the two programs i looked at for precedent (CVS and MH) both > > block both SIGQUIT and SIGINT when spawning an editor. > > > > but since emacs users must have dealt with CVS for a long time before > > dealing with git, how might they have done so? > > I think I usually ran CVS via vc.el, which prompts for a commit > message in Emacs before it runs cvs commit. So CVS did not need > to run $EDITOR. > > I just tried emacsclient with CVS 1.12.13-MirDebian-9, and it > behaves somewhat differently from Git with pf/editor-ignore-sigint. > When I tell Emacs to send SIGINT to the *Shell* buffer, CVS prompts: > > cvs commit: warning: editor session failed > > Log message unchanged or not specified > a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs > Action: (continue)
you're sending SIGINT to the cvs commit command, and that causes the editor to die right away? that's surprising. i can replicate your described behavior by setting $VISUAL to a script that just sleeps, and sending SIGTERM to the cvs commit process. but not by sending SIGINT.
well, i'm not sure what to say. there's a real problem when using the current code and traditional editors. i thought that the patch in pf/editor-ignore-sigint reflected standard practice, and indeed it accomplishes exactly the right thing with those editors. you've shown a particular work flow involving emacsclient that won't work anymore with the change made, though there are workarounds. perhaps there's something the other editors themselves should be doing differently, but i don't know what that might be.
paul
> > and then I can choose to abort. > > With strace, it looks like CVS sets SIG_IGN as the handler of > SIGINT and SIGQUIT only in the parent process after forking, not > in the child process that executes the editor. > > CVS also temporarily blocks signals by calling sigprocmask, but > it undoes that before it forks or waits for the child process.
=--------------------- paul fox, pgf@foxharp.boston.ma.us (arlington, ma, where it's 45.5 degrees)