From: Jonathan Nieder <jrnieder@gmail.com>
To: Dave Abrahams <dave@boostpro.com>
Cc: git@vger.kernel.org
Subject: Re: cherry-pick / pre-commit hook?
Date: Wed, 8 Dec 2010 16:05:14 -0600 [thread overview]
Message-ID: <20101208220514.GA8865@burratino> (raw)
In-Reply-To: <m2oc8wt0xc.wl%dave@boostpro.com>
Dave Abrahams wrote:
> You're going to love this: I had sent a pull request upstream and the
> maintainer of the project rejected my changes because I didn't follow
> some formatting convention he didn't tell me about ;-). So I set up a
> commit hook that would prevent me from making the same mistake again,
> and cherry-picked the changes one-by-one.
Funny. Maybe "cherry-pick --no-commit" followed by ordinary commit
would be appropriate? That way, when the checks fail, you are in a
position to clean them up.
If the conventions were whitespace related, "git rebase --whitespace=fix"
might be even more useful.
Just for kicks, here is the cherry-pick --verify for picky
cherry-pickers.
-- 8< --
Subject: cherry-pick/revert: learn --verify to run pre-commit and commit-msg hooks
The main purpose of the pre-commit and commit-msg hooks is to avoid
introducing regressions in whitespace style, encoding, and so forth;
and it would make cherry-picking unnecessarily difficult, without
preventing regressions, to unconditionally apply the same standards to
existing code. For this reason, in v0.99.6~51 (2005-08-29), git
learned to skip the usual hooks when cherry-picking or reverting an
existing commit.
But sometimes the checks are wanted anyway. For example, with this
patch applied, you can safely fetch some new contributor's code:
$ git cherry-pick -s --verify HEAD..FETCH_HEAD
while allowing the pre-commit and commit-msg hooks to run their usual
checks so the result can error out if the patches are not clean.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Untested. Please feel free to add some documentation and tests and
submit it for real if this looks like a good idea. :)
builtin/revert.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/builtin/revert.c b/builtin/revert.c
index bb6e9e8..511b2ea 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -36,7 +36,7 @@ static const char * const cherry_pick_usage[] = {
NULL
};
-static int edit, no_replay, no_commit, mainline, signoff, allow_ff;
+static int edit, no_replay, no_commit, verify, mainline, signoff, allow_ff;
static enum { REVERT, CHERRY_PICK } action;
static struct commit *commit;
static int commit_argc;
@@ -67,6 +67,7 @@ static void parse_args(int argc, const char **argv)
OPT_INTEGER('m', "mainline", &mainline, "parent number"),
OPT_RERERE_AUTOUPDATE(&allow_rerere_auto),
OPT_STRING(0, "strategy", &strategy, "strategy", "merge strategy"),
+ OPT_BOOLEAN(0, "verify", &verify, "let hooks intervene before commiting"),
OPT_END(),
OPT_END(),
OPT_END(),
@@ -375,7 +376,8 @@ static int run_git_commit(const char *defmsg)
int i = 0;
args[i++] = "commit";
- args[i++] = "-n";
+ if (!verify)
+ args[i++] = "-n";
if (signoff)
args[i++] = "-s";
if (!edit) {
--
1.7.2.4
next prev parent reply other threads:[~2010-12-08 22:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-08 17:10 cherry-pick / pre-commit hook? Dave Abrahams
2010-12-08 17:53 ` Jonathan Nieder
2010-12-08 21:22 ` Dave Abrahams
2010-12-08 22:05 ` Jonathan Nieder [this message]
2010-12-27 2:18 ` Dave Abrahams
2010-12-27 9:37 ` Jonathan Nieder
2010-12-27 20:58 ` Junio C Hamano
2010-12-27 21:33 ` Dave Abrahams
2010-12-28 18:16 ` Junio C Hamano
2010-12-28 22:38 ` Jakub Narebski
2010-12-29 1:00 ` Dave Abrahams
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=20101208220514.GA8865@burratino \
--to=jrnieder@gmail.com \
--cc=dave@boostpro.com \
--cc=git@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.