From: Jeff King <peff@peff.net>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: Ramkumar Ramachandra <artagnon@gmail.com>,
Git List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH] commit: correct advice about aborting a cherry-pick
Date: Fri, 26 Jul 2013 19:05:27 -0400 [thread overview]
Message-ID: <20130726230527.GA12968@sigill.intra.peff.net> (raw)
In-Reply-To: <20130726224359.GA3928@sigill.intra.peff.net>
On Fri, Jul 26, 2013 at 06:43:59PM -0400, Jeff King wrote:
> I think instead we would want to leave the single-commit case alone, and
> for the multi-commit case add "...and then cherry-pick --continue". That
> message is generated from within git-commit, though; I guess it would
> need to learn about the difference between single/multi cherry-picks.
Like this?
-- >8 --
Subject: [PATCH] commit: tweak empty cherry pick advice for sequencer
When we refuse to make an empty commit, we check whether we
are in a cherry-pick in order to give better advice on how
to proceed. We instruct the user to repeat the commit with
"--allow-empty" to force the commit, or to use "git reset"
to skip it and abort the cherry-pick.
This works fine when we are cherry-picking a single commit.
When we are using the sequencer to cherry-pick multiple
items, though, using "git reset" is not good advice. It does
not skip the commit (you must run "cherry-pick --continue"
to keep going), but nor does it abort the cherry-pick (the
.sequencer directory still exists).
Let's teach commit to tell when the sequencer is in use, and
to mention "cherry-pick --continue" in that case.
Signed-off-by: Jeff King <peff@peff.net>
---
The advice in the multi case could eventually change to "cherry-pick
--skip" if and when it exists.
builtin/commit.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/builtin/commit.c b/builtin/commit.c
index e47f100..45a98d7 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -63,8 +63,14 @@ N_("The previous cherry-pick is now empty, possibly due to conflict resolution.\
"If you wish to commit it anyway, use:\n"
"\n"
" git commit --allow-empty\n"
+"\n");
+static const char empty_cherry_pick_advice_skip_single[] =
+N_("Otherwise, please use 'git reset'\n");
+static const char empty_cherry_pick_advice_skip_multi[] =
+N_("If you wish to skip this commit, use:\n"
"\n"
-"Otherwise, please use 'git reset'\n");
+" git reset && git cherry-pick --continue\n"
+"\n");
static const char *use_message_buffer;
static const char commit_editmsg[] = "COMMIT_EDITMSG";
@@ -107,6 +113,7 @@ static enum commit_whence whence;
static const char *cleanup_arg;
static enum commit_whence whence;
+static int sequencer_in_use;
static int use_editor = 1, include_status = 1;
static int show_ignored_in_status, have_option_m;
static const char *only_include_assumed;
@@ -141,8 +148,11 @@ static void determine_whence(struct wt_status *s)
{
if (file_exists(git_path("MERGE_HEAD")))
whence = FROM_MERGE;
- else if (file_exists(git_path("CHERRY_PICK_HEAD")))
+ else if (file_exists(git_path("CHERRY_PICK_HEAD"))) {
whence = FROM_CHERRY_PICK;
+ if (file_exists(git_path("sequencer")))
+ sequencer_in_use = 1;
+ }
else
whence = FROM_COMMIT;
if (s)
@@ -808,8 +818,15 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
run_status(stdout, index_file, prefix, 0, s);
if (amend)
fputs(_(empty_amend_advice), stderr);
- else if (whence == FROM_CHERRY_PICK)
+ else if (whence == FROM_CHERRY_PICK) {
fputs(_(empty_cherry_pick_advice), stderr);
+ if (!sequencer_in_use)
+ fputs(_(empty_cherry_pick_advice_skip_single),
+ stderr);
+ else
+ fputs(_(empty_cherry_pick_advice_skip_multi),
+ stderr);
+ }
return 0;
}
--
1.8.3.rc1.30.gff0fb75
next prev parent reply other threads:[~2013-07-26 23:05 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-26 18:12 [PATCH] commit: correct advice about aborting a cherry-pick Ramkumar Ramachandra
2013-07-26 19:16 ` Jeff King
2013-07-26 21:17 ` Ramkumar Ramachandra
2013-07-26 21:24 ` Jeff King
2013-07-26 21:27 ` Ramkumar Ramachandra
2013-07-26 21:37 ` Jonathan Nieder
2013-07-26 21:40 ` Jeff King
2013-07-26 22:43 ` Jeff King
2013-07-26 23:05 ` Jeff King [this message]
2013-07-26 23:08 ` Jonathan Nieder
2013-07-26 23:19 ` Jeff King
2013-07-26 23:39 ` Jeff King
2013-07-27 8:07 ` Ramkumar Ramachandra
2013-07-29 15:18 ` Junio C Hamano
2013-07-29 15:23 ` Jeff King
2013-07-29 15:48 ` Junio C Hamano
2013-07-29 15:15 ` Junio C Hamano
2013-07-27 8:19 ` Ramkumar Ramachandra
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=20130726230527.GA12968@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=artagnon@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).