Convert diff opt parser to parse_options()
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest15 of 75 patches 2 repliesIn review
15 of 75 patches are in this archive. The cover letter announces 75.
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/75 | parse-options.h: remove extern on function prototypesparse-options.h | +30 | 0 replies | |
| 2/75 | parse-options: add one-shot modeparse-options.c parse-options.h | +33 | 0 replies | |
| 3/75 | parse-options: allow keep-unknown + stop-at-non-opt combinationparse-options.c | +0 | 0 replies | |
| 4/75 | parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWNparse-options.c t/ | +4 | 0 replies | |
| 5/75 | parse-options: add OPT_BITOP()parse-options.c parse-options.h | +12 | 0 replies | |
| 6/75 | parse-options: stop abusing 'callback' for lowlevel callbacksbuiltin/ builtin/ builtin/ +3 more | +32 | 0 replies | |
| 7/75 | parse-options: avoid magic return codesbuiltin/ builtin/ parse-options-cb.c +2 more | +68 | 0 replies | |
| 8/75 | parse-options: allow ll_callback with OPTION_CALLBACKbuiltin/ builtin/ parse-options-cb.c +2 more | +51 | 0 replies | |
| 9/75 | diff.h: keep forward struct declarations sorteddiff.h | +6 | 0 replies | |
| 10/75 | diff.h: avoid bit fields in struct diff_flagsdiff.h | +33 | 1 reply | |
| 11/75 | diff.c: prepare to use parse_options() for parsingdiff.c diff.h | +29 | 0 replies | |
| 12/75 | diff.c: convert -u|-p|--patchdiff.c | +8 | 0 replies | |
| 73/75 | range-diff: use parse_options() instead of diff_opt_parse()builtin/ | +6 | 0 replies | |
| 74/75 | diff --no-index: use parse_options() instead of diff_opt_parse()builtin/ diff-no-index.c diff.h +1 more | +35 | 1 reply | |
| 75/75 | am: avoid diff_opt_parse()builtin/ diff.c diff.h | +10 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 00/75] Convert diff opt parser to parse_options()
This is a sneak peek of converting diff_opt_parse() to 'struct option'. The end game is builtin commands can just add diff options to their 'struct option[]' array, do parse_options() like usual and have diff parsing for free.
Besides simplifying the parsing code, there are also more benefits of using struct option, e.g. tab completion and "git cmd -h".
I'm not sending full series because it's looong, the middle is not that interesting, and I would need to wait for sb/diff-color-moved-config-option-fixup (and Brian's --literally too, probably) to land before sending something mergeable. But main patches are sent here for review.
This is of course just the beginning. Once revision.c parser is converted, diff_opt_parse() will be killed off, more commands can take use diff option array directly. And perhaps the diff option array will be split up into smaller ones to give callers more control what's part of the command.
Nguyễn Thái Ngọc Duy (75):
parse-options.h: remove extern on function prototypes
parse-options: add one-shot mode
parse-options: allow keep-unknown + stop-at-non-opt combination
parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: add OPT_BITOP()
parse-options: stop abusing 'callback' for lowlevel callbacks
parse-options: avoid magic return codes
parse-options: allow ll_callback with OPTION_CALLBACK diff.h: keep forward struct declarations sorted
diff.h: avoid bit fields in struct diff_flags
diff.c: prepare to use parse_options() for parsing
diff.c: convert -u|-p|--patch diff.c: convert -U|--unified diff.c: convert -W|--[no-]function-context diff.c: convert --raw diff.c: convert --patch-with-raw diff.c: convert --numstat and --shortstat diff.c: convert --dirstat and friends diff.c: convert --check diff.c: convert --summary diff.c: convert --patch-with-stat diff.c: convert --name-only diff.c: convert --name-status diff.c: convert -s|--no-patch diff.c: convert --stat* diff.c: convert --[no-]compact-summary diff.c: convert --output-* diff.c: convert -B|--break-rewrites diff.c: convert -M|--find-renames diff.c: convert -D|--irreversible-delete diff.c: convert -C|--find-copies
diff.c: convert --find-copies-harder
diff.c: convert --no-renames|--[no--rename-empty diff.c: convert --relative
diff.c: convert --[no-]minimal
diff.c: convert --ignore-some-changes
diff.c: convert --[no-]indent-heuristic
diff.c: convert --patience
diff.c: convert --histogram
diff.c: convert --diff-algorithm
diff.c: convert --anchored
diff.c: convert --binary
diff.c: convert --full-index
diff.c: convert -a|--text
diff.c: convert -R
diff.c: convert --[no-]follow
diff.c: convert --[no-]color
diff.c: convert --word-diff
diff.c: convert --word-diff-regex
diff.c: convert --color-words
diff.c: convert --exit-code
diff.c: convert --quiet
diff.c: convert --ext-diff
diff.c: convert --textconv
diff.c: convert --ignore-submodules
diff.c: convert --submodule
diff.c: convert --ws-error-highlight
diff.c: convert --ita-[in]visible-in-index
diff.c: convert -z
diff.c: convert -l
diff.c: convert -S|-G
diff.c: convert --pickaxe-all|--pickaxe-regex
diff.c: convert -O
diff.c: convert --find-object
diff.c: convert --diff-filter
diff.c: convert --[no-]abbrev
diff.c: convert --[src|dst]-prefix
diff.c: convert --line-prefix
diff.c: convert --no-prefix
diff.c: convert --inter-hunk-context
diff.c: convert --color-moved
diff.c: convert --color-moved-ws
range-diff: use parse_options() instead of diff_opt_parse() diff --no-index: use parse_options() instead of diff_opt_parse()
am: avoid diff_opt_parse()
Documentation/diff-options.txt | 24 +- builtin/am.c | 4 +- builtin/blame.c | 2 +- builtin/diff.c | 21 +- builtin/merge.c | 9 +- builtin/range-diff.c | 26 +- builtin/update-index.c | 41 +- diff-no-index.c | 49 +- diff.c | 1132 ++++++++++++++++++++------------ diff.h | 85 +-- parse-options-cb.c | 11 +- parse-options.c | 152 +++-- parse-options.h | 116 ++-- t/t4053-diff-no-index.sh | 3 +- t/t7800-difftool.sh | 4 +- 15 files changed, 1051 insertions(+), 628 deletions(-)
Signature · 1 line
2.20.0.482.g66447595a7