On Fri, Feb 22, 2019 at 12:11:11PM -0800, Junio C Hamano wrote: > If you keep an output for an older iteration of the same topic in > the same directory around and use "git format-patch" to prepare a > newer iteration of the topic, those commits that happen to be at the > same position in the series that have not been retitled will get the > same filename---and the command opens them for writing without any > check. > > Existing "-o outdir" and "-v number" options are both good ways to > avoid such name collisions, and in general helps to give good ways > to compare the latest iteration with older iteration(s), but let's > see if "--no-clobber" option that forbids overwrting existing files > would also help people. I suspect it won't help much, because remembering to use --no-clobber is just as hard as remembering to clean up the stale patches in the first place. If we were starting from scratch, I'd suggest that --no-clobber be the default[1]. But at this point I wonder if people would be annoyed (because the clobbering behavior is convenient and works _most_ of the time, as long as you don't add, remove, reorder, or retitle patches). I suppose that implies having a config option, so at least people who want it only have to remember once. > Documentation/git-format-patch.txt | 8 +++++++- > builtin/log.c | 32 ++++++++++++++++++++++++------ > t/t4014-format-patch.sh | 16 +++++++++++++++ > 3 files changed, 49 insertions(+), 7 deletions(-) The patch itself looks well done. -Peff [1] Actually, I'd suggest that --stdout be the default, which is what I always use. But then I typically feed the result into mutt anyway. Separate files is probably nicer if you're hand-editing.