Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753757Ab3J0TKi (ORCPT ); Sun, 27 Oct 2013 15:10:38 -0400 Received: from mail-vb0-f43.google.com ([209.85.212.43]:47471 "EHLO mail-vb0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752141Ab3J0TKh (ORCPT ); Sun, 27 Oct 2013 15:10:37 -0400 MIME-Version: 1.0 In-Reply-To: References: <20131024122255.GI9378@mwanda> <20131024122512.GB9534@mwanda> <20131026181709.GB10488@kroah.com> <20131027013402.GA7146@leaf> <526CA7D4.1070904@alum.mit.edu> <20131027071407.GA11683@leaf> <874n83m8xv.fsf@linux-k42r.v.cablecom.net> <20131027092019.GB13149@leaf> Date: Sun, 27 Oct 2013 20:10:36 +0100 Message-ID: Subject: Re: [PATCH] commit: Add -f, --fixes option to add Fixes: line From: Christian Couder To: Johan Herland Cc: Josh Triplett , Thomas Rast , Michael Haggerty , Git mailing list , Dan Carpenter , Greg KH , ksummit-2013-discuss@lists.linuxfoundation.org, ksummit-attendees@lists.linuxfoundation.org, Linux Kernel mailing list Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3693 Lines: 109 [Sorry I already sent the reply below to Johan only instead of everyone.] Hi Johan, On Sun, Oct 27, 2013 at 11:59 AM, Johan Herland wrote: > On Sun, Oct 27, 2013 at 10:20 AM, Josh Triplett wrote: >> >> ...good suggestion: >> >> ~/src/linux$ git log --grep='stable@' --oneline --since='1 year ago' | wc -l >> 2769 >> ~/src/linux$ git log --grep='stable@' --oneline --since='1 year ago' --pretty=format:%an | sort -u | wc -l >> 839 >> >> Several thousand commits per year by hundreds of unique people seems >> like enough to justify a short option. > > I think this can be solved just as well (if not better) using a > combination of a commit message template (or a prepare-commit-msg > hook) and a commit-msg hook. Your suggestion is very good, and it is not incompatible with command line options. So both could be implemented and even work together. For example if "-f ack:Peff" was passed to the command line, "git commit" could lookup in the commit message template and see if there is one RFC822-style header that starts with or contains "ack" (discarding case) and it could look in some previous commits if there is an author whose name contains "Peff" (discarding case) and if it is the case it could append the following to the bottom of the commit message: Fixes: Reported-by: Suggested-by: Improved-by: Acked-by: Jeff King Reviewed-by: Tested-by: Signed-off-by: Myself (I suppose that the sob is automatically added.) It would work also with "-f fix:security-bug" and would put something like what you suggested: Fixes: 1234beef56 (Commit message summmary) > Then, the commit-msg hook can clean up and transform this into the > final commit message: > > My commit subject > > This is the commit message body. > > Fixes: 1234beef56 (Commit message summmary) > Reported-by: Joe User > Improved-by: Joe Hacker > Tested-by: Joe Tester > Signed-off-by: Myself > > Here, the commit-msg hook removes the fields that were not filled in, > and performs additional filtering on the "Fixes" line (Adding commit > message summary). The filtering could also resolve ref names, so that > if you had refs/tags/security-bug pointing at the buggy commit, then: > > Fixes: security-bug > > would be expanded/DWIMed into: > > Fixes: 1234beef56 (Commit message summmary) > > Obviously, any other fancy processing you want to do into in the > commit-msg hook can be done as well, adding footnotes, checking that > commits are present in the ancestry, etc, etc. Yeah, the commit message hook could do some more processing if the user adds or changes stuff. > Three good reasons to go this way: > > 1. If the user forgets to supply command-line options like -s, > --fixes, etc, there is a nice reminder in the supplied form. Great! > 2. No need to add any command-line options to Git. This is not a good reason. If many users prefer a command line option, why not let them use that? > 3. The whole mechanism is controlled by the project. The kernel folks > can do whatever they want in their templates/hooks without needing > changes to the Git project. The Git project already manages sob lines. It would be a good thing if it could manage more of this stuff to help users in a generic way while taking care of user preferences. Best regards, Christian. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/