>-----Original Message----- >From: Junio C Hamano [mailto:gitster@xxxxxxxxx] >Sent: Friday, November 6, 2020 5:17 AM >To: Jeff King <peff@xxxxxxxx> >Cc: hukeping <hukeping@xxxxxxxxxx>; git@xxxxxxxxxxxxxxx; Zhengjunling (JRing, >Task Force) <zhengjunling@xxxxxxxxxx>; zhuangbiaowei ><zhuangbiaowei@xxxxxxxxxx>; git@xxxxxxxxxxxxxxx; rafa.almas@xxxxxxxxx; >l.s.r@xxxxxx >Subject: Re: [PATCH] Lengthening FORMAT_PATCH_NAME_MAX to 80 > >Jeff King <peff@xxxxxxxx> writes: > >>> Considered the prefix patch number "0001-" would take 5 characters, >>> increase the FORMAT_PATCH_NAME_MAX to 80. >> >> As the code is written now, the length also includes the ".patch" >> suffix, as well as an extra byte (maybe for a NUL? Once upon a time I >> imagine we used static buffers, but these days it's all in a strbuf). >> >> A simple test with: >> >> git init >> for i in $(seq 8); do printf 1234567890; done | >> git commit --allow-empty -F - >> git format-patch -1 >> >> shows us generating: >> >> 0001-1234567890123456789012345678901234567890123456789012.patch >> >> So that's only 52 characters, from our constant of 64. Bumping to 80 >> gives us 66, which is reasonable though probably still involves >> occasional truncation. But maybe keeping the total length to 80 (79, >> really, because of the extra byte) may be worth doing. >> >> Which is all a long-winded way of saying that your patch seems >> reasonable to me. > >A devil's advocate thinks that we should shorten it (and rename it to format- >patch-subject-prefix-length or something) instead. That way, "ls" output can >show more than one files on a single line even on a 80-column terminal. The >leading digits already guarantee the uniqueness anyway. > >I do not mind getting rid of the "FORMAT_PATCH_NAME_MAX" constant and >replacing it with a variable that defaults to 64 and can be tweaked by a command >line option and/or a configuration variable. >It does not feel it is worth the effort to replace one hardcoded constant with >another hardcoded constant. > >> Looking at the code which uses the constant, I suspect it could also >> be made simpler: >> >> - the PATH_MAX check in open_next_file() seems pointless. Once upon a >> time it mattered for fitting into a PATH_MAX buffer, but these days >> we use a dynamic buffer anyway. We are probably better off to just >> feed the result to the filesystem and see if it complains (since >> either way we are aborting; I'd feel differently if we adjusted our >> truncation size) >> >> - the logic in fmt_output_subject() could probably be simpler if the >> constant was "here's how long the subject should be", not "here's >> how long the whole thing must be". >> >> But those are both orthogonal to your patch and can be done separately. > >Yes, these clean-ups seem worth doing. Agreed, and I'd like to do it with two separated commits: - commit-1, cleanup the open_next_file() by drop the if (filename.len>=..) statements. - commit-2, replace FORMAT_PATCH_NAME_MAX in fmt_output_subject() with a constant in there and make it to 80(or other value?), and drop FORMAT_PATCH_NAME_MAX from log-tree.h. Is this works for you? Thanks.