log: fix --max-count when used together with -S or -G
[gitweb.git] / builtin / log.c
index eaa1ee0fa71a344af747dec038c6a5907c8273a5..2b82272eac8aff30140babbcdbe29d9e84b12a5f 100644 (file)
@@ -263,7 +263,13 @@ static int cmd_log_walk(struct rev_info *rev)
         * retain that state information if replacing rev->diffopt in this loop
         */
        while ((commit = get_revision(rev)) != NULL) {
-               log_tree_commit(rev, commit);
+               if (!log_tree_commit(rev, commit) &&
+                   rev->max_count >= 0)
+                       /*
+                        * We decremented max_count in get_revision,
+                        * but we didn't actually show the commit.
+                        */
+                       rev->max_count++;
                if (!rev->reflog_info) {
                        /* we allow cycles in reflog ancestry */
                        free(commit->buffer);
@@ -329,8 +335,7 @@ static void show_tagger(char *buf, int len, struct rev_info *rev)
        struct strbuf out = STRBUF_INIT;
 
        pp_user_info("Tagger", rev->commit_format, &out, buf, rev->date_mode,
-               git_log_output_encoding ?
-               git_log_output_encoding: git_commit_encoding);
+               get_log_output_encoding());
        printf("%s", out.buf);
        strbuf_release(&out);
 }
@@ -1056,8 +1061,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
        rev.commit_format = CMIT_FMT_EMAIL;
        rev.verbose_header = 1;
        rev.diff = 1;
-       rev.combine_merges = 0;
-       rev.ignore_merges = 1;
+       rev.no_merges = 1;
        DIFF_OPT_SET(&rev.diffopt, RECURSIVE);
        rev.subject_prefix = fmt_patch_subject_prefix;
        memset(&s_r_opt, 0, sizeof(s_r_opt));
@@ -1160,6 +1164,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 
        if (!use_stdout)
                output_directory = set_outdir(prefix, output_directory);
+       else
+               setup_pager();
 
        if (output_directory) {
                if (use_stdout)
@@ -1228,10 +1234,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                        continue;
                }
 
-               /* ignore merges */
-               if (commit->parents && commit->parents->next)
-                       continue;
-
                if (ignore_if_in_upstream &&
                                has_commit_patch_id(commit, &ids))
                        continue;
@@ -1370,7 +1372,7 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
 
        struct option options[] = {
                OPT__ABBREV(&abbrev),
-               OPT__VERBOSE(&verbose),
+               OPT__VERBOSE(&verbose, "be verbose"),
                OPT_END()
        };