Merge branch 'js/rebase-i-label-shown-in-status-fix'
authorJunio C Hamano <gitster@pobox.com>
Sun, 19 May 2019 07:45:33 +0000 (16:45 +0900)
committerJunio C Hamano <gitster@pobox.com>
Sun, 19 May 2019 07:45:33 +0000 (16:45 +0900)
"git status" did not know that the "label" instruction in the
todo-list "rebase -i -r" uses should not be shown as a hex object
name.

* js/rebase-i-label-shown-in-status-fix:
status: fix display of rebase -ir's `label` command

1  2 
wt-status.c
diff --combined wt-status.c
index e065558c312eefb4c3d5f8bf91dd8358069e0faa,f9fba796fb31275076c8c52d1e06195b9858ad6a..d2a1bec226ba0dfef9e3ddd96c0b3a83ea6884bb
@@@ -17,7 -17,6 +17,7 @@@
  #include "utf8.h"
  #include "worktree.h"
  #include "lockfile.h"
 +#include "sequencer.h"
  
  static const char cut_line[] =
  "------------------------ >8 ------------------------\n";
@@@ -1215,7 -1214,9 +1215,9 @@@ static void abbrev_sha1_in_line(struct 
        int i;
  
        if (starts_with(line->buf, "exec ") ||
-           starts_with(line->buf, "x "))
+           starts_with(line->buf, "x ") ||
+           starts_with(line->buf, "label ") ||
+           starts_with(line->buf, "l "))
                return;
  
        split = strbuf_split_max(line, ' ', 3);
@@@ -1387,22 -1388,12 +1389,22 @@@ static void show_rebase_in_progress(str
  static void show_cherry_pick_in_progress(struct wt_status *s,
                                         const char *color)
  {
 -      status_printf_ln(s, color, _("You are currently cherry-picking commit %s."),
 -                      find_unique_abbrev(&s->state.cherry_pick_head_oid, DEFAULT_ABBREV));
 +      if (is_null_oid(&s->state.cherry_pick_head_oid))
 +              status_printf_ln(s, color,
 +                      _("Cherry-pick currently in progress."));
 +      else
 +              status_printf_ln(s, color,
 +                      _("You are currently cherry-picking commit %s."),
 +                      find_unique_abbrev(&s->state.cherry_pick_head_oid,
 +                                         DEFAULT_ABBREV));
 +
        if (s->hints) {
                if (has_unmerged(s))
                        status_printf_ln(s, color,
                                _("  (fix conflicts and run \"git cherry-pick --continue\")"));
 +              else if (is_null_oid(&s->state.cherry_pick_head_oid))
 +                      status_printf_ln(s, color,
 +                              _("  (run \"git cherry-pick --continue\" to continue)"));
                else
                        status_printf_ln(s, color,
                                _("  (all conflicts fixed: run \"git cherry-pick --continue\")"));
  static void show_revert_in_progress(struct wt_status *s,
                                    const char *color)
  {
 -      status_printf_ln(s, color, _("You are currently reverting commit %s."),
 -                       find_unique_abbrev(&s->state.revert_head_oid, DEFAULT_ABBREV));
 +      if (is_null_oid(&s->state.revert_head_oid))
 +              status_printf_ln(s, color,
 +                      _("Revert currently in progress."));
 +      else
 +              status_printf_ln(s, color,
 +                      _("You are currently reverting commit %s."),
 +                      find_unique_abbrev(&s->state.revert_head_oid,
 +                                         DEFAULT_ABBREV));
        if (s->hints) {
                if (has_unmerged(s))
                        status_printf_ln(s, color,
                                _("  (fix conflicts and run \"git revert --continue\")"));
 +              else if (is_null_oid(&s->state.revert_head_oid))
 +                      status_printf_ln(s, color,
 +                              _("  (run \"git revert --continue\" to continue)"));
                else
                        status_printf_ln(s, color,
                                _("  (all conflicts fixed: run \"git revert --continue\")"));
@@@ -1600,7 -1582,6 +1602,7 @@@ void wt_status_get_state(struct reposit
  {
        struct stat st;
        struct object_id oid;
 +      enum replay_action action;
  
        if (!stat(git_path_merge_head(r), &st)) {
                wt_status_check_rebase(NULL, state);
                state->revert_in_progress = 1;
                oidcpy(&state->revert_head_oid, &oid);
        }
 -
 +      if (!sequencer_get_last_command(r, &action)) {
 +              if (action == REPLAY_PICK) {
 +                      state->cherry_pick_in_progress = 1;
 +                      oidcpy(&state->cherry_pick_head_oid, &null_oid);
 +              } else {
 +                      state->revert_in_progress = 1;
 +                      oidcpy(&state->revert_head_oid, &null_oid);
 +              }
 +      }
        if (get_detached_from)
                wt_status_get_detached_from(r, state);
  }