From: Junio C Hamano Date: Thu, 9 Nov 2017 05:31:27 +0000 (+0900) Subject: Merge branch 'bw/diff-opt-impl-to-bitfields' X-Git-Tag: v2.16.0-rc0~149 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8cc633286a4803025d84b77c808a2c7ad8616f2f;p=thirdparty%2Fgit.git Merge branch 'bw/diff-opt-impl-to-bitfields' A single-word "unsigned flags" in the diff options is being split into a structure with many bitfields. * bw/diff-opt-impl-to-bitfields: diff: make struct diff_flags members lowercase diff: remove DIFF_OPT_CLR macro diff: remove DIFF_OPT_SET macro diff: remove DIFF_OPT_TST macro diff: remove touched flags diff: add flag to indicate textconv was set via cmdline diff: convert flags to be stored in bitfields add, reset: use DIFF_OPT_SET macro to set a diff flag --- 8cc633286a4803025d84b77c808a2c7ad8616f2f diff --cc builtin/merge-ours.c index beb0623d56,684411694f..c84c6e05e9 --- a/builtin/merge-ours.c +++ b/builtin/merge-ours.c @@@ -20,13 -24,11 +20,13 @@@ int cmd_merge_ours(int argc, const cha usage(builtin_merge_ours_usage); /* - * We need to exit with 2 if the index does not match our HEAD tree, - * because the current index is what we will be committing as the - * merge result. + * The contents of the current index becomes the tree we + * commit. The index must match HEAD, or this merge cannot go + * through. */ - if (cmd_diff_index(NARGS, diff_index_args, prefix)) + if (read_cache() < 0) + die_errno("read_cache failed"); - if (index_differs_from("HEAD", 0, 0)) ++ if (index_differs_from("HEAD", NULL, 0)) exit(2); exit(0); } diff --cc revision.c index 99c95c19b0,bfde5b0cd5..e2e691dd5a --- a/revision.c +++ b/revision.c @@@ -415,11 -407,10 +415,11 @@@ static void file_add_remove(struct diff const char *fullpath, unsigned dirty_submodule) { int diff = addremove == '+' ? REV_TREE_NEW : REV_TREE_OLD; + struct rev_info *revs = options->change_fn_data; tree_difference |= diff; - if (tree_difference == REV_TREE_DIFFERENT) + if (!revs->remove_empty_trees || tree_difference != REV_TREE_NEW) - DIFF_OPT_SET(options, HAS_CHANGES); + options->flags.has_changes = 1; } static void file_change(struct diff_options *options, @@@ -1412,11 -1403,10 +1412,11 @@@ void init_revisions(struct rev_info *re revs->abbrev = DEFAULT_ABBREV; revs->ignore_merges = 1; revs->simplify_history = 1; - DIFF_OPT_SET(&revs->pruning, RECURSIVE); - DIFF_OPT_SET(&revs->pruning, QUICK); + revs->pruning.flags.recursive = 1; + revs->pruning.flags.quick = 1; revs->pruning.add_remove = file_add_remove; revs->pruning.change = file_change; + revs->pruning.change_fn_data = revs; revs->sort_order = REV_SORT_IN_GRAPH_ORDER; revs->dense = 1; revs->prefix = prefix;