Browse Source

diff-merges: new function diff_merges_set_dense_combined_if_unset()

Call it where given functionality is needed instead of direct
checking/tweaking of diff merges related fields.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Sergey Organov 4 years ago committed by Junio C Hamano
parent
commit
3b6c17b5c0
  1. 5
      builtin/diff-files.c
  2. 9
      builtin/diff.c
  3. 16
      diff-merges.c
  4. 2
      diff-merges.h

5
builtin/diff-files.c

@ -7,6 +7,7 @@
#include "cache.h" #include "cache.h"
#include "config.h" #include "config.h"
#include "diff.h" #include "diff.h"
#include "diff-merges.h"
#include "commit.h" #include "commit.h"
#include "revision.h" #include "revision.h"
#include "builtin.h" #include "builtin.h"
@ -69,9 +70,9 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
* was not asked to. "diff-files -c -p" should not densify * was not asked to. "diff-files -c -p" should not densify
* (the user should ask with "diff-files --cc" explicitly). * (the user should ask with "diff-files --cc" explicitly).
*/ */
if (rev.max_count == -1 && !rev.combine_merges && if (rev.max_count == -1 &&
(rev.diffopt.output_format & DIFF_FORMAT_PATCH)) (rev.diffopt.output_format & DIFF_FORMAT_PATCH))
rev.combine_merges = rev.dense_combined_merges = 1; diff_merges_set_dense_combined_if_unset(&rev);


if (read_cache_preload(&rev.diffopt.pathspec) < 0) { if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
perror("read_cache_preload"); perror("read_cache_preload");

9
builtin/diff.c

@ -13,6 +13,7 @@
#include "blob.h" #include "blob.h"
#include "tag.h" #include "tag.h"
#include "diff.h" #include "diff.h"
#include "diff-merges.h"
#include "diffcore.h" #include "diffcore.h"
#include "revision.h" #include "revision.h"
#include "log-tree.h" #include "log-tree.h"
@ -199,8 +200,8 @@ static int builtin_diff_combined(struct rev_info *revs,
if (argc > 1) if (argc > 1)
usage(builtin_diff_usage); usage(builtin_diff_usage);


if (!revs->dense_combined_merges && !revs->combine_merges) diff_merges_set_dense_combined_if_unset(revs);
revs->dense_combined_merges = revs->combine_merges = 1;
for (i = 1; i < ents; i++) for (i = 1; i < ents; i++)
oid_array_append(&parents, &ent[i].item->oid); oid_array_append(&parents, &ent[i].item->oid);
diff_tree_combined(&ent[0].item->oid, &parents, revs); diff_tree_combined(&ent[0].item->oid, &parents, revs);
@ -248,9 +249,9 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv
* dense one, --cc can be explicitly asked for, or just rely * dense one, --cc can be explicitly asked for, or just rely
* on the default). * on the default).
*/ */
if (revs->max_count == -1 && !revs->combine_merges && if (revs->max_count == -1 &&
(revs->diffopt.output_format & DIFF_FORMAT_PATCH)) (revs->diffopt.output_format & DIFF_FORMAT_PATCH))
revs->combine_merges = revs->dense_combined_merges = 1; diff_merges_set_dense_combined_if_unset(revs);


setup_work_tree(); setup_work_tree();
if (read_cache_preload(&revs->diffopt.pathspec) < 0) { if (read_cache_preload(&revs->diffopt.pathspec) < 0) {

16
diff-merges.c

@ -10,6 +10,13 @@ static void suppress(struct rev_info *revs)
revs->dense_combined_merges = 0; revs->dense_combined_merges = 0;
} }


static void set_dense_combined(struct rev_info *revs)
{
revs->combine_merges = 1;
revs->dense_combined_merges = 1;
}


/* /*
* Public functions. They are in the order they are called. * Public functions. They are in the order they are called.
*/ */
@ -39,8 +46,7 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
revs->combine_merges = 1; revs->combine_merges = 1;
} else if (!strcmp(arg, "--cc")) { } else if (!strcmp(arg, "--cc")) {
revs->diff = 1; revs->diff = 1;
revs->dense_combined_merges = 1; set_dense_combined(revs);
revs->combine_merges = 1;
} else if (!strcmp(arg, "--no-diff-merges")) { } else if (!strcmp(arg, "--no-diff-merges")) {
suppress(revs); suppress(revs);
} else if (!strcmp(arg, "--combined-all-paths")) { } else if (!strcmp(arg, "--combined-all-paths")) {
@ -80,6 +86,12 @@ void diff_merges_default_to_dense_combined(struct rev_info *revs)
} }
} }


void diff_merges_set_dense_combined_if_unset(struct rev_info *revs)
{
if (!revs->combine_merges)
set_dense_combined(revs);
}

void diff_merges_setup_revs(struct rev_info *revs) void diff_merges_setup_revs(struct rev_info *revs)
{ {
if (revs->combine_merges && revs->ignore_merges < 0) if (revs->combine_merges && revs->ignore_merges < 0)

2
diff-merges.h

@ -19,6 +19,8 @@ void diff_merges_default_to_first_parent(struct rev_info *revs);


void diff_merges_default_to_dense_combined(struct rev_info *revs); void diff_merges_default_to_dense_combined(struct rev_info *revs);


void diff_merges_set_dense_combined_if_unset(struct rev_info *revs);

void diff_merges_setup_revs(struct rev_info *revs); void diff_merges_setup_revs(struct rev_info *revs);


#endif #endif

Loading…
Cancel
Save