Add new "git replace" command
[gitweb.git] / builtin-for-each-ref.c
index c8114c8afdb5e5d8a5f0adac2302aa97c384d232..784733b25d21f292c6ac895ba34d0a7b88b3073f 100644 (file)
@@ -339,8 +339,11 @@ static const char *copy_name(const char *buf)
 static const char *copy_email(const char *buf)
 {
        const char *email = strchr(buf, '<');
-       const char *eoemail = strchr(email, '>');
-       if (!email || !eoemail)
+       const char *eoemail;
+       if (!email)
+               return "";
+       eoemail = strchr(email, '>');
+       if (!eoemail)
                return "";
        return xmemdupz(email, eoemail + 1 - email);
 }
@@ -601,7 +604,8 @@ static void populate_value(struct refinfo *ref)
                if (formatp) {
                        formatp++;
                        if (!strcmp(formatp, "short"))
-                               refname = shorten_unambiguous_ref(refname);
+                               refname = shorten_unambiguous_ref(refname,
+                                                     warn_ambiguous_refs);
                        else
                                die("unknown %.*s format %s",
                                    (int)(formatp - name), name, formatp);
@@ -901,7 +905,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
                OPT_END(),
        };
 
-       parse_options(argc, argv, opts, for_each_ref_usage, 0);
+       parse_options(argc, argv, prefix, opts, for_each_ref_usage, 0);
        if (maxcount < 0) {
                error("invalid --count argument: `%d'", maxcount);
                usage_with_options(for_each_ref_usage, opts);
@@ -917,6 +921,9 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
                sort = default_sort();
        sort_atom_limit = used_atom_cnt;
 
+       /* for warn_ambiguous_refs */
+       git_config(git_default_config, NULL);
+
        memset(&cbdata, 0, sizeof(cbdata));
        cbdata.grab_pattern = argv;
        for_each_ref(grab_single_ref, &cbdata);