From: Junio C Hamano <gitster@pobox.com>
To: Josh Triplett <josh@joshtriplett.org>
Cc: git@vger.kernel.org, Dan Carpenter <dan.carpenter@oracle.com>,
Greg KH <greg@kroah.com>,
ksummit-2013-discuss@lists.linuxfoundation.org,
ksummit-attendees@lists.linuxfoundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line
Date: Mon, 28 Oct 2013 02:08:50 -0700 [thread overview]
Message-ID: <xmqq1u35iwyl.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <xmqqa9hui2lp.fsf@gitster.dls.corp.google.com> (Junio C. Hamano's message of "Sun, 27 Oct 2013 18:52:18 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> There are unbound number of kinds of trailers people would want to
> add, depending on their projects' needs. We should not have to add
> a specific support for a tailer like this one, before thinking
> through to see if we can add generic support for adding arbitrary
> trailers to avoid code and interface bloat.
>
> Think of the existing --signoff as a historical mistake. Such a
> generic "adding arbitrary trailers" support, when done properly,
> should be able to express what "--signoff" does, and we should be
> able to redo "--signoff" as a special case of that generic "adding
> arbitrary trailers" support, and at that point, "Fixes:" trailer the
> kernel project wants to use should fall out as a natural consequence.
Thinking aloud further, what I had in mind was along the lines of
the following.
* The most generic external interface would be spelled as
--trailer <token>[=<param>]
where <token> can be things like "signoff", "closes", "acked-by",
"change-id", "fixes", etc.; they can be taken from an unbounded
set. The historical "--signoff" can become a short-hand for
"--trailer signoff". More than one "--trailer" option can be
given on a single command line.
* The token is used to look into the configuration, e.g.,
[commitTrailer "signoff"]
style = append-norepeat
trailer = Signed-off-by
command = echo "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"'
[commitTrailer "change-id"]
style = append-only-if-missing
trailer = Change-Id
command = 'git hash-object -t commit --stdin <$GIT_PROTO_COMMIT'
[commitTrailer "fixes"]
style = overwrite
trailer = Fixes
command = 'git log -1 --oneline --format="%h (%s)" --abbrev-commit=14 $ARG'
where
- "commitTrailer.<token>.style" defines the interaction with
existing trailer of the same kind (e.g. S-o-b: accumulates by
appending, but we try not to repeat the same sign-off twice
which would show you forwarding your own message you are the
last person in the Sign-off chain; Fixes: if there is already
one will remove the old one and replaces; etc.);
- "commitTrailer.<token>.trailer" defines the trailer label at
the beginning of the trailer line;
- "commitTrailer.<token>.command" gives the command to run to
obtain the payload after the "trailer" label. A handful
obvious and useful variables are exported for the command to
use, and <param> is exported as $ARG, if present.
With the most generic syntax, with the above commitTrailer.fixes.*
configuration, I would imagine that you can say something like:
git commit --trailer fixes="v2.6.12^{/^i386: tweak frobnitz}"
to say that the first commit you find traversing the history of
v2.6.12 whose title is "i386: tweak frobnitz" was faulty, and you
are creating a commit that corrects its mistake.
Giving some default configuration to often used trailer types
(e.g. configuration for "--trailer signoff") and promoting some
commonly used ones into a separate built-in option (e.g. an option
"--signoff" that does not have to say "--trailer signoff") are
entirely separate issues, and only time can nudge us into evaluating
individual types of trailers.
next prev parent reply other threads:[~2013-10-28 9:09 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20131024122255.GI9378@mwanda>
[not found] ` <20131024122512.GB9534@mwanda>
[not found] ` <20131026181709.GB10488@kroah.com>
2013-10-27 1:34 ` [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line Josh Triplett
2013-10-27 5:42 ` Michael Haggerty
2013-10-27 6:37 ` Theodore Ts'o
2013-10-27 7:14 ` Josh Triplett
2013-10-27 8:03 ` [Ksummit-2013-discuss] " Michel Lespinasse
2013-10-27 9:23 ` Josh Triplett
2013-10-27 8:09 ` Thomas Rast
2013-10-27 9:20 ` Josh Triplett
2013-10-27 10:59 ` Johan Herland
2013-10-27 19:10 ` Christian Couder
2013-10-28 2:46 ` Johan Herland
2013-10-28 22:10 ` Thomas Rast
2013-10-29 2:02 ` Jeff King
2013-10-30 17:53 ` Johan Herland
2013-10-29 6:23 ` Christian Couder
2013-10-30 19:07 ` Johan Herland
2013-11-02 12:54 ` Christian Couder
2013-10-27 9:26 ` Stefan Beller
2013-10-27 16:30 ` Thomas Rast
2013-10-27 17:03 ` Stefan Beller
2013-10-31 23:03 ` Stefan Beller
2013-10-31 23:04 ` [PATCH] Documentation: add a script to generate a (long/short) options overview Stefan Beller
2013-10-31 23:09 ` Stefan Beller
2013-10-31 23:45 ` brian m. carlson
2013-11-01 0:09 ` Junio C Hamano
2013-10-28 9:02 ` [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line Michael Haggerty
2013-10-28 11:29 ` Johan Herland
2013-10-29 2:08 ` Jeff King
2013-10-29 8:26 ` Matthieu Moy
2013-10-30 18:12 ` Johan Herland
2013-10-31 6:28 ` Duy Nguyen
2013-10-31 17:20 ` Junio C Hamano
2013-10-31 23:52 ` Duy Nguyen
2013-11-01 0:16 ` Johan Herland
2013-10-27 8:33 ` Duy Nguyen
2013-10-27 9:13 ` Josh Triplett
2013-10-28 0:49 ` Jim Hill
2013-10-28 1:52 ` Junio C Hamano
2013-10-28 7:16 ` Josh Triplett
2013-10-28 8:27 ` Michael Haggerty
2013-10-28 8:59 ` [ksummit-attendees] " Christoph Hellwig
2013-10-28 23:09 ` Benjamin Herrenschmidt
2013-10-28 23:38 ` Russell King - ARM Linux
2013-10-28 23:41 ` Russell King - ARM Linux
2013-10-28 23:48 ` tytso
2013-10-28 9:08 ` Junio C Hamano [this message]
2013-10-29 4:45 ` Christian Couder
2013-10-29 19:54 ` Junio C Hamano
2013-10-30 17:28 ` Tony Luck
2013-10-30 18:33 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq1u35iwyl.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=dan.carpenter@oracle.com \
--cc=git@vger.kernel.org \
--cc=greg@kroah.com \
--cc=josh@joshtriplett.org \
--cc=ksummit-2013-discuss@lists.linuxfoundation.org \
--cc=ksummit-attendees@lists.linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.