On Thu, 2017-07-13 at 12:23 -0700, Junio C Hamano wrote: > All good points; if it bothers you that "commit" and "merge" define > "emptyness" of the buffer differently too much, I think you could > persuade me to unify them to "the buffer _must_ contain no bytes", > i.e. not special-casing sign-off lines only "commit". > Intereseting, let me give it a try. To persuade you with this, I have to convince you that the current behaviour (special-casing of sign-off lines) is defective and/or biased. It really is for quite a few reasons, * Though it's not apparent, it indirectly seems to be hindering (to some extent) the idea of including the sign-off (or) other trailers which *can't be modified* by the user. IOW, the current behaviour seems make the contributors/users falsely believe (at least to some extent) that git *does* have trailers for commit messages and thus preventing them from coming up with ideas that could make "untouchable trailers" a reality. Thus, consider "the buffer _must_ contain no bytes" hoping this would initiate a "Butterfly effect" :) * Looking from an implementation perspective, it's biased in that it checks only for sign-offs. Making it work in general is difficult as there's no standard definition for the term <trailer>. That's because it varies with respect to usage, I think. Different people/projects may consider different lines to be trailer lines. A few examples are, * Bug: * Fixes: * Change-id: * Helped-by: Moreover, some people may wish to have commit messages that only have such trailers (e.g. "Fixes:"). So, it's difficult to do a generalized implementation that aborts when the message is empty or consists only of trailers. Thus, consider "the buffer _must_ contain no bytes" because it's not easy to define what a <trailer> means and special casing "sign-off" is biased. * Imagine a hypothetical version of git that aborts when the <message> is empty though a <trailer> is present. This would quite possibly instigate controversies as the "hypothetical git" reduces the "valid commit messages" and would quite possibly reject a commit message as "empty" (which is uncommunicative) though a previous version (which did not have this change) accepted a similar message. SO, bringing in the Occam's razor, let's choose the option that's the simplest and makes the fewest assumptions. Thus, I conclude that the considering a commit message consisting only of <trailer>s as empty isn't a good idea and should be dropped. -- Kaartic