diff: parse separate options like -S foo
Change the option parsing logic in revision.c to accept separate forms like `-S foo' in addition to `-Sfoo'. The rest of git already accepted this form, but revision.c still used its own option parsing. Short options affected are -S<string>, -l<num> and -O<orderfile>, for which an empty string wouldn't make sense, hence -<option> <arg> isn't ambiguous. This patch does not handle --stat-name-width and --stat-width, which are special-cases where diff_long_opt do not apply. They are handled in a separate patch to ease review. Original patch by Matthieu Moy, plus refactoring by Jonathan Nieder. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
64fdc08dac
commit
dea007fb4c
7
diff.h
7
diff.h
@ -214,6 +214,13 @@ extern void diff_unmerge(struct diff_options *,
|
||||
#define DIFF_SETUP_USE_CACHE 2
|
||||
#define DIFF_SETUP_USE_SIZE_CACHE 4
|
||||
|
||||
/*
|
||||
* Poor man's alternative to parse-option, to allow both sticked form
|
||||
* (--option=value) and separate form (--option value).
|
||||
*/
|
||||
extern int parse_long_opt(const char *opt, const char **argv,
|
||||
const char **optarg);
|
||||
|
||||
extern int git_diff_basic_config(const char *var, const char *value, void *cb);
|
||||
extern int git_diff_ui_config(const char *var, const char *value, void *cb);
|
||||
extern int diff_use_color_default;
|
||||
|
||||
Reference in New Issue
Block a user