Bitfield addresses cannot be passed around in a pointer. This makes it hard to use parse-options to set/unset them. Turn this struct to normal integers. This of course increases the size of this struct multiple times, but since we only have a handful of rev_info variables around, memory consumption is not at all a concern. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- revision.h | 164 ++++++++++++++++++++++++++--------------------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/revision.h b/revision.h index 4134dc6029..01e4c42274 100644 --- a/revision.h +++ b/revision.h @@ -107,95 +107,95 @@ struct rev_info { unsigned int early_output; - unsigned int ignore_missing:1, - ignore_missing_links:1; + unsigned int ignore_missing; + unsigned int ignore_missing_links; /* Traversal flags */ - unsigned int dense:1, - prune:1, - no_walk:2, - remove_empty_trees:1, - simplify_history:1, - topo_order:1, - simplify_merges:1, - simplify_by_decoration:1, - single_worktree:1, - tag_objects:1, - tree_objects:1, - blob_objects:1, - verify_objects:1, - edge_hint:1, - edge_hint_aggressive:1, - limited:1, - unpacked:1, - boundary:2, - count:1, - left_right:1, - left_only:1, - right_only:1, - rewrite_parents:1, - print_parents:1, - show_decorations:1, - reverse:1, - reverse_output_stage:1, - cherry_pick:1, - cherry_mark:1, - bisect:1, - ancestry_path:1, - first_parent_only:1, - line_level_traverse:1, - tree_blobs_in_commit_order:1, - - /* - * Blobs are shown without regard for their existence. - * But not so for trees: unless exclude_promisor_objects - * is set and the tree in question is a promisor object; - * OR ignore_missing_links is set, the revision walker - * dies with a "bad tree object HASH" message when - * encountering a missing tree. For callers that can - * handle missing trees and want them to be filterable - * and showable, set this to true. The revision walker - * will filter and show such a missing tree as usual, - * but will not attempt to recurse into this tree - * object. - */ - do_not_die_on_missing_tree:1, - - /* for internal use only */ - exclude_promisor_objects:1; + unsigned int dense; + unsigned int prune; + unsigned int no_walk; + unsigned int remove_empty_trees; + unsigned int simplify_history; + unsigned int topo_order; + unsigned int simplify_merges; + unsigned int simplify_by_decoration; + unsigned int single_worktree; + unsigned int tag_objects; + unsigned int tree_objects; + unsigned int blob_objects; + unsigned int verify_objects; + unsigned int edge_hint; + unsigned int edge_hint_aggressive; + unsigned int limited; + unsigned int unpacked; + unsigned int boundary; + unsigned int count; + unsigned int left_right; + unsigned int left_only; + unsigned int right_only; + unsigned int rewrite_parents; + unsigned int print_parents; + unsigned int show_decorations; + unsigned int reverse; + unsigned int reverse_output_stage; + unsigned int cherry_pick; + unsigned int cherry_mark; + unsigned int bisect; + unsigned int ancestry_path; + unsigned int first_parent_only; + unsigned int line_level_traverse; + unsigned int tree_blobs_in_commit_order; + + /* + * Blobs are shown without regard for their existence. + * But not so for trees: unless exclude_promisor_objects + * is set and the tree in question is a promisor object; + * OR ignore_missing_links is set, the revision walker + * dies with a "bad tree object HASH" message when + * encountering a missing tree. For callers that can + * handle missing trees and want them to be filterable + * and showable, set this to true. The revision walker + * will filter and show such a missing tree as usual, + * but will not attempt to recurse into this tree + * object. + */ + unsigned int do_not_die_on_missing_tree; + + /* for internal use only */ + unsigned int exclude_promisor_objects; /* Diff flags */ - unsigned int diff:1, - full_diff:1, - show_root_diff:1, - no_commit_id:1, - verbose_header:1, - ignore_merges:1, - combine_merges:1, - combined_all_paths:1, - dense_combined_merges:1, - always_show_header:1; + unsigned int diff; + unsigned int full_diff; + unsigned int show_root_diff; + unsigned int no_commit_id; + unsigned int verbose_header; + unsigned int ignore_merges; + unsigned int combine_merges; + unsigned int combined_all_paths; + unsigned int dense_combined_merges; + unsigned int always_show_header; /* Format info */ - unsigned int shown_one:1, - shown_dashes:1, - show_merge:1, - show_notes:1, - show_notes_given:1, - show_signature:1, - pretty_given:1, - abbrev_commit:1, - abbrev_commit_given:1, - zero_commit:1, - use_terminator:1, - missing_newline:1, - date_mode_explicit:1, - preserve_subject:1; - unsigned int disable_stdin:1; + unsigned int shown_one; + unsigned int shown_dashes; + unsigned int show_merge; + unsigned int show_notes; + unsigned int show_notes_given; + unsigned int show_signature; + unsigned int pretty_given; + unsigned int abbrev_commit; + unsigned int abbrev_commit_given; + unsigned int zero_commit; + unsigned int use_terminator; + unsigned int missing_newline; + unsigned int date_mode_explicit; + unsigned int preserve_subject; + unsigned int disable_stdin; /* --show-linear-break */ - unsigned int track_linear:1, - track_first_time:1, - linear:1; + unsigned int track_linear; + unsigned int track_first_time; + unsigned int linear; struct date_mode date_mode; int expand_tabs_in_log; /* unset if negative */ -- 2.21.0.1141.gd54ac2cb17