Code

revert: improve error message for cherry-pick during cherry-pick
authorJonathan Nieder <jrnieder@gmail.com>
Tue, 22 Nov 2011 11:15:47 +0000 (05:15 -0600)
committerJunio C Hamano <gitster@pobox.com>
Tue, 22 Nov 2011 21:33:49 +0000 (13:33 -0800)
In the spirit of v1.6.3.3~3^2 (refuse to merge during a merge,
2009-07-01), "git cherry-pick" refuses to start a new cherry-pick when
in the middle of an existing conflicted cherry-pick in the following
sequence:

 1. git cherry-pick HEAD..origin
 2. resolve conflicts
 3. git cherry-pick HEAD..origin (instead of "git cherry-pick
    --continue", by mistake)

Good.  However, the error message on attempting step 3 is more
convoluted than necessary:

  $ git cherry-pick HEAD..origin
  error: .git/sequencer already exists.
  error: A cherry-pick or revert is in progress.
  hint: Use --continue to continue the operation
  hint: or --quit to forget about it
  fatal: cherry-pick failed

Clarify by removing the redundant first "error:" message, simplifying
the advice, and using lower-case and no full stops to be consistent
with other commands that prefix their messages with "error:", so it
becomes

  error: a cherry-pick or revert is already in progress
  hint: try "git cherry-pick (--continue | --quit)"
  fatal: cherry-pick failed

The "fatal: cherry-pick failed" line seems unnecessary, too, but
that can be fixed some other day.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/revert.c

index 2346cafba4d9268920109744a438e6c630be1abb..1d112e4ce435ba608c1ffbf9d916e739db8a8050 100644 (file)
@@ -846,8 +846,11 @@ static int create_seq_dir(void)
 {
        const char *seq_dir = git_path(SEQ_DIR);
 
-       if (file_exists(seq_dir))
-               return error(_("%s already exists."), seq_dir);
+       if (file_exists(seq_dir)) {
+               error(_("a cherry-pick or revert is already in progress"));
+               advise(_("try \"git cherry-pick (--continue | --quit)\""));
+               return -1;
+       }
        else if (mkdir(seq_dir, 0777) < 0)
                die_errno(_("Could not create sequencer directory %s"), seq_dir);
        return 0;
@@ -991,12 +994,8 @@ static int pick_revisions(struct replay_opts *opts)
         */
 
        walk_revs_populate_todo(&todo_list, opts);
-       if (create_seq_dir() < 0) {
-               error(_("A cherry-pick or revert is in progress."));
-               advise(_("Use --continue to continue the operation"));
-               advise(_("or --quit to forget about it"));
+       if (create_seq_dir() < 0)
                return -1;
-       }
        if (get_sha1("HEAD", sha1)) {
                if (opts->action == REVERT)
                        return error(_("Can't revert as initial commit"));