On Fri, Sep 11, 2026 at 01:10:44PM -0400, Jeff King wrote: > On Fri, Sep 11, 2026 at 04:43:08PM +0200, Michal Koutný wrote: > > > > In the worst case we can just call register_tempfile() on each path, but > > > I think this code could be taught to use the actual creation. Something > > > like the patch below (only lightly tested). > > > > I've tested it and it works (cleans up both after SIGINT and regular > > termination). > > Thanks for testing. I considered putting something in the test suite, > but it gets ugly (we'd have the external driver pause, signal a fifo, > then kill git-merge and it with SIGINT). I guess an alternative would be > setting GIT_ALLOC_LIMIT to something low, and then generating a > too-large output, which would cause xmalloc() to fail, which I believe > would also fail. But then we're not really testing the signal handling. > Hmm. I wonder if leaving the files could actually be a _feature_. If you > completed the merge with the external tool but we barfed reading it back > in, would it be useful to leave the file in place? It's possible, I > suppose, but I think it is more likely to be a nuisance (and we already > delete it for things like read() errors, just not anything that would > cause us to die()). From the user perspective, this is unnecessary. (Potentially useful for debugging the merge tool.) For the former, the whole merge can retried (after restoring state), the latter is quite rare and can be worked around easily when the merge tool is under development. 0.02€, Michal