Merge branch 'sb/wt-status-cleanup'
authorJunio C Hamano <gitster@pobox.com>
Tue, 21 Mar 2017 22:07:18 +0000 (15:07 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 Mar 2017 22:07:18 +0000 (15:07 -0700)
Code clean-up.

* sb/wt-status-cleanup:
wt-status: simplify by using for_each_string_list_item

1  2 
wt-status.c
diff --combined wt-status.c
index cc446f26ba40a6813c69b649656210bc6e3f98ae,a52d342695995d87b57a8840ae47c2a1bba92c82..308cf3779eb05b0953edd5aaeeae26f95104240f
@@@ -121,7 -121,7 +121,7 @@@ static void status_printf_more(struct w
  
  void wt_status_prepare(struct wt_status *s)
  {
 -      unsigned char sha1[20];
 +      struct object_id oid;
  
        memset(s, 0, sizeof(*s));
        memcpy(s->color_palette, default_wt_status_colors,
        s->show_untracked_files = SHOW_NORMAL_UNTRACKED_FILES;
        s->use_color = -1;
        s->relative_paths = 1;
 -      s->branch = resolve_refdup("HEAD", 0, sha1, NULL);
 +      s->branch = resolve_refdup("HEAD", 0, oid.hash, NULL);
        s->reference = "HEAD";
        s->fp = stdout;
        s->index_file = get_index_file();
@@@ -1115,16 -1115,16 +1115,16 @@@ static void abbrev_sha1_in_line(struct 
  
        split = strbuf_split_max(line, ' ', 3);
        if (split[0] && split[1]) {
 -              unsigned char sha1[20];
 +              struct object_id oid;
  
                /*
                 * strbuf_split_max left a space. Trim it and re-add
                 * it after abbreviation.
                 */
                strbuf_trim(split[1]);
 -              if (!get_sha1(split[1]->buf, sha1)) {
 +              if (!get_oid(split[1]->buf, &oid)) {
                        strbuf_reset(split[1]);
 -                      strbuf_add_unique_abbrev(split[1], sha1,
 +                      strbuf_add_unique_abbrev(split[1], oid.hash,
                                                 DEFAULT_ABBREV);
                        strbuf_addch(split[1], ' ');
                        strbuf_reset(line);
@@@ -1340,7 -1340,7 +1340,7 @@@ static void show_bisect_in_progress(str
  static char *get_branch(const struct worktree *wt, const char *path)
  {
        struct strbuf sb = STRBUF_INIT;
 -      unsigned char sha1[20];
 +      struct object_id oid;
        const char *branch_name;
  
        if (strbuf_read_file(&sb, worktree_git_path(wt, "%s", path), 0) <= 0)
                strbuf_remove(&sb, 0, branch_name - sb.buf);
        else if (starts_with(sb.buf, "refs/"))
                ;
 -      else if (!get_sha1_hex(sb.buf, sha1)) {
 +      else if (!get_oid_hex(sb.buf, &oid)) {
                strbuf_reset(&sb);
 -              strbuf_add_unique_abbrev(&sb, sha1, DEFAULT_ABBREV);
 +              strbuf_add_unique_abbrev(&sb, oid.hash, DEFAULT_ABBREV);
        } else if (!strcmp(sb.buf, "detached HEAD")) /* rebase */
                goto got_nothing;
        else                    /* bisect */
@@@ -1370,10 -1370,10 +1370,10 @@@ got_nothing
  
  struct grab_1st_switch_cbdata {
        struct strbuf buf;
 -      unsigned char nsha1[20];
 +      struct object_id noid;
  };
  
 -static int grab_1st_switch(unsigned char *osha1, unsigned char *nsha1,
 +static int grab_1st_switch(struct object_id *ooid, struct object_id *noid,
                           const char *email, unsigned long timestamp, int tz,
                           const char *message, void *cb_data)
  {
                return 0;
        target += strlen(" to ");
        strbuf_reset(&cb->buf);
 -      hashcpy(cb->nsha1, nsha1);
 +      oidcpy(&cb->noid, noid);
        end = strchrnul(target, '\n');
        strbuf_add(&cb->buf, target, end - target);
        if (!strcmp(cb->buf.buf, "HEAD")) {
                /* HEAD is relative. Resolve it to the right reflog entry. */
                strbuf_reset(&cb->buf);
 -              strbuf_add_unique_abbrev(&cb->buf, nsha1, DEFAULT_ABBREV);
 +              strbuf_add_unique_abbrev(&cb->buf, noid->hash, DEFAULT_ABBREV);
        }
        return 1;
  }
@@@ -1402,7 -1402,7 +1402,7 @@@ static void wt_status_get_detached_from
  {
        struct grab_1st_switch_cbdata cb;
        struct commit *commit;
 -      unsigned char sha1[20];
 +      struct object_id oid;
        char *ref = NULL;
  
        strbuf_init(&cb.buf, 0);
                return;
        }
  
 -      if (dwim_ref(cb.buf.buf, cb.buf.len, sha1, &ref) == 1 &&
 +      if (dwim_ref(cb.buf.buf, cb.buf.len, oid.hash, &ref) == 1 &&
            /* sha1 is a commit? match without further lookup */
 -          (!hashcmp(cb.nsha1, sha1) ||
 +          (!oidcmp(&cb.noid, &oid) ||
             /* perhaps sha1 is a tag, try to dereference to a commit */
 -           ((commit = lookup_commit_reference_gently(sha1, 1)) != NULL &&
 -            !hashcmp(cb.nsha1, commit->object.oid.hash)))) {
 +           ((commit = lookup_commit_reference_gently(oid.hash, 1)) != NULL &&
 +            !oidcmp(&cb.noid, &commit->object.oid)))) {
                const char *from = ref;
                if (!skip_prefix(from, "refs/tags/", &from))
                        skip_prefix(from, "refs/remotes/", &from);
                state->detached_from = xstrdup(from);
        } else
                state->detached_from =
 -                      xstrdup(find_unique_abbrev(cb.nsha1, DEFAULT_ABBREV));
 -      hashcpy(state->detached_sha1, cb.nsha1);
 -      state->detached_at = !get_sha1("HEAD", sha1) &&
 -                           !hashcmp(sha1, state->detached_sha1);
 +                      xstrdup(find_unique_abbrev(cb.noid.hash, DEFAULT_ABBREV));
 +      hashcpy(state->detached_sha1, cb.noid.hash);
 +      state->detached_at = !get_oid("HEAD", &oid) &&
 +                           !hashcmp(oid.hash, state->detached_sha1);
  
        free(ref);
        strbuf_release(&cb.buf);
@@@ -1476,22 -1476,22 +1476,22 @@@ void wt_status_get_state(struct wt_stat
                         int get_detached_from)
  {
        struct stat st;
 -      unsigned char sha1[20];
 +      struct object_id oid;
  
        if (!stat(git_path_merge_head(), &st)) {
                state->merge_in_progress = 1;
        } else if (wt_status_check_rebase(NULL, state)) {
                ;               /* all set */
        } else if (!stat(git_path_cherry_pick_head(), &st) &&
 -                      !get_sha1("CHERRY_PICK_HEAD", sha1)) {
 +                      !get_oid("CHERRY_PICK_HEAD", &oid)) {
                state->cherry_pick_in_progress = 1;
 -              hashcpy(state->cherry_pick_head_sha1, sha1);
 +              hashcpy(state->cherry_pick_head_sha1, oid.hash);
        }
        wt_status_check_bisect(NULL, state);
        if (!stat(git_path_revert_head(), &st) &&
 -          !get_sha1("REVERT_HEAD", sha1)) {
 +          !get_oid("REVERT_HEAD", &oid)) {
                state->revert_in_progress = 1;
 -              hashcpy(state->revert_head_sha1, sha1);
 +              hashcpy(state->revert_head_sha1, oid.hash);
        }
  
        if (get_detached_from)
@@@ -1730,14 -1730,12 +1730,14 @@@ static void wt_shortstatus_print_tracki
                return;
        branch_name = s->branch;
  
 +#define LABEL(string) (s->no_gettext ? (string) : _(string))
 +
        if (s->is_initial)
 -              color_fprintf(s->fp, header_color, _("Initial commit on "));
 +              color_fprintf(s->fp, header_color, LABEL(N_("Initial commit on ")));
  
        if (!strcmp(s->branch, "HEAD")) {
                color_fprintf(s->fp, color(WT_STATUS_NOBRANCH, s), "%s",
 -                            _("HEAD (no branch)"));
 +                            LABEL(N_("HEAD (no branch)")));
                goto conclude;
        }
  
        if (!upstream_is_gone && !num_ours && !num_theirs)
                goto conclude;
  
 -#define LABEL(string) (s->no_gettext ? (string) : _(string))
 -
        color_fprintf(s->fp, header_color, " [");
        if (upstream_is_gone) {
                color_fprintf(s->fp, header_color, LABEL(N_("gone")));
  
  static void wt_shortstatus_print(struct wt_status *s)
  {
-       int i;
+       struct string_list_item *it;
  
        if (s->show_branch)
                wt_shortstatus_print_tracking(s);
  
-       for (i = 0; i < s->change.nr; i++) {
-               struct wt_status_change_data *d;
-               struct string_list_item *it;
+       for_each_string_list_item(it, &s->change) {
+               struct wt_status_change_data *d = it->util;
  
-               it = &(s->change.items[i]);
-               d = it->util;
                if (d->stagemask)
                        wt_shortstatus_unmerged(it, s);
                else
                        wt_shortstatus_status(it, s);
        }
-       for (i = 0; i < s->untracked.nr; i++) {
-               struct string_list_item *it;
-               it = &(s->untracked.items[i]);
+       for_each_string_list_item(it, &s->untracked)
                wt_shortstatus_other(it, s, "??");
-       }
-       for (i = 0; i < s->ignored.nr; i++) {
-               struct string_list_item *it;
  
-               it = &(s->ignored.items[i]);
+       for_each_string_list_item(it, &s->ignored)
                wt_shortstatus_other(it, s, "!!");
-       }
  }
  
  static void wt_porcelain_print(struct wt_status *s)