Merge branch 'js/am-call-theirs-theirs-in-fallback-3way'
authorJunio C Hamano <gitster@pobox.com>
Tue, 19 Jul 2016 20:22:23 +0000 (13:22 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 19 Jul 2016 20:22:23 +0000 (13:22 -0700)
One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".

* js/am-call-theirs-theirs-in-fallback-3way:
am: counteract gender bias

1  2 
builtin/am.c
diff --combined builtin/am.c
index 3ac24482449bd6e048db85a5c04fdef3e00ab95b,1411e3a3b426ae5e7a55afd48d8d21488682dc7a..b77bf11acecd7cd80171c78378154c712415af6f
@@@ -70,8 -70,7 +70,8 @@@ enum patch_format 
        PATCH_FORMAT_MBOX,
        PATCH_FORMAT_STGIT,
        PATCH_FORMAT_STGIT_SERIES,
 -      PATCH_FORMAT_HG
 +      PATCH_FORMAT_HG,
 +      PATCH_FORMAT_MBOXRD
  };
  
  enum keep_type {
@@@ -184,22 -183,22 +184,22 @@@ static inline const char *am_path(cons
  /**
   * For convenience to call write_file()
   */
 -static int write_state_text(const struct am_state *state,
 -                          const char *name, const char *string)
 +static void write_state_text(const struct am_state *state,
 +                           const char *name, const char *string)
  {
 -      return write_file(am_path(state, name), "%s", string);
 +      write_file(am_path(state, name), "%s", string);
  }
  
 -static int write_state_count(const struct am_state *state,
 -                           const char *name, int value)
 +static void write_state_count(const struct am_state *state,
 +                            const char *name, int value)
  {
 -      return write_file(am_path(state, name), "%d", value);
 +      write_file(am_path(state, name), "%d", value);
  }
  
 -static int write_state_bool(const struct am_state *state,
 -                          const char *name, int value)
 +static void write_state_bool(const struct am_state *state,
 +                           const char *name, int value)
  {
 -      return write_state_text(state, name, value ? "t" : "f");
 +      write_state_text(state, name, value ? "t" : "f");
  }
  
  /**
@@@ -403,8 -402,13 +403,8 @@@ static int read_commit_msg(struct am_st
   */
  static void write_commit_msg(const struct am_state *state)
  {
 -      int fd;
        const char *filename = am_path(state, "final-commit");
 -
 -      fd = xopen(filename, O_WRONLY | O_CREAT, 0666);
 -      if (write_in_full(fd, state->msg, state->msg_len) < 0)
 -              die_errno(_("could not write to %s"), filename);
 -      close(fd);
 +      write_file_buf(filename, state->msg, state->msg_len);
  }
  
  /**
@@@ -708,8 -712,7 +708,8 @@@ done
   * Splits out individual email patches from `paths`, where each path is either
   * a mbox file or a Maildir. Returns 0 on success, -1 on failure.
   */
 -static int split_mail_mbox(struct am_state *state, const char **paths, int keep_cr)
 +static int split_mail_mbox(struct am_state *state, const char **paths,
 +                              int keep_cr, int mboxrd)
  {
        struct child_process cp = CHILD_PROCESS_INIT;
        struct strbuf last = STRBUF_INIT;
        argv_array_push(&cp.args, "-b");
        if (keep_cr)
                argv_array_push(&cp.args, "--keep-cr");
 +      if (mboxrd)
 +              argv_array_push(&cp.args, "--mboxrd");
        argv_array_push(&cp.args, "--");
        argv_array_pushv(&cp.args, paths);
  
@@@ -768,15 -769,15 +768,15 @@@ static int split_mail_conv(mail_conv_f
                        in = fopen(*paths, "r");
  
                if (!in)
 -                      return error(_("could not open '%s' for reading: %s"),
 -                                      *paths, strerror(errno));
 +                      return error_errno(_("could not open '%s' for reading"),
 +                                         *paths);
  
                mail = mkpath("%s/%0*d", state->dir, state->prec, i + 1);
  
                out = fopen(mail, "w");
                if (!out)
 -                      return error(_("could not open '%s' for writing: %s"),
 -                                      mail, strerror(errno));
 +                      return error_errno(_("could not open '%s' for writing"),
 +                                         mail);
  
                ret = fn(out, in, keep_cr);
  
@@@ -856,7 -857,8 +856,7 @@@ static int split_mail_stgit_series(stru
  
        fp = fopen(*paths, "r");
        if (!fp)
 -              return error(_("could not open '%s' for reading: %s"), *paths,
 -                              strerror(errno));
 +              return error_errno(_("could not open '%s' for reading"), *paths);
  
        while (!strbuf_getline_lf(&sb, fp)) {
                if (*sb.buf == '#')
@@@ -964,15 -966,13 +964,15 @@@ static int split_mail(struct am_state *
  
        switch (patch_format) {
        case PATCH_FORMAT_MBOX:
 -              return split_mail_mbox(state, paths, keep_cr);
 +              return split_mail_mbox(state, paths, keep_cr, 0);
        case PATCH_FORMAT_STGIT:
                return split_mail_conv(stgit_patch_to_mail, state, paths, keep_cr);
        case PATCH_FORMAT_STGIT_SERIES:
                return split_mail_stgit_series(state, paths, keep_cr);
        case PATCH_FORMAT_HG:
                return split_mail_conv(hg_patch_to_mail, state, paths, keep_cr);
 +      case PATCH_FORMAT_MBOXRD:
 +              return split_mail_mbox(state, paths, keep_cr, 1);
        default:
                die("BUG: invalid patch_format");
        }
@@@ -1579,14 -1579,14 +1579,14 @@@ static int build_fake_ancestor(const st
  }
  
  /**
-  * Do the three-way merge using fake ancestor, his tree constructed
+  * Do the three-way merge using fake ancestor, their tree constructed
   * from the fake ancestor and the postimage of the patch, and our
   * state.
   */
  static int run_fallback_merge_recursive(const struct am_state *state,
                                        unsigned char *orig_tree,
                                        unsigned char *our_tree,
-                                       unsigned char *his_tree)
+                                       unsigned char *their_tree)
  {
        struct child_process cp = CHILD_PROCESS_INIT;
        int status;
        cp.git_cmd = 1;
  
        argv_array_pushf(&cp.env_array, "GITHEAD_%s=%.*s",
-                        sha1_to_hex(his_tree), linelen(state->msg), state->msg);
+                        sha1_to_hex(their_tree), linelen(state->msg), state->msg);
        if (state->quiet)
                argv_array_push(&cp.env_array, "GIT_MERGE_VERBOSITY=0");
  
        argv_array_push(&cp.args, sha1_to_hex(orig_tree));
        argv_array_push(&cp.args, "--");
        argv_array_push(&cp.args, sha1_to_hex(our_tree));
-       argv_array_push(&cp.args, sha1_to_hex(his_tree));
+       argv_array_push(&cp.args, sha1_to_hex(their_tree));
  
        status = run_command(&cp) ? (-1) : 0;
        discard_cache();
   */
  static int fall_back_threeway(const struct am_state *state, const char *index_path)
  {
-       unsigned char orig_tree[GIT_SHA1_RAWSZ], his_tree[GIT_SHA1_RAWSZ],
+       unsigned char orig_tree[GIT_SHA1_RAWSZ], their_tree[GIT_SHA1_RAWSZ],
                      our_tree[GIT_SHA1_RAWSZ];
  
        if (get_sha1("HEAD", our_tree) < 0)
                return error(_("Did you hand edit your patch?\n"
                                "It does not apply to blobs recorded in its index."));
  
-       if (write_index_as_tree(his_tree, &the_index, index_path, 0, NULL))
+       if (write_index_as_tree(their_tree, &the_index, index_path, 0, NULL))
                return error("could not write tree");
  
        say(state, stdout, _("Falling back to patching base and 3-way merge..."));
  
        /*
         * This is not so wrong. Depending on which base we picked, orig_tree
-        * may be wildly different from ours, but his_tree has the same set of
+        * may be wildly different from ours, but their_tree has the same set of
         * wildly different changes in parts the patch did not touch, so
         * recursive ends up canceling them, saying that we reverted all those
         * changes.
         */
  
-       if (run_fallback_merge_recursive(state, orig_tree, our_tree, his_tree)) {
+       if (run_fallback_merge_recursive(state, orig_tree, our_tree, their_tree)) {
                rerere(state->allow_rerere_autoupdate);
                return error(_("Failed to merge in the changes."));
        }
@@@ -2202,8 -2202,6 +2202,8 @@@ static int parse_opt_patchformat(const 
                *opt_value = PATCH_FORMAT_STGIT_SERIES;
        else if (!strcmp(arg, "hg"))
                *opt_value = PATCH_FORMAT_HG;
 +      else if (!strcmp(arg, "mboxrd"))
 +              *opt_value = PATCH_FORMAT_MBOXRD;
        else
                return error(_("Invalid value for --patch-format: %s"), arg);
        return 0;