Re: [GSoC][PATCH v7 2/6] sequencer: add advice for revert

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Rohit

On 23/06/2019 21:03, Rohit Ashiwal wrote:
In the case of merge conflicts, while performing a revert, we are
currently advised to use `git cherry-pick --<sequencer-options>`
of which --continue is incompatible for continuing the revert.

I'm not sure why this says we cannot use --continue with revert, I think it should work fine. Also below your new advice recommends `revert --continue` as an option which contradicts this part of the commit message.

Oh do you mean `cherry-pick --abort` and `cherry-pick --quit` work with a revert but `cherry-pick --continue` does not? If so that's a quirk of the implementation that should be fixed. If that's the case I'm think mentioning it just confuses the commit message. Just say the advice for revert should say revert.

I'd also squash the first patch into this one so the new variable is used when it is introduced

Best Wishes

Phillip

Introduce a separate advice message for `git revert`. Also change
the signature of `create_seq_dir` to handle which advice to display
selectively.

Signed-off-by: Rohit Ashiwal <rohit.ashiwal265@xxxxxxxxx>
---
  sequencer.c | 35 +++++++++++++++++++++++++++++------
  1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/sequencer.c b/sequencer.c
index f88a97fb10..0ef2622a69 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -2650,15 +2650,38 @@ static int walk_revs_populate_todo(struct todo_list *todo_list,
  	return 0;
  }
-static int create_seq_dir(void)
+static int create_seq_dir(struct repository *r)
  {
-	if (file_exists(git_path_seq_dir())) {
-		error(_("a cherry-pick or revert is already in progress"));
-		advise(_("try \"git cherry-pick (--continue | --quit | --abort)\""));
+	enum replay_action action;
+	const char *in_progress_error = NULL;
+	const char *in_progress_advice = NULL;
+
+	if (!sequencer_get_last_command(r, &action)) {
+		switch (action) {
+		case REPLAY_REVERT:
+			in_progress_error = _("revert is already in progress");
+			in_progress_advice =
+			_("try \"git revert (--continue | --abort | --quit)\"");
+			break;
+		case REPLAY_PICK:
+			in_progress_error = _("cherry-pick is already in progress");
+			in_progress_advice =
+			_("try \"git cherry-pick (--continue | --abort | --quit)\"");
+			break;
+		default:
+			BUG("unexpected action in create_seq_dir");
+		}
+	}
+	if (in_progress_error) {
+		error("%s", in_progress_error);
+		if (advice_sequencer_in_use)
+			advise("%s", in_progress_advice);
  		return -1;
-	} else if (mkdir(git_path_seq_dir(), 0777) < 0)
+	}
+	if (mkdir(git_path_seq_dir(), 0777) < 0)
  		return error_errno(_("could not create sequencer directory '%s'"),
  				   git_path_seq_dir());
+
  	return 0;
  }
@@ -4237,7 +4260,7 @@ int sequencer_pick_revisions(struct repository *r,
  	 */
if (walk_revs_populate_todo(&todo_list, opts) ||
-			create_seq_dir() < 0)
+			create_seq_dir(r) < 0)
  		return -1;
  	if (get_oid("HEAD", &oid) && (opts->action == REPLAY_REVERT))
  		return error(_("can't revert as initial commit"));




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux