Merge branch 'sb/parseopt-boolean-removal'

Convert most uses of OPT_BOOLEAN/OPTION_BOOLEAN that can use
OPT_BOOL/OPTION_BOOLEAN which have much saner semantics, and turn
remaining ones into OPT_SET_INT, OPT_COUNTUP, etc. as necessary.

* sb/parseopt-boolean-removal:
  revert: use the OPT_CMDMODE for parsing, reducing code
  checkout-index: fix negations of even numbers of -n
  config parsing options: allow one flag multiple times
  hash-object: replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP
  branch, commit, name-rev: ease up boolean conditions
  checkout: remove superfluous local variable
  log, format-patch: parsing uses OPT__QUIET
  Replace deprecated OPT_BOOLEAN by OPT_BOOL
  Remove deprecated OPTION_BOOLEAN for parsing arguments
This commit is contained in:
Junio C Hamano 2013-09-04 12:39:02 -07:00
Родитель 366b80bf0a 84d83f642a
Коммит a86a8b9752
42 изменённых файлов: 279 добавлений и 318 удалений

Просмотреть файл

@ -242,6 +242,7 @@ configuration options in linkgit:git-notes[1] to use this workflow).
Note that the leading character does not have to be a dot; for example, Note that the leading character does not have to be a dot; for example,
you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`. you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`.
-q::
--quiet:: --quiet::
Do not print the names of the generated files to standard output. Do not print the names of the generated files to standard output.

Просмотреть файл

@ -4363,23 +4363,23 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
{ OPTION_CALLBACK, 'p', NULL, NULL, N_("num"), { OPTION_CALLBACK, 'p', NULL, NULL, N_("num"),
N_("remove <num> leading slashes from traditional diff paths"), N_("remove <num> leading slashes from traditional diff paths"),
0, option_parse_p }, 0, option_parse_p },
OPT_BOOLEAN(0, "no-add", &no_add, OPT_BOOL(0, "no-add", &no_add,
N_("ignore additions made by the patch")), N_("ignore additions made by the patch")),
OPT_BOOLEAN(0, "stat", &diffstat, OPT_BOOL(0, "stat", &diffstat,
N_("instead of applying the patch, output diffstat for the input")), N_("instead of applying the patch, output diffstat for the input")),
OPT_NOOP_NOARG(0, "allow-binary-replacement"), OPT_NOOP_NOARG(0, "allow-binary-replacement"),
OPT_NOOP_NOARG(0, "binary"), OPT_NOOP_NOARG(0, "binary"),
OPT_BOOLEAN(0, "numstat", &numstat, OPT_BOOL(0, "numstat", &numstat,
N_("show number of added and deleted lines in decimal notation")), N_("show number of added and deleted lines in decimal notation")),
OPT_BOOLEAN(0, "summary", &summary, OPT_BOOL(0, "summary", &summary,
N_("instead of applying the patch, output a summary for the input")), N_("instead of applying the patch, output a summary for the input")),
OPT_BOOLEAN(0, "check", &check, OPT_BOOL(0, "check", &check,
N_("instead of applying the patch, see if the patch is applicable")), N_("instead of applying the patch, see if the patch is applicable")),
OPT_BOOLEAN(0, "index", &check_index, OPT_BOOL(0, "index", &check_index,
N_("make sure the patch is applicable to the current index")), N_("make sure the patch is applicable to the current index")),
OPT_BOOLEAN(0, "cached", &cached, OPT_BOOL(0, "cached", &cached,
N_("apply a patch without touching the working tree")), N_("apply a patch without touching the working tree")),
OPT_BOOLEAN(0, "apply", &force_apply, OPT_BOOL(0, "apply", &force_apply,
N_("also apply the patch (use with --stat/--summary/--check)")), N_("also apply the patch (use with --stat/--summary/--check)")),
OPT_BOOL('3', "3way", &threeway, OPT_BOOL('3', "3way", &threeway,
N_( "attempt three-way merge if a patch does not apply")), N_( "attempt three-way merge if a patch does not apply")),
@ -4399,13 +4399,13 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
{ OPTION_CALLBACK, 0, "ignore-whitespace", NULL, NULL, { OPTION_CALLBACK, 0, "ignore-whitespace", NULL, NULL,
N_("ignore changes in whitespace when finding context"), N_("ignore changes in whitespace when finding context"),
PARSE_OPT_NOARG, option_parse_space_change }, PARSE_OPT_NOARG, option_parse_space_change },
OPT_BOOLEAN('R', "reverse", &apply_in_reverse, OPT_BOOL('R', "reverse", &apply_in_reverse,
N_("apply the patch in reverse")), N_("apply the patch in reverse")),
OPT_BOOLEAN(0, "unidiff-zero", &unidiff_zero, OPT_BOOL(0, "unidiff-zero", &unidiff_zero,
N_("don't expect at least one line of context")), N_("don't expect at least one line of context")),
OPT_BOOLEAN(0, "reject", &apply_with_reject, OPT_BOOL(0, "reject", &apply_with_reject,
N_("leave the rejected hunks in corresponding *.rej files")), N_("leave the rejected hunks in corresponding *.rej files")),
OPT_BOOLEAN(0, "allow-overlap", &allow_overlap, OPT_BOOL(0, "allow-overlap", &allow_overlap,
N_("allow overlapping hunks")), N_("allow overlapping hunks")),
OPT__VERBOSE(&apply_verbosely, N_("be verbose")), OPT__VERBOSE(&apply_verbosely, N_("be verbose")),
OPT_BIT(0, "inaccurate-eof", &options, OPT_BIT(0, "inaccurate-eof", &options,

Просмотреть файл

@ -13,10 +13,10 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
int next_all = 0; int next_all = 0;
int no_checkout = 0; int no_checkout = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN(0, "next-all", &next_all, OPT_BOOL(0, "next-all", &next_all,
N_("perform 'git bisect next'")), N_("perform 'git bisect next'")),
OPT_BOOLEAN(0, "no-checkout", &no_checkout, OPT_BOOL(0, "no-checkout", &no_checkout,
N_("update BISECT_HEAD instead of checking out the current commit")), N_("update BISECT_HEAD instead of checking out the current commit")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -2273,10 +2273,10 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
static const char *revs_file = NULL; static const char *revs_file = NULL;
static const char *contents_from = NULL; static const char *contents_from = NULL;
static const struct option options[] = { static const struct option options[] = {
OPT_BOOLEAN(0, "incremental", &incremental, N_("Show blame entries as we find them, incrementally")), OPT_BOOL(0, "incremental", &incremental, N_("Show blame entries as we find them, incrementally")),
OPT_BOOLEAN('b', NULL, &blank_boundary, N_("Show blank SHA-1 for boundary commits (Default: off)")), OPT_BOOL('b', NULL, &blank_boundary, N_("Show blank SHA-1 for boundary commits (Default: off)")),
OPT_BOOLEAN(0, "root", &show_root, N_("Do not treat root commits as boundaries (Default: off)")), OPT_BOOL(0, "root", &show_root, N_("Do not treat root commits as boundaries (Default: off)")),
OPT_BOOLEAN(0, "show-stats", &show_stats, N_("Show work cost statistics")), OPT_BOOL(0, "show-stats", &show_stats, N_("Show work cost statistics")),
OPT_BIT(0, "score-debug", &output_option, N_("Show output score for blame entries"), OUTPUT_SHOW_SCORE), OPT_BIT(0, "score-debug", &output_option, N_("Show output score for blame entries"), OUTPUT_SHOW_SCORE),
OPT_BIT('f', "show-name", &output_option, N_("Show original filename (Default: auto)"), OUTPUT_SHOW_NAME), OPT_BIT('f', "show-name", &output_option, N_("Show original filename (Default: auto)"), OUTPUT_SHOW_NAME),
OPT_BIT('n', "show-number", &output_option, N_("Show original linenumber (Default: off)"), OUTPUT_SHOW_NUMBER), OPT_BIT('n', "show-number", &output_option, N_("Show original linenumber (Default: off)"), OUTPUT_SHOW_NUMBER),

Просмотреть файл

@ -797,7 +797,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
OPT_SET_INT( 0, "set-upstream", &track, N_("change upstream info"), OPT_SET_INT( 0, "set-upstream", &track, N_("change upstream info"),
BRANCH_TRACK_OVERRIDE), BRANCH_TRACK_OVERRIDE),
OPT_STRING('u', "set-upstream-to", &new_upstream, "upstream", "change the upstream info"), OPT_STRING('u', "set-upstream-to", &new_upstream, "upstream", "change the upstream info"),
OPT_BOOLEAN(0, "unset-upstream", &unset_upstream, "Unset the upstream info"), OPT_BOOL(0, "unset-upstream", &unset_upstream, "Unset the upstream info"),
OPT__COLOR(&branch_use_color, N_("use colored output")), OPT__COLOR(&branch_use_color, N_("use colored output")),
OPT_SET_INT('r', "remotes", &kinds, N_("act on remote-tracking branches"), OPT_SET_INT('r', "remotes", &kinds, N_("act on remote-tracking branches"),
REF_REMOTE_BRANCH), REF_REMOTE_BRANCH),
@ -822,10 +822,10 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
OPT_BIT('D', NULL, &delete, N_("delete branch (even if not merged)"), 2), OPT_BIT('D', NULL, &delete, N_("delete branch (even if not merged)"), 2),
OPT_BIT('m', "move", &rename, N_("move/rename a branch and its reflog"), 1), OPT_BIT('m', "move", &rename, N_("move/rename a branch and its reflog"), 1),
OPT_BIT('M', NULL, &rename, N_("move/rename a branch, even if target exists"), 2), OPT_BIT('M', NULL, &rename, N_("move/rename a branch, even if target exists"), 2),
OPT_BOOLEAN(0, "list", &list, N_("list branch names")), OPT_BOOL(0, "list", &list, N_("list branch names")),
OPT_BOOLEAN('l', "create-reflog", &reflog, N_("create the branch's reflog")), OPT_BOOL('l', "create-reflog", &reflog, N_("create the branch's reflog")),
OPT_BOOLEAN(0, "edit-description", &edit_description, OPT_BOOL(0, "edit-description", &edit_description,
N_("edit the description for the branch")), N_("edit the description for the branch")),
OPT__FORCE(&force_create, N_("force creation (when already exists)")), OPT__FORCE(&force_create, N_("force creation (when already exists)")),
{ {
OPTION_CALLBACK, 0, "no-merged", &merge_filter_ref, OPTION_CALLBACK, 0, "no-merged", &merge_filter_ref,
@ -872,7 +872,8 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
if (with_commit || merge_filter != NO_FILTER) if (with_commit || merge_filter != NO_FILTER)
list = 1; list = 1;
if (!!delete + !!rename + !!force_create + !!list + !!new_upstream + !!unset_upstream > 1) if (!!delete + !!rename + !!force_create + !!new_upstream +
list + unset_upstream > 1)
usage_with_options(builtin_branch_usage, options); usage_with_options(builtin_branch_usage, options);
if (abbrev == -1) if (abbrev == -1)

Просмотреть файл

@ -16,11 +16,11 @@ NULL
static int nul_term_line; static int nul_term_line;
static const struct option check_attr_options[] = { static const struct option check_attr_options[] = {
OPT_BOOLEAN('a', "all", &all_attrs, N_("report all attributes set on file")), OPT_BOOL('a', "all", &all_attrs, N_("report all attributes set on file")),
OPT_BOOLEAN(0, "cached", &cached_attrs, N_("use .gitattributes only from the index")), OPT_BOOL(0, "cached", &cached_attrs, N_("use .gitattributes only from the index")),
OPT_BOOLEAN(0 , "stdin", &stdin_paths, N_("read file names from stdin")), OPT_BOOL(0 , "stdin", &stdin_paths, N_("read file names from stdin")),
OPT_BOOLEAN('z', NULL, &nul_term_line, OPT_BOOL('z', NULL, &nul_term_line,
N_("terminate input and output records by a NUL character")), N_("terminate input and output records by a NUL character")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -18,12 +18,12 @@ static const struct option check_ignore_options[] = {
OPT__QUIET(&quiet, N_("suppress progress reporting")), OPT__QUIET(&quiet, N_("suppress progress reporting")),
OPT__VERBOSE(&verbose, N_("be verbose")), OPT__VERBOSE(&verbose, N_("be verbose")),
OPT_GROUP(""), OPT_GROUP(""),
OPT_BOOLEAN(0, "stdin", &stdin_paths, OPT_BOOL(0, "stdin", &stdin_paths,
N_("read file names from stdin")), N_("read file names from stdin")),
OPT_BOOLEAN('z', NULL, &nul_term_line, OPT_BOOL('z', NULL, &nul_term_line,
N_("terminate input and output records by a NUL character")), N_("terminate input and output records by a NUL character")),
OPT_BOOLEAN('n', "non-matching", &show_non_matching, OPT_BOOL('n', "non-matching", &show_non_matching,
N_("show non-matching input paths")), N_("show non-matching input paths")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -183,12 +183,12 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
int prefix_length; int prefix_length;
int force = 0, quiet = 0, not_new = 0; int force = 0, quiet = 0, not_new = 0;
struct option builtin_checkout_index_options[] = { struct option builtin_checkout_index_options[] = {
OPT_BOOLEAN('a', "all", &all, OPT_BOOL('a', "all", &all,
N_("check out all files in the index")), N_("check out all files in the index")),
OPT__FORCE(&force, N_("force overwrite of existing files")), OPT__FORCE(&force, N_("force overwrite of existing files")),
OPT__QUIET(&quiet, OPT__QUIET(&quiet,
N_("no warning for existing files and files not in index")), N_("no warning for existing files and files not in index")),
OPT_BOOLEAN('n', "no-create", &not_new, OPT_BOOL('n', "no-create", &not_new,
N_("don't checkout new files")), N_("don't checkout new files")),
{ OPTION_CALLBACK, 'u', "index", &newfd, NULL, { OPTION_CALLBACK, 'u', "index", &newfd, NULL,
N_("update stat information in the index file"), N_("update stat information in the index file"),
@ -196,9 +196,9 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
{ OPTION_CALLBACK, 'z', NULL, NULL, NULL, { OPTION_CALLBACK, 'z', NULL, NULL, NULL,
N_("paths are separated with NUL character"), N_("paths are separated with NUL character"),
PARSE_OPT_NOARG, option_parse_z }, PARSE_OPT_NOARG, option_parse_z },
OPT_BOOLEAN(0, "stdin", &read_from_stdin, OPT_BOOL(0, "stdin", &read_from_stdin,
N_("read list of paths from the standard input")), N_("read list of paths from the standard input")),
OPT_BOOLEAN(0, "temp", &to_tempfile, OPT_BOOL(0, "temp", &to_tempfile,
N_("write the content to temporary files")), N_("write the content to temporary files")),
OPT_CALLBACK(0, "prefix", NULL, N_("string"), OPT_CALLBACK(0, "prefix", NULL, N_("string"),
N_("when creating files, prepend <string>"), N_("when creating files, prepend <string>"),

Просмотреть файл

@ -228,8 +228,6 @@ static int checkout_paths(const struct checkout_opts *opts,
int flag; int flag;
struct commit *head; struct commit *head;
int errs = 0; int errs = 0;
int stage = opts->writeout_stage;
int merge = opts->merge;
int newfd; int newfd;
struct lock_file *lock_file; struct lock_file *lock_file;
@ -327,8 +325,8 @@ static int checkout_paths(const struct checkout_opts *opts,
continue; continue;
if (opts->force) { if (opts->force) {
warning(_("path '%s' is unmerged"), ce->name); warning(_("path '%s' is unmerged"), ce->name);
} else if (stage) { } else if (opts->writeout_stage) {
errs |= check_stage(stage, ce, pos); errs |= check_stage(opts->writeout_stage, ce, pos);
} else if (opts->merge) { } else if (opts->merge) {
errs |= check_stages((1<<2) | (1<<3), ce, pos); errs |= check_stages((1<<2) | (1<<3), ce, pos);
} else { } else {
@ -352,9 +350,9 @@ static int checkout_paths(const struct checkout_opts *opts,
errs |= checkout_entry(ce, &state, NULL); errs |= checkout_entry(ce, &state, NULL);
continue; continue;
} }
if (stage) if (opts->writeout_stage)
errs |= checkout_stage(stage, ce, pos, &state); errs |= checkout_stage(opts->writeout_stage, ce, pos, &state);
else if (merge) else if (opts->merge)
errs |= checkout_merged(pos, &state); errs |= checkout_merged(pos, &state);
pos = skip_same_name(ce, pos) - 1; pos = skip_same_name(ce, pos) - 1;
} }
@ -1056,8 +1054,8 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
N_("create and checkout a new branch")), N_("create and checkout a new branch")),
OPT_STRING('B', NULL, &opts.new_branch_force, N_("branch"), OPT_STRING('B', NULL, &opts.new_branch_force, N_("branch"),
N_("create/reset and checkout a branch")), N_("create/reset and checkout a branch")),
OPT_BOOLEAN('l', NULL, &opts.new_branch_log, N_("create reflog for new branch")), OPT_BOOL('l', NULL, &opts.new_branch_log, N_("create reflog for new branch")),
OPT_BOOLEAN(0, "detach", &opts.force_detach, N_("detach the HEAD at named commit")), OPT_BOOL(0, "detach", &opts.force_detach, N_("detach the HEAD at named commit")),
OPT_SET_INT('t', "track", &opts.track, N_("set upstream info for new branch"), OPT_SET_INT('t', "track", &opts.track, N_("set upstream info for new branch"),
BRANCH_TRACK_EXPLICIT), BRANCH_TRACK_EXPLICIT),
OPT_STRING(0, "orphan", &opts.new_orphan_branch, N_("new branch"), N_("new unparented branch")), OPT_STRING(0, "orphan", &opts.new_orphan_branch, N_("new branch"), N_("new unparented branch")),
@ -1066,16 +1064,15 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
OPT_SET_INT('3', "theirs", &opts.writeout_stage, N_("checkout their version for unmerged files"), OPT_SET_INT('3', "theirs", &opts.writeout_stage, N_("checkout their version for unmerged files"),
3), 3),
OPT__FORCE(&opts.force, N_("force checkout (throw away local modifications)")), OPT__FORCE(&opts.force, N_("force checkout (throw away local modifications)")),
OPT_BOOLEAN('m', "merge", &opts.merge, N_("perform a 3-way merge with the new branch")), OPT_BOOL('m', "merge", &opts.merge, N_("perform a 3-way merge with the new branch")),
OPT_BOOLEAN(0, "overwrite-ignore", &opts.overwrite_ignore, N_("update ignored files (default)")), OPT_BOOL(0, "overwrite-ignore", &opts.overwrite_ignore, N_("update ignored files (default)")),
OPT_STRING(0, "conflict", &conflict_style, N_("style"), OPT_STRING(0, "conflict", &conflict_style, N_("style"),
N_("conflict style (merge or diff3)")), N_("conflict style (merge or diff3)")),
OPT_BOOLEAN('p', "patch", &opts.patch_mode, N_("select hunks interactively")), OPT_BOOL('p', "patch", &opts.patch_mode, N_("select hunks interactively")),
OPT_BOOL(0, "ignore-skip-worktree-bits", &opts.ignore_skipworktree, OPT_BOOL(0, "ignore-skip-worktree-bits", &opts.ignore_skipworktree,
N_("do not limit pathspecs to sparse entries only")), N_("do not limit pathspecs to sparse entries only")),
{ OPTION_BOOLEAN, 0, "guess", &dwim_new_local_branch, NULL, OPT_HIDDEN_BOOL(0, "guess", &dwim_new_local_branch,
N_("second guess 'git checkout no-such-branch'"), N_("second guess 'git checkout no-such-branch'")),
PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
OPT_END(), OPT_END(),
}; };

Просмотреть файл

@ -875,12 +875,12 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
OPT__DRY_RUN(&dry_run, N_("dry run")), OPT__DRY_RUN(&dry_run, N_("dry run")),
OPT__FORCE(&force, N_("force")), OPT__FORCE(&force, N_("force")),
OPT_BOOL('i', "interactive", &interactive, N_("interactive cleaning")), OPT_BOOL('i', "interactive", &interactive, N_("interactive cleaning")),
OPT_BOOLEAN('d', NULL, &remove_directories, OPT_BOOL('d', NULL, &remove_directories,
N_("remove whole directories")), N_("remove whole directories")),
{ OPTION_CALLBACK, 'e', "exclude", &exclude_list, N_("pattern"), { OPTION_CALLBACK, 'e', "exclude", &exclude_list, N_("pattern"),
N_("add <pattern> to ignore rules"), PARSE_OPT_NONEG, exclude_cb }, N_("add <pattern> to ignore rules"), PARSE_OPT_NONEG, exclude_cb },
OPT_BOOLEAN('x', NULL, &ignored, N_("remove ignored files, too")), OPT_BOOL('x', NULL, &ignored, N_("remove ignored files, too")),
OPT_BOOLEAN('X', NULL, &ignored_only, OPT_BOOL('X', NULL, &ignored_only,
N_("remove only ignored files")), N_("remove only ignored files")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -62,23 +62,22 @@ static struct option builtin_clone_options[] = {
OPT__VERBOSITY(&option_verbosity), OPT__VERBOSITY(&option_verbosity),
OPT_BOOL(0, "progress", &option_progress, OPT_BOOL(0, "progress", &option_progress,
N_("force progress reporting")), N_("force progress reporting")),
OPT_BOOLEAN('n', "no-checkout", &option_no_checkout, OPT_BOOL('n', "no-checkout", &option_no_checkout,
N_("don't create a checkout")), N_("don't create a checkout")),
OPT_BOOLEAN(0, "bare", &option_bare, N_("create a bare repository")), OPT_BOOL(0, "bare", &option_bare, N_("create a bare repository")),
{ OPTION_BOOLEAN, 0, "naked", &option_bare, NULL, OPT_HIDDEN_BOOL(0, "naked", &option_bare,
N_("create a bare repository"), N_("create a bare repository")),
PARSE_OPT_NOARG | PARSE_OPT_HIDDEN }, OPT_BOOL(0, "mirror", &option_mirror,
OPT_BOOLEAN(0, "mirror", &option_mirror, N_("create a mirror repository (implies bare)")),
N_("create a mirror repository (implies bare)")),
OPT_BOOL('l', "local", &option_local, OPT_BOOL('l', "local", &option_local,
N_("to clone from a local repository")), N_("to clone from a local repository")),
OPT_BOOLEAN(0, "no-hardlinks", &option_no_hardlinks, OPT_BOOL(0, "no-hardlinks", &option_no_hardlinks,
N_("don't use local hardlinks, always copy")), N_("don't use local hardlinks, always copy")),
OPT_BOOLEAN('s', "shared", &option_shared, OPT_BOOL('s', "shared", &option_shared,
N_("setup as shared repository")), N_("setup as shared repository")),
OPT_BOOLEAN(0, "recursive", &option_recursive, OPT_BOOL(0, "recursive", &option_recursive,
N_("initialize submodules in the clone")), N_("initialize submodules in the clone")),
OPT_BOOLEAN(0, "recurse-submodules", &option_recursive, OPT_BOOL(0, "recurse-submodules", &option_recursive,
N_("initialize submodules in the clone")), N_("initialize submodules in the clone")),
OPT_STRING(0, "template", &option_template, N_("template-directory"), OPT_STRING(0, "template", &option_template, N_("template-directory"),
N_("directory from which templates will be used")), N_("directory from which templates will be used")),

Просмотреть файл

@ -1091,7 +1091,7 @@ static int parse_and_validate_options(int argc, const char *argv[],
if (patch_interactive) if (patch_interactive)
interactive = 1; interactive = 1;
if (!!also + !!only + !!all + !!interactive > 1) if (also + only + all + interactive > 1)
die(_("Only one of --include/--only/--all/--interactive/--patch can be used.")); die(_("Only one of --include/--only/--all/--interactive/--patch can be used."));
if (argc == 0 && (also || (only && !amend))) if (argc == 0 && (also || (only && !amend)))
die(_("No paths with --include/--only does not make sense.")); die(_("No paths with --include/--only does not make sense."));
@ -1228,14 +1228,14 @@ int cmd_status(int argc, const char **argv, const char *prefix)
OPT_SET_INT(0, "long", &status_format, OPT_SET_INT(0, "long", &status_format,
N_("show status in long format (default)"), N_("show status in long format (default)"),
STATUS_FORMAT_LONG), STATUS_FORMAT_LONG),
OPT_BOOLEAN('z', "null", &s.null_termination, OPT_BOOL('z', "null", &s.null_termination,
N_("terminate entries with NUL")), N_("terminate entries with NUL")),
{ OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg,
N_("mode"), N_("mode"),
N_("show untracked files, optional modes: all, normal, no. (Default: all)"), N_("show untracked files, optional modes: all, normal, no. (Default: all)"),
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" }, PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
OPT_BOOLEAN(0, "ignored", &show_ignored_in_status, OPT_BOOL(0, "ignored", &show_ignored_in_status,
N_("show ignored files")), N_("show ignored files")),
{ OPTION_STRING, 0, "ignore-submodules", &ignore_submodule_arg, N_("when"), { OPTION_STRING, 0, "ignore-submodules", &ignore_submodule_arg, N_("when"),
N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"), N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"),
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" }, PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
@ -1434,24 +1434,24 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
OPT_STRING('C', "reuse-message", &use_message, N_("commit"), N_("reuse message from specified commit")), OPT_STRING('C', "reuse-message", &use_message, N_("commit"), N_("reuse message from specified commit")),
OPT_STRING(0, "fixup", &fixup_message, N_("commit"), N_("use autosquash formatted message to fixup specified commit")), OPT_STRING(0, "fixup", &fixup_message, N_("commit"), N_("use autosquash formatted message to fixup specified commit")),
OPT_STRING(0, "squash", &squash_message, N_("commit"), N_("use autosquash formatted message to squash specified commit")), OPT_STRING(0, "squash", &squash_message, N_("commit"), N_("use autosquash formatted message to squash specified commit")),
OPT_BOOLEAN(0, "reset-author", &renew_authorship, N_("the commit is authored by me now (used with -C/-c/--amend)")), OPT_BOOL(0, "reset-author", &renew_authorship, N_("the commit is authored by me now (used with -C/-c/--amend)")),
OPT_BOOLEAN('s', "signoff", &signoff, N_("add Signed-off-by:")), OPT_BOOL('s', "signoff", &signoff, N_("add Signed-off-by:")),
OPT_FILENAME('t', "template", &template_file, N_("use specified template file")), OPT_FILENAME('t', "template", &template_file, N_("use specified template file")),
OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")), OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")),
OPT_STRING(0, "cleanup", &cleanup_arg, N_("default"), N_("how to strip spaces and #comments from message")), OPT_STRING(0, "cleanup", &cleanup_arg, N_("default"), N_("how to strip spaces and #comments from message")),
OPT_BOOLEAN(0, "status", &include_status, N_("include status in commit message template")), OPT_BOOL(0, "status", &include_status, N_("include status in commit message template")),
{ OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key id"), { OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key id"),
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
/* end commit message options */ /* end commit message options */
OPT_GROUP(N_("Commit contents options")), OPT_GROUP(N_("Commit contents options")),
OPT_BOOLEAN('a', "all", &all, N_("commit all changed files")), OPT_BOOL('a', "all", &all, N_("commit all changed files")),
OPT_BOOLEAN('i', "include", &also, N_("add specified files to index for commit")), OPT_BOOL('i', "include", &also, N_("add specified files to index for commit")),
OPT_BOOLEAN(0, "interactive", &interactive, N_("interactively add files")), OPT_BOOL(0, "interactive", &interactive, N_("interactively add files")),
OPT_BOOLEAN('p', "patch", &patch_interactive, N_("interactively add changes")), OPT_BOOL('p', "patch", &patch_interactive, N_("interactively add changes")),
OPT_BOOLEAN('o', "only", &only, N_("commit only specified files")), OPT_BOOL('o', "only", &only, N_("commit only specified files")),
OPT_BOOLEAN('n', "no-verify", &no_verify, N_("bypass pre-commit hook")), OPT_BOOL('n', "no-verify", &no_verify, N_("bypass pre-commit hook")),
OPT_BOOLEAN(0, "dry-run", &dry_run, N_("show what would be committed")), OPT_BOOL(0, "dry-run", &dry_run, N_("show what would be committed")),
OPT_SET_INT(0, "short", &status_format, N_("show status concisely"), OPT_SET_INT(0, "short", &status_format, N_("show status concisely"),
STATUS_FORMAT_SHORT), STATUS_FORMAT_SHORT),
OPT_BOOL(0, "branch", &s.show_branch, N_("show branch information")), OPT_BOOL(0, "branch", &s.show_branch, N_("show branch information")),
@ -1460,19 +1460,17 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
OPT_SET_INT(0, "long", &status_format, OPT_SET_INT(0, "long", &status_format,
N_("show status in long format (default)"), N_("show status in long format (default)"),
STATUS_FORMAT_LONG), STATUS_FORMAT_LONG),
OPT_BOOLEAN('z', "null", &s.null_termination, OPT_BOOL('z', "null", &s.null_termination,
N_("terminate entries with NUL")), N_("terminate entries with NUL")),
OPT_BOOLEAN(0, "amend", &amend, N_("amend previous commit")), OPT_BOOL(0, "amend", &amend, N_("amend previous commit")),
OPT_BOOLEAN(0, "no-post-rewrite", &no_post_rewrite, N_("bypass post-rewrite hook")), OPT_BOOL(0, "no-post-rewrite", &no_post_rewrite, N_("bypass post-rewrite hook")),
{ OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, N_("mode"), N_("show untracked files, optional modes: all, normal, no. (Default: all)"), PARSE_OPT_OPTARG, NULL, (intptr_t)"all" }, { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, N_("mode"), N_("show untracked files, optional modes: all, normal, no. (Default: all)"), PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
/* end commit contents options */ /* end commit contents options */
{ OPTION_BOOLEAN, 0, "allow-empty", &allow_empty, NULL, OPT_HIDDEN_BOOL(0, "allow-empty", &allow_empty,
N_("ok to record an empty change"), N_("ok to record an empty change")),
PARSE_OPT_NOARG | PARSE_OPT_HIDDEN }, OPT_HIDDEN_BOOL(0, "allow-empty-message", &allow_empty_message,
{ OPTION_BOOLEAN, 0, "allow-empty-message", &allow_empty_message, NULL, N_("ok to record a change with an empty message")),
N_("ok to record a change with an empty message"),
PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -50,9 +50,9 @@ static int respect_includes = -1;
static struct option builtin_config_options[] = { static struct option builtin_config_options[] = {
OPT_GROUP(N_("Config file location")), OPT_GROUP(N_("Config file location")),
OPT_BOOLEAN(0, "global", &use_global_config, N_("use global config file")), OPT_BOOL(0, "global", &use_global_config, N_("use global config file")),
OPT_BOOLEAN(0, "system", &use_system_config, N_("use system config file")), OPT_BOOL(0, "system", &use_system_config, N_("use system config file")),
OPT_BOOLEAN(0, "local", &use_local_config, N_("use repository config file")), OPT_BOOL(0, "local", &use_local_config, N_("use repository config file")),
OPT_STRING('f', "file", &given_config_file, N_("file"), N_("use given config file")), OPT_STRING('f', "file", &given_config_file, N_("file"), N_("use given config file")),
OPT_STRING(0, "blob", &given_config_blob, N_("blob-id"), N_("read config from given blob object")), OPT_STRING(0, "blob", &given_config_blob, N_("blob-id"), N_("read config from given blob object")),
OPT_GROUP(N_("Action")), OPT_GROUP(N_("Action")),
@ -75,7 +75,7 @@ static struct option builtin_config_options[] = {
OPT_BIT(0, "bool-or-int", &types, N_("value is --bool or --int"), TYPE_BOOL_OR_INT), OPT_BIT(0, "bool-or-int", &types, N_("value is --bool or --int"), TYPE_BOOL_OR_INT),
OPT_BIT(0, "path", &types, N_("value is a path (file or directory name)"), TYPE_PATH), OPT_BIT(0, "path", &types, N_("value is a path (file or directory name)"), TYPE_PATH),
OPT_GROUP(N_("Other")), OPT_GROUP(N_("Other")),
OPT_BOOLEAN('z', "null", &end_null, N_("terminate values with NUL byte")), OPT_BOOL('z', "null", &end_null, N_("terminate values with NUL byte")),
OPT_BOOL(0, "includes", &respect_includes, N_("respect include directives on lookup")), OPT_BOOL(0, "includes", &respect_includes, N_("respect include directives on lookup")),
OPT_END(), OPT_END(),
}; };

Просмотреть файл

@ -406,12 +406,12 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
{ {
int contains = 0; int contains = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN(0, "contains", &contains, N_("find the tag that comes after the commit")), OPT_BOOL(0, "contains", &contains, N_("find the tag that comes after the commit")),
OPT_BOOLEAN(0, "debug", &debug, N_("debug search strategy on stderr")), OPT_BOOL(0, "debug", &debug, N_("debug search strategy on stderr")),
OPT_BOOLEAN(0, "all", &all, N_("use any ref")), OPT_BOOL(0, "all", &all, N_("use any ref")),
OPT_BOOLEAN(0, "tags", &tags, N_("use any tag, even unannotated")), OPT_BOOL(0, "tags", &tags, N_("use any tag, even unannotated")),
OPT_BOOLEAN(0, "long", &longformat, N_("always use long format")), OPT_BOOL(0, "long", &longformat, N_("always use long format")),
OPT_BOOLEAN(0, "first-parent", &first_parent, N_("only follow first parent")), OPT_BOOL(0, "first-parent", &first_parent, N_("only follow first parent")),
OPT__ABBREV(&abbrev), OPT__ABBREV(&abbrev),
OPT_SET_INT(0, "exact-match", &max_candidates, OPT_SET_INT(0, "exact-match", &max_candidates,
N_("only output exact matches"), 0), N_("only output exact matches"), 0),
@ -419,11 +419,11 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
N_("consider <n> most recent tags (default: 10)")), N_("consider <n> most recent tags (default: 10)")),
OPT_STRING(0, "match", &pattern, N_("pattern"), OPT_STRING(0, "match", &pattern, N_("pattern"),
N_("only consider tags matching <pattern>")), N_("only consider tags matching <pattern>")),
OPT_BOOLEAN(0, "always", &always, OPT_BOOL(0, "always", &always,
N_("show abbreviated commit object as fallback")), N_("show abbreviated commit object as fallback")),
{OPTION_STRING, 0, "dirty", &dirty, N_("mark"), {OPTION_STRING, 0, "dirty", &dirty, N_("mark"),
N_("append <mark> on dirty working tree (default: \"-dirty\")"), N_("append <mark> on dirty working tree (default: \"-dirty\")"),
PARSE_OPT_OPTARG, NULL, (intptr_t) "-dirty"}, PARSE_OPT_OPTARG, NULL, (intptr_t) "-dirty"},
OPT_END(), OPT_END(),
}; };

Просмотреть файл

@ -674,11 +674,11 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
N_("Dump marks to this file")), N_("Dump marks to this file")),
OPT_STRING(0, "import-marks", &import_filename, N_("file"), OPT_STRING(0, "import-marks", &import_filename, N_("file"),
N_("Import marks from this file")), N_("Import marks from this file")),
OPT_BOOLEAN(0, "fake-missing-tagger", &fake_missing_tagger, OPT_BOOL(0, "fake-missing-tagger", &fake_missing_tagger,
N_("Fake a tagger when tags lack one")), N_("Fake a tagger when tags lack one")),
OPT_BOOLEAN(0, "full-tree", &full_tree, OPT_BOOL(0, "full-tree", &full_tree,
N_("Output full tree for each commit")), N_("Output full tree for each commit")),
OPT_BOOLEAN(0, "use-done-feature", &use_done_feature, OPT_BOOL(0, "use-done-feature", &use_done_feature,
N_("Use the done feature to terminate the stream")), N_("Use the done feature to terminate the stream")),
OPT_BOOL(0, "no-data", &no_data, N_("Skip output of blob data")), OPT_BOOL(0, "no-data", &no_data, N_("Skip output of blob data")),
OPT_END() OPT_END()

Просмотреть файл

@ -56,28 +56,28 @@ static int option_parse_recurse_submodules(const struct option *opt,
static struct option builtin_fetch_options[] = { static struct option builtin_fetch_options[] = {
OPT__VERBOSITY(&verbosity), OPT__VERBOSITY(&verbosity),
OPT_BOOLEAN(0, "all", &all, OPT_BOOL(0, "all", &all,
N_("fetch from all remotes")), N_("fetch from all remotes")),
OPT_BOOLEAN('a', "append", &append, OPT_BOOL('a', "append", &append,
N_("append to .git/FETCH_HEAD instead of overwriting")), N_("append to .git/FETCH_HEAD instead of overwriting")),
OPT_STRING(0, "upload-pack", &upload_pack, N_("path"), OPT_STRING(0, "upload-pack", &upload_pack, N_("path"),
N_("path to upload pack on remote end")), N_("path to upload pack on remote end")),
OPT__FORCE(&force, N_("force overwrite of local branch")), OPT__FORCE(&force, N_("force overwrite of local branch")),
OPT_BOOLEAN('m', "multiple", &multiple, OPT_BOOL('m', "multiple", &multiple,
N_("fetch from multiple remotes")), N_("fetch from multiple remotes")),
OPT_SET_INT('t', "tags", &tags, OPT_SET_INT('t', "tags", &tags,
N_("fetch all tags and associated objects"), TAGS_SET), N_("fetch all tags and associated objects"), TAGS_SET),
OPT_SET_INT('n', NULL, &tags, OPT_SET_INT('n', NULL, &tags,
N_("do not fetch all tags (--no-tags)"), TAGS_UNSET), N_("do not fetch all tags (--no-tags)"), TAGS_UNSET),
OPT_BOOLEAN('p', "prune", &prune, OPT_BOOL('p', "prune", &prune,
N_("prune remote-tracking branches no longer on remote")), N_("prune remote-tracking branches no longer on remote")),
{ OPTION_CALLBACK, 0, "recurse-submodules", NULL, N_("on-demand"), { OPTION_CALLBACK, 0, "recurse-submodules", NULL, N_("on-demand"),
N_("control recursive fetching of submodules"), N_("control recursive fetching of submodules"),
PARSE_OPT_OPTARG, option_parse_recurse_submodules }, PARSE_OPT_OPTARG, option_parse_recurse_submodules },
OPT_BOOLEAN(0, "dry-run", &dry_run, OPT_BOOL(0, "dry-run", &dry_run,
N_("dry run")), N_("dry run")),
OPT_BOOLEAN('k', "keep", &keep, N_("keep downloaded pack")), OPT_BOOL('k', "keep", &keep, N_("keep downloaded pack")),
OPT_BOOLEAN('u', "update-head-ok", &update_head_ok, OPT_BOOL('u', "update-head-ok", &update_head_ok,
N_("allow updating of HEAD ref")), N_("allow updating of HEAD ref")),
OPT_BOOL(0, "progress", &progress, N_("force progress reporting")), OPT_BOOL(0, "progress", &progress, N_("force progress reporting")),
OPT_STRING(0, "depth", &depth, N_("depth"), OPT_STRING(0, "depth", &depth, N_("depth"),

Просмотреть файл

@ -611,15 +611,15 @@ static char const * const fsck_usage[] = {
static struct option fsck_opts[] = { static struct option fsck_opts[] = {
OPT__VERBOSE(&verbose, N_("be verbose")), OPT__VERBOSE(&verbose, N_("be verbose")),
OPT_BOOLEAN(0, "unreachable", &show_unreachable, N_("show unreachable objects")), OPT_BOOL(0, "unreachable", &show_unreachable, N_("show unreachable objects")),
OPT_BOOL(0, "dangling", &show_dangling, N_("show dangling objects")), OPT_BOOL(0, "dangling", &show_dangling, N_("show dangling objects")),
OPT_BOOLEAN(0, "tags", &show_tags, N_("report tags")), OPT_BOOL(0, "tags", &show_tags, N_("report tags")),
OPT_BOOLEAN(0, "root", &show_root, N_("report root nodes")), OPT_BOOL(0, "root", &show_root, N_("report root nodes")),
OPT_BOOLEAN(0, "cache", &keep_cache_objects, N_("make index objects head nodes")), OPT_BOOL(0, "cache", &keep_cache_objects, N_("make index objects head nodes")),
OPT_BOOLEAN(0, "reflogs", &include_reflogs, N_("make reflogs head nodes (default)")), OPT_BOOL(0, "reflogs", &include_reflogs, N_("make reflogs head nodes (default)")),
OPT_BOOLEAN(0, "full", &check_full, N_("also consider packs and alternate objects")), OPT_BOOL(0, "full", &check_full, N_("also consider packs and alternate objects")),
OPT_BOOLEAN(0, "strict", &check_strict, N_("enable more strict checking")), OPT_BOOL(0, "strict", &check_strict, N_("enable more strict checking")),
OPT_BOOLEAN(0, "lost-found", &write_lost_and_found, OPT_BOOL(0, "lost-found", &write_lost_and_found,
N_("write dangling objects in .git/lost-found")), N_("write dangling objects in .git/lost-found")),
OPT_BOOL(0, "progress", &show_progress, N_("show progress")), OPT_BOOL(0, "progress", &show_progress, N_("show progress")),
OPT_END(), OPT_END(),

Просмотреть файл

@ -236,8 +236,8 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
{ OPTION_STRING, 0, "prune", &prune_expire, N_("date"), { OPTION_STRING, 0, "prune", &prune_expire, N_("date"),
N_("prune unreferenced objects"), N_("prune unreferenced objects"),
PARSE_OPT_OPTARG, NULL, (intptr_t)prune_expire }, PARSE_OPT_OPTARG, NULL, (intptr_t)prune_expire },
OPT_BOOLEAN(0, "aggressive", &aggressive, N_("be more thorough (increased runtime)")), OPT_BOOL(0, "aggressive", &aggressive, N_("be more thorough (increased runtime)")),
OPT_BOOLEAN(0, "auto", &auto_gc, N_("enable auto-gc mode")), OPT_BOOL(0, "auto", &auto_gc, N_("enable auto-gc mode")),
OPT_BOOL(0, "force", &force, N_("force running gc even if there may be another gc running")), OPT_BOOL(0, "force", &force, N_("force running gc even if there may be another gc running")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -638,20 +638,20 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
int pattern_type_arg = GREP_PATTERN_TYPE_UNSPECIFIED; int pattern_type_arg = GREP_PATTERN_TYPE_UNSPECIFIED;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN(0, "cached", &cached, OPT_BOOL(0, "cached", &cached,
N_("search in index instead of in the work tree")), N_("search in index instead of in the work tree")),
OPT_NEGBIT(0, "no-index", &use_index, OPT_NEGBIT(0, "no-index", &use_index,
N_("find in contents not managed by git"), 1), N_("find in contents not managed by git"), 1),
OPT_BOOLEAN(0, "untracked", &untracked, OPT_BOOL(0, "untracked", &untracked,
N_("search in both tracked and untracked files")), N_("search in both tracked and untracked files")),
OPT_SET_INT(0, "exclude-standard", &opt_exclude, OPT_SET_INT(0, "exclude-standard", &opt_exclude,
N_("search also in ignored files"), 1), N_("search also in ignored files"), 1),
OPT_GROUP(""), OPT_GROUP(""),
OPT_BOOLEAN('v', "invert-match", &opt.invert, OPT_BOOL('v', "invert-match", &opt.invert,
N_("show non-matching lines")), N_("show non-matching lines")),
OPT_BOOLEAN('i', "ignore-case", &opt.ignore_case, OPT_BOOL('i', "ignore-case", &opt.ignore_case,
N_("case insensitive matching")), N_("case insensitive matching")),
OPT_BOOLEAN('w', "word-regexp", &opt.word_regexp, OPT_BOOL('w', "word-regexp", &opt.word_regexp,
N_("match patterns only at word boundaries")), N_("match patterns only at word boundaries")),
OPT_SET_INT('a', "text", &opt.binary, OPT_SET_INT('a', "text", &opt.binary,
N_("process binary files as text"), GREP_BINARY_TEXT), N_("process binary files as text"), GREP_BINARY_TEXT),
@ -675,26 +675,26 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
N_("use Perl-compatible regular expressions"), N_("use Perl-compatible regular expressions"),
GREP_PATTERN_TYPE_PCRE), GREP_PATTERN_TYPE_PCRE),
OPT_GROUP(""), OPT_GROUP(""),
OPT_BOOLEAN('n', "line-number", &opt.linenum, N_("show line numbers")), OPT_BOOL('n', "line-number", &opt.linenum, N_("show line numbers")),
OPT_NEGBIT('h', NULL, &opt.pathname, N_("don't show filenames"), 1), OPT_NEGBIT('h', NULL, &opt.pathname, N_("don't show filenames"), 1),
OPT_BIT('H', NULL, &opt.pathname, N_("show filenames"), 1), OPT_BIT('H', NULL, &opt.pathname, N_("show filenames"), 1),
OPT_NEGBIT(0, "full-name", &opt.relative, OPT_NEGBIT(0, "full-name", &opt.relative,
N_("show filenames relative to top directory"), 1), N_("show filenames relative to top directory"), 1),
OPT_BOOLEAN('l', "files-with-matches", &opt.name_only, OPT_BOOL('l', "files-with-matches", &opt.name_only,
N_("show only filenames instead of matching lines")), N_("show only filenames instead of matching lines")),
OPT_BOOLEAN(0, "name-only", &opt.name_only, OPT_BOOL(0, "name-only", &opt.name_only,
N_("synonym for --files-with-matches")), N_("synonym for --files-with-matches")),
OPT_BOOLEAN('L', "files-without-match", OPT_BOOL('L', "files-without-match",
&opt.unmatch_name_only, &opt.unmatch_name_only,
N_("show only the names of files without match")), N_("show only the names of files without match")),
OPT_BOOLEAN('z', "null", &opt.null_following_name, OPT_BOOL('z', "null", &opt.null_following_name,
N_("print NUL after filenames")), N_("print NUL after filenames")),
OPT_BOOLEAN('c', "count", &opt.count, OPT_BOOL('c', "count", &opt.count,
N_("show the number of matches instead of matching lines")), N_("show the number of matches instead of matching lines")),
OPT__COLOR(&opt.color, N_("highlight matches")), OPT__COLOR(&opt.color, N_("highlight matches")),
OPT_BOOLEAN(0, "break", &opt.file_break, OPT_BOOL(0, "break", &opt.file_break,
N_("print empty line between matches from different files")), N_("print empty line between matches from different files")),
OPT_BOOLEAN(0, "heading", &opt.heading, OPT_BOOL(0, "heading", &opt.heading,
N_("show filename only once above matches from same file")), N_("show filename only once above matches from same file")),
OPT_GROUP(""), OPT_GROUP(""),
OPT_CALLBACK('C', "context", &opt, N_("n"), OPT_CALLBACK('C', "context", &opt, N_("n"),
@ -706,9 +706,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
N_("show <n> context lines after matches")), N_("show <n> context lines after matches")),
OPT_NUMBER_CALLBACK(&opt, N_("shortcut for -C NUM"), OPT_NUMBER_CALLBACK(&opt, N_("shortcut for -C NUM"),
context_callback), context_callback),
OPT_BOOLEAN('p', "show-function", &opt.funcname, OPT_BOOL('p', "show-function", &opt.funcname,
N_("show a line with the function name before matches")), N_("show a line with the function name before matches")),
OPT_BOOLEAN('W', "function-context", &opt.funcbody, OPT_BOOL('W', "function-context", &opt.funcbody,
N_("show the surrounding function")), N_("show the surrounding function")),
OPT_GROUP(""), OPT_GROUP(""),
OPT_CALLBACK('f', NULL, &opt, N_("file"), OPT_CALLBACK('f', NULL, &opt, N_("file"),
@ -718,7 +718,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
{ OPTION_CALLBACK, 0, "and", &opt, NULL, { OPTION_CALLBACK, 0, "and", &opt, NULL,
N_("combine patterns specified with -e"), N_("combine patterns specified with -e"),
PARSE_OPT_NOARG | PARSE_OPT_NONEG, and_callback }, PARSE_OPT_NOARG | PARSE_OPT_NONEG, and_callback },
OPT_BOOLEAN(0, "or", &dummy, ""), OPT_BOOL(0, "or", &dummy, ""),
{ OPTION_CALLBACK, 0, "not", &opt, NULL, "", { OPTION_CALLBACK, 0, "not", &opt, NULL, "",
PARSE_OPT_NOARG | PARSE_OPT_NONEG, not_callback }, PARSE_OPT_NOARG | PARSE_OPT_NONEG, not_callback },
{ OPTION_CALLBACK, '(', NULL, &opt, NULL, "", { OPTION_CALLBACK, '(', NULL, &opt, NULL, "",
@ -729,7 +729,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
close_callback }, close_callback },
OPT__QUIET(&opt.status_only, OPT__QUIET(&opt.status_only,
N_("indicate hit with exit status without output")), N_("indicate hit with exit status without output")),
OPT_BOOLEAN(0, "all-match", &opt.all_match, OPT_BOOL(0, "all-match", &opt.all_match,
N_("show only matches from files that match all patterns")), N_("show only matches from files that match all patterns")),
{ OPTION_SET_INT, 0, "debug", &opt.debug, NULL, { OPTION_SET_INT, 0, "debug", &opt.debug, NULL,
N_("show parse tree for grep expression"), N_("show parse tree for grep expression"),
@ -738,8 +738,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
{ OPTION_STRING, 'O', "open-files-in-pager", &show_in_pager, { OPTION_STRING, 'O', "open-files-in-pager", &show_in_pager,
N_("pager"), N_("show matching files in the pager"), N_("pager"), N_("show matching files in the pager"),
PARSE_OPT_OPTARG, NULL, (intptr_t)default_pager }, PARSE_OPT_OPTARG, NULL, (intptr_t)default_pager },
OPT_BOOLEAN(0, "ext-grep", &external_grep_allowed__ignored, OPT_BOOL(0, "ext-grep", &external_grep_allowed__ignored,
N_("allow calling of grep(1) (ignored by this build)")), N_("allow calling of grep(1) (ignored by this build)")),
{ OPTION_CALLBACK, 0, "help-all", &options, NULL, N_("show usage"), { OPTION_CALLBACK, 0, "help-all", &options, NULL, N_("show usage"),
PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, help_callback }, PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, help_callback },
OPT_END() OPT_END()

Просмотреть файл

@ -70,10 +70,10 @@ static const char *vpath;
static const struct option hash_object_options[] = { static const struct option hash_object_options[] = {
OPT_STRING('t', NULL, &type, N_("type"), N_("object type")), OPT_STRING('t', NULL, &type, N_("type"), N_("object type")),
OPT_BOOLEAN('w', NULL, &write_object, N_("write the object into the object database")), OPT_BOOL('w', NULL, &write_object, N_("write the object into the object database")),
OPT_BOOLEAN( 0 , "stdin", &hashstdin, N_("read the object from stdin")), OPT_COUNTUP( 0 , "stdin", &hashstdin, N_("read the object from stdin")),
OPT_BOOLEAN( 0 , "stdin-paths", &stdin_paths, N_("read file names from stdin")), OPT_BOOL( 0 , "stdin-paths", &stdin_paths, N_("read file names from stdin")),
OPT_BOOLEAN( 0 , "no-filters", &no_filters, N_("store file as is without filters")), OPT_BOOL( 0 , "no-filters", &no_filters, N_("store file as is without filters")),
OPT_STRING( 0 , "path", &vpath, N_("file"), N_("process file as it were from this path")), OPT_STRING( 0 , "path", &vpath, N_("file"), N_("process file as it were from this path")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -121,7 +121,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
static struct line_opt_callback_data line_cb = {NULL, NULL, STRING_LIST_INIT_DUP}; static struct line_opt_callback_data line_cb = {NULL, NULL, STRING_LIST_INIT_DUP};
const struct option builtin_log_options[] = { const struct option builtin_log_options[] = {
OPT_BOOL(0, "quiet", &quiet, N_("suppress diff output")), OPT__QUIET(&quiet, N_("suppress diff output")),
OPT_BOOL(0, "source", &source, N_("show source")), OPT_BOOL(0, "source", &source, N_("show source")),
OPT_BOOL(0, "use-mailmap", &mailmap, N_("Use mail map file")), OPT_BOOL(0, "use-mailmap", &mailmap, N_("Use mail map file")),
{ OPTION_CALLBACK, 0, "decorate", NULL, NULL, N_("decorate options"), { OPTION_CALLBACK, 0, "decorate", NULL, NULL, N_("decorate options"),
@ -1179,13 +1179,13 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
{ OPTION_CALLBACK, 'k', "keep-subject", &rev, NULL, { OPTION_CALLBACK, 'k', "keep-subject", &rev, NULL,
N_("don't strip/add [PATCH]"), N_("don't strip/add [PATCH]"),
PARSE_OPT_NOARG | PARSE_OPT_NONEG, keep_callback }, PARSE_OPT_NOARG | PARSE_OPT_NONEG, keep_callback },
OPT_BOOLEAN(0, "no-binary", &no_binary_diff, OPT_BOOL(0, "no-binary", &no_binary_diff,
N_("don't output binary diffs")), N_("don't output binary diffs")),
OPT_BOOLEAN(0, "ignore-if-in-upstream", &ignore_if_in_upstream, OPT_BOOL(0, "ignore-if-in-upstream", &ignore_if_in_upstream,
N_("don't include a patch matching a commit upstream")), N_("don't include a patch matching a commit upstream")),
{ OPTION_BOOLEAN, 'p', "no-stat", &use_patch_format, NULL, { OPTION_SET_INT, 'p', "no-stat", &use_patch_format, NULL,
N_("show patch format instead of default (patch + stat)"), N_("show patch format instead of default (patch + stat)"),
PARSE_OPT_NONEG | PARSE_OPT_NOARG }, PARSE_OPT_NONEG | PARSE_OPT_NOARG, NULL, 1},
OPT_GROUP(N_("Messaging")), OPT_GROUP(N_("Messaging")),
{ OPTION_CALLBACK, 0, "add-header", NULL, N_("header"), { OPTION_CALLBACK, 0, "add-header", NULL, N_("header"),
N_("add email header"), 0, header_callback }, N_("add email header"), 0, header_callback },
@ -1210,8 +1210,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
PARSE_OPT_OPTARG, thread_callback }, PARSE_OPT_OPTARG, thread_callback },
OPT_STRING(0, "signature", &signature, N_("signature"), OPT_STRING(0, "signature", &signature, N_("signature"),
N_("add a signature")), N_("add a signature")),
OPT_BOOLEAN(0, "quiet", &quiet, OPT__QUIET(&quiet, N_("don't print the patch filenames")),
N_("don't print the patch filenames")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -461,24 +461,24 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
{ OPTION_CALLBACK, 'z', NULL, NULL, NULL, { OPTION_CALLBACK, 'z', NULL, NULL, NULL,
N_("paths are separated with NUL character"), N_("paths are separated with NUL character"),
PARSE_OPT_NOARG, option_parse_z }, PARSE_OPT_NOARG, option_parse_z },
OPT_BOOLEAN('t', NULL, &show_tag, OPT_BOOL('t', NULL, &show_tag,
N_("identify the file status with tags")), N_("identify the file status with tags")),
OPT_BOOLEAN('v', NULL, &show_valid_bit, OPT_BOOL('v', NULL, &show_valid_bit,
N_("use lowercase letters for 'assume unchanged' files")), N_("use lowercase letters for 'assume unchanged' files")),
OPT_BOOLEAN('c', "cached", &show_cached, OPT_BOOL('c', "cached", &show_cached,
N_("show cached files in the output (default)")), N_("show cached files in the output (default)")),
OPT_BOOLEAN('d', "deleted", &show_deleted, OPT_BOOL('d', "deleted", &show_deleted,
N_("show deleted files in the output")), N_("show deleted files in the output")),
OPT_BOOLEAN('m', "modified", &show_modified, OPT_BOOL('m', "modified", &show_modified,
N_("show modified files in the output")), N_("show modified files in the output")),
OPT_BOOLEAN('o', "others", &show_others, OPT_BOOL('o', "others", &show_others,
N_("show other files in the output")), N_("show other files in the output")),
OPT_BIT('i', "ignored", &dir.flags, OPT_BIT('i', "ignored", &dir.flags,
N_("show ignored files in the output"), N_("show ignored files in the output"),
DIR_SHOW_IGNORED), DIR_SHOW_IGNORED),
OPT_BOOLEAN('s', "stage", &show_stage, OPT_BOOL('s', "stage", &show_stage,
N_("show staged contents' object name in the output")), N_("show staged contents' object name in the output")),
OPT_BOOLEAN('k', "killed", &show_killed, OPT_BOOL('k', "killed", &show_killed,
N_("show files on the filesystem that need to be removed")), N_("show files on the filesystem that need to be removed")),
OPT_BIT(0, "directory", &dir.flags, OPT_BIT(0, "directory", &dir.flags,
N_("show 'other' directories' name only"), N_("show 'other' directories' name only"),
@ -486,9 +486,9 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
OPT_NEGBIT(0, "empty-directory", &dir.flags, OPT_NEGBIT(0, "empty-directory", &dir.flags,
N_("don't show empty directories"), N_("don't show empty directories"),
DIR_HIDE_EMPTY_DIRECTORIES), DIR_HIDE_EMPTY_DIRECTORIES),
OPT_BOOLEAN('u', "unmerged", &show_unmerged, OPT_BOOL('u', "unmerged", &show_unmerged,
N_("show unmerged files in the output")), N_("show unmerged files in the output")),
OPT_BOOLEAN(0, "resolve-undo", &show_resolve_undo, OPT_BOOL(0, "resolve-undo", &show_resolve_undo,
N_("show resolve-undo information")), N_("show resolve-undo information")),
{ OPTION_CALLBACK, 'x', "exclude", &exclude_list, N_("pattern"), { OPTION_CALLBACK, 'x', "exclude", &exclude_list, N_("pattern"),
N_("skip files matching pattern"), N_("skip files matching pattern"),
@ -504,12 +504,12 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
{ OPTION_SET_INT, 0, "full-name", &prefix_len, NULL, { OPTION_SET_INT, 0, "full-name", &prefix_len, NULL,
N_("make the output relative to the project top directory"), N_("make the output relative to the project top directory"),
PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL }, PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL },
OPT_BOOLEAN(0, "error-unmatch", &error_unmatch, OPT_BOOL(0, "error-unmatch", &error_unmatch,
N_("if any <file> is not in the index, treat this as an error")), N_("if any <file> is not in the index, treat this as an error")),
OPT_STRING(0, "with-tree", &with_tree, N_("tree-ish"), OPT_STRING(0, "with-tree", &with_tree, N_("tree-ish"),
N_("pretend that paths removed since <tree-ish> are still present")), N_("pretend that paths removed since <tree-ish> are still present")),
OPT__ABBREV(&abbrev), OPT__ABBREV(&abbrev),
OPT_BOOLEAN(0, "debug", &debug_mode, N_("show debugging data")), OPT_BOOL(0, "debug", &debug_mode, N_("show debugging data")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -138,9 +138,9 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
LS_NAME_ONLY), LS_NAME_ONLY),
OPT_SET_INT(0, "full-name", &chomp_prefix, OPT_SET_INT(0, "full-name", &chomp_prefix,
N_("use full path names"), 0), N_("use full path names"), 0),
OPT_BOOLEAN(0, "full-tree", &full_tree, OPT_BOOL(0, "full-tree", &full_tree,
N_("list entire tree; not just current directory " N_("list entire tree; not just current directory "
"(implies --full-name)")), "(implies --full-name)")),
OPT__ABBREV(&abbrev), OPT__ABBREV(&abbrev),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -95,11 +95,11 @@ int cmd_merge_base(int argc, const char **argv, const char *prefix)
int is_ancestor = 0; int is_ancestor = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('a', "all", &show_all, N_("output all common ancestors")), OPT_BOOL('a', "all", &show_all, N_("output all common ancestors")),
OPT_BOOLEAN(0, "octopus", &octopus, N_("find ancestors for a single n-way merge")), OPT_BOOL(0, "octopus", &octopus, N_("find ancestors for a single n-way merge")),
OPT_BOOLEAN(0, "independent", &reduce, N_("list revs not reachable from others")), OPT_BOOL(0, "independent", &reduce, N_("list revs not reachable from others")),
OPT_BOOLEAN(0, "is-ancestor", &is_ancestor, OPT_BOOL(0, "is-ancestor", &is_ancestor,
N_("is the first one ancestor of the other?")), N_("is the first one ancestor of the other?")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -30,7 +30,7 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix)
int quiet = 0; int quiet = 0;
int prefixlen = 0; int prefixlen = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('p', "stdout", &to_stdout, N_("send results to standard output")), OPT_BOOL('p', "stdout", &to_stdout, N_("send results to standard output")),
OPT_SET_INT(0, "diff3", &xmp.style, N_("use a diff3 based merge"), XDL_MERGE_DIFF3), OPT_SET_INT(0, "diff3", &xmp.style, N_("use a diff3 based merge"), XDL_MERGE_DIFF3),
OPT_SET_INT(0, "ours", &xmp.favor, N_("for conflicts, use our version"), OPT_SET_INT(0, "ours", &xmp.favor, N_("for conflicts, use our version"),
XDL_MERGE_FAVOR_OURS), XDL_MERGE_FAVOR_OURS),

Просмотреть файл

@ -197,15 +197,15 @@ static struct option builtin_merge_options[] = {
{ OPTION_CALLBACK, 'n', NULL, NULL, NULL, { OPTION_CALLBACK, 'n', NULL, NULL, NULL,
N_("do not show a diffstat at the end of the merge"), N_("do not show a diffstat at the end of the merge"),
PARSE_OPT_NOARG, option_parse_n }, PARSE_OPT_NOARG, option_parse_n },
OPT_BOOLEAN(0, "stat", &show_diffstat, OPT_BOOL(0, "stat", &show_diffstat,
N_("show a diffstat at the end of the merge")), N_("show a diffstat at the end of the merge")),
OPT_BOOLEAN(0, "summary", &show_diffstat, N_("(synonym to --stat)")), OPT_BOOL(0, "summary", &show_diffstat, N_("(synonym to --stat)")),
{ OPTION_INTEGER, 0, "log", &shortlog_len, N_("n"), { OPTION_INTEGER, 0, "log", &shortlog_len, N_("n"),
N_("add (at most <n>) entries from shortlog to merge commit message"), N_("add (at most <n>) entries from shortlog to merge commit message"),
PARSE_OPT_OPTARG, NULL, DEFAULT_MERGE_LOG_LEN }, PARSE_OPT_OPTARG, NULL, DEFAULT_MERGE_LOG_LEN },
OPT_BOOLEAN(0, "squash", &squash, OPT_BOOL(0, "squash", &squash,
N_("create a single commit instead of doing a merge")), N_("create a single commit instead of doing a merge")),
OPT_BOOLEAN(0, "commit", &option_commit, OPT_BOOL(0, "commit", &option_commit,
N_("perform a commit if the merge succeeds (default)")), N_("perform a commit if the merge succeeds (default)")),
OPT_BOOL('e', "edit", &option_edit, OPT_BOOL('e', "edit", &option_edit,
N_("edit message before committing")), N_("edit message before committing")),
@ -224,12 +224,12 @@ static struct option builtin_merge_options[] = {
N_("merge commit message (for a non-fast-forward merge)"), N_("merge commit message (for a non-fast-forward merge)"),
option_parse_message), option_parse_message),
OPT__VERBOSITY(&verbosity), OPT__VERBOSITY(&verbosity),
OPT_BOOLEAN(0, "abort", &abort_current_merge, OPT_BOOL(0, "abort", &abort_current_merge,
N_("abort the current in-progress merge")), N_("abort the current in-progress merge")),
OPT_SET_INT(0, "progress", &show_progress, N_("force progress reporting"), 1), OPT_SET_INT(0, "progress", &show_progress, N_("force progress reporting"), 1),
{ OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key id"), { OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key id"),
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
OPT_BOOLEAN(0, "overwrite-ignore", &overwrite_ignore, N_("update ignored files (default)")), OPT_BOOL(0, "overwrite-ignore", &overwrite_ignore, N_("update ignored files (default)")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -62,7 +62,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
OPT__VERBOSE(&verbose, N_("be verbose")), OPT__VERBOSE(&verbose, N_("be verbose")),
OPT__DRY_RUN(&show_only, N_("dry run")), OPT__DRY_RUN(&show_only, N_("dry run")),
OPT__FORCE(&force, N_("force move/rename even if target exists")), OPT__FORCE(&force, N_("force move/rename even if target exists")),
OPT_BOOLEAN('k', NULL, &ignore_errors, N_("skip move/rename errors")), OPT_BOOL('k', NULL, &ignore_errors, N_("skip move/rename errors")),
OPT_END(), OPT_END(),
}; };
const char **source, **destination, **dest_path; const char **source, **destination, **dest_path;

Просмотреть файл

@ -310,15 +310,15 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
int all = 0, transform_stdin = 0, allow_undefined = 1, always = 0, peel_tag = 0; int all = 0, transform_stdin = 0, allow_undefined = 1, always = 0, peel_tag = 0;
struct name_ref_data data = { 0, 0, NULL }; struct name_ref_data data = { 0, 0, NULL };
struct option opts[] = { struct option opts[] = {
OPT_BOOLEAN(0, "name-only", &data.name_only, N_("print only names (no SHA-1)")), OPT_BOOL(0, "name-only", &data.name_only, N_("print only names (no SHA-1)")),
OPT_BOOLEAN(0, "tags", &data.tags_only, N_("only use tags to name the commits")), OPT_BOOL(0, "tags", &data.tags_only, N_("only use tags to name the commits")),
OPT_STRING(0, "refs", &data.ref_filter, N_("pattern"), OPT_STRING(0, "refs", &data.ref_filter, N_("pattern"),
N_("only use refs matching <pattern>")), N_("only use refs matching <pattern>")),
OPT_GROUP(""), OPT_GROUP(""),
OPT_BOOLEAN(0, "all", &all, N_("list all commits reachable from all refs")), OPT_BOOL(0, "all", &all, N_("list all commits reachable from all refs")),
OPT_BOOLEAN(0, "stdin", &transform_stdin, N_("read from stdin")), OPT_BOOL(0, "stdin", &transform_stdin, N_("read from stdin")),
OPT_BOOLEAN(0, "undefined", &allow_undefined, N_("allow to print `undefined` names")), OPT_BOOL(0, "undefined", &allow_undefined, N_("allow to print `undefined` names (default)")),
OPT_BOOLEAN(0, "always", &always, OPT_BOOL(0, "always", &always,
N_("show abbreviated commit object as fallback")), N_("show abbreviated commit object as fallback")),
{ {
/* A Hidden OPT_BOOL */ /* A Hidden OPT_BOOL */
@ -331,7 +331,7 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
git_config(git_default_config, NULL); git_config(git_default_config, NULL);
argc = parse_options(argc, argv, prefix, opts, name_rev_usage, 0); argc = parse_options(argc, argv, prefix, opts, name_rev_usage, 0);
if (!!all + !!transform_stdin + !!argc > 1) { if (all + transform_stdin + !!argc > 1) {
error("Specify either a list, or --all, not both!"); error("Specify either a list, or --all, not both!");
usage_with_options(name_rev_usage, opts); usage_with_options(name_rev_usage, opts);
} }

Просмотреть файл

@ -483,7 +483,7 @@ static int copy(int argc, const char **argv, const char *prefix)
const char *rewrite_cmd = NULL; const char *rewrite_cmd = NULL;
struct option options[] = { struct option options[] = {
OPT__FORCE(&force, N_("replace existing notes")), OPT__FORCE(&force, N_("replace existing notes")),
OPT_BOOLEAN(0, "stdin", &from_stdin, N_("read objects from stdin")), OPT_BOOL(0, "stdin", &from_stdin, N_("read objects from stdin")),
OPT_STRING(0, "for-rewrite", &rewrite_cmd, N_("command"), OPT_STRING(0, "for-rewrite", &rewrite_cmd, N_("command"),
N_("load rewriting config for <command> (implies " N_("load rewriting config for <command> (implies "
"--stdin)")), "--stdin)")),
@ -739,13 +739,13 @@ static int merge(int argc, const char **argv, const char *prefix)
N_("resolve notes conflicts using the given strategy " N_("resolve notes conflicts using the given strategy "
"(manual/ours/theirs/union/cat_sort_uniq)")), "(manual/ours/theirs/union/cat_sort_uniq)")),
OPT_GROUP(N_("Committing unmerged notes")), OPT_GROUP(N_("Committing unmerged notes")),
{ OPTION_BOOLEAN, 0, "commit", &do_commit, NULL, { OPTION_SET_INT, 0, "commit", &do_commit, NULL,
N_("finalize notes merge by committing unmerged notes"), N_("finalize notes merge by committing unmerged notes"),
PARSE_OPT_NOARG | PARSE_OPT_NONEG }, PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1},
OPT_GROUP(N_("Aborting notes merge resolution")), OPT_GROUP(N_("Aborting notes merge resolution")),
{ OPTION_BOOLEAN, 0, "abort", &do_abort, NULL, { OPTION_SET_INT, 0, "abort", &do_abort, NULL,
N_("abort notes merge"), N_("abort notes merge"),
PARSE_OPT_NOARG | PARSE_OPT_NONEG }, PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1},
OPT_END() OPT_END()
}; };
@ -853,7 +853,7 @@ static int remove_cmd(int argc, const char **argv, const char *prefix)
OPT_BIT(0, "ignore-missing", &flag, OPT_BIT(0, "ignore-missing", &flag,
N_("attempt to remove non-existent note is not an error"), N_("attempt to remove non-existent note is not an error"),
IGNORE_MISSING), IGNORE_MISSING),
OPT_BOOLEAN(0, "stdin", &from_stdin, OPT_BOOL(0, "stdin", &from_stdin,
N_("read object names from the standard input")), N_("read object names from the standard input")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -446,15 +446,15 @@ int cmd_push(int argc, const char **argv, const char *prefix)
OPT_BIT( 0 , "all", &flags, N_("push all refs"), TRANSPORT_PUSH_ALL), OPT_BIT( 0 , "all", &flags, N_("push all refs"), TRANSPORT_PUSH_ALL),
OPT_BIT( 0 , "mirror", &flags, N_("mirror all refs"), OPT_BIT( 0 , "mirror", &flags, N_("mirror all refs"),
(TRANSPORT_PUSH_MIRROR|TRANSPORT_PUSH_FORCE)), (TRANSPORT_PUSH_MIRROR|TRANSPORT_PUSH_FORCE)),
OPT_BOOLEAN( 0, "delete", &deleterefs, N_("delete refs")), OPT_BOOL( 0, "delete", &deleterefs, N_("delete refs")),
OPT_BOOLEAN( 0 , "tags", &tags, N_("push tags (can't be used with --all or --mirror)")), OPT_BOOL( 0 , "tags", &tags, N_("push tags (can't be used with --all or --mirror)")),
OPT_BIT('n' , "dry-run", &flags, N_("dry run"), TRANSPORT_PUSH_DRY_RUN), OPT_BIT('n' , "dry-run", &flags, N_("dry run"), TRANSPORT_PUSH_DRY_RUN),
OPT_BIT( 0, "porcelain", &flags, N_("machine-readable output"), TRANSPORT_PUSH_PORCELAIN), OPT_BIT( 0, "porcelain", &flags, N_("machine-readable output"), TRANSPORT_PUSH_PORCELAIN),
OPT_BIT('f', "force", &flags, N_("force updates"), TRANSPORT_PUSH_FORCE), OPT_BIT('f', "force", &flags, N_("force updates"), TRANSPORT_PUSH_FORCE),
{ OPTION_CALLBACK, 0, "recurse-submodules", &flags, N_("check"), { OPTION_CALLBACK, 0, "recurse-submodules", &flags, N_("check"),
N_("control recursive pushing of submodules"), N_("control recursive pushing of submodules"),
PARSE_OPT_OPTARG, option_parse_recurse_submodules }, PARSE_OPT_OPTARG, option_parse_recurse_submodules },
OPT_BOOLEAN( 0 , "thin", &thin, N_("use thin pack")), OPT_BOOL( 0 , "thin", &thin, N_("use thin pack")),
OPT_STRING( 0 , "receive-pack", &receivepack, "receive-pack", N_("receive pack program")), OPT_STRING( 0 , "receive-pack", &receivepack, "receive-pack", N_("receive pack program")),
OPT_STRING( 0 , "exec", &receivepack, "receive-pack", N_("receive pack program")), OPT_STRING( 0 , "exec", &receivepack, "receive-pack", N_("receive pack program")),
OPT_BIT('u', "set-upstream", &flags, N_("set upstream for git pull/status"), OPT_BIT('u', "set-upstream", &flags, N_("set upstream for git pull/status"),

Просмотреть файл

@ -160,7 +160,7 @@ static int add(int argc, const char **argv)
int i; int i;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('f', "fetch", &fetch, N_("fetch the remote branches")), OPT_BOOL('f', "fetch", &fetch, N_("fetch the remote branches")),
OPT_SET_INT(0, "tags", &fetch_tags, OPT_SET_INT(0, "tags", &fetch_tags,
N_("import all tags and associated objects when fetching"), N_("import all tags and associated objects when fetching"),
TAGS_SET), TAGS_SET),
@ -1088,7 +1088,7 @@ static int show(int argc, const char **argv)
{ {
int no_query = 0, result = 0, query_flag = 0; int no_query = 0, result = 0, query_flag = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('n', NULL, &no_query, N_("do not query remotes")), OPT_BOOL('n', NULL, &no_query, N_("do not query remotes")),
OPT_END() OPT_END()
}; };
struct ref_states states; struct ref_states states;
@ -1195,10 +1195,10 @@ static int set_head(int argc, const char **argv)
char *head_name = NULL; char *head_name = NULL;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('a', "auto", &opt_a, OPT_BOOL('a', "auto", &opt_a,
N_("set refs/remotes/<name>/HEAD according to remote")), N_("set refs/remotes/<name>/HEAD according to remote")),
OPT_BOOLEAN('d', "delete", &opt_d, OPT_BOOL('d', "delete", &opt_d,
N_("delete refs/remotes/<name>/HEAD")), N_("delete refs/remotes/<name>/HEAD")),
OPT_END() OPT_END()
}; };
argc = parse_options(argc, argv, NULL, options, builtin_remote_sethead_usage, argc = parse_options(argc, argv, NULL, options, builtin_remote_sethead_usage,
@ -1317,8 +1317,8 @@ static int update(int argc, const char **argv)
{ {
int i, prune = 0; int i, prune = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('p', "prune", &prune, OPT_BOOL('p', "prune", &prune,
N_("prune remotes after fetching")), N_("prune remotes after fetching")),
OPT_END() OPT_END()
}; };
const char **fetch_argv; const char **fetch_argv;
@ -1404,7 +1404,7 @@ static int set_branches(int argc, const char **argv)
{ {
int add_mode = 0; int add_mode = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('\0', "add", &add_mode, N_("add branch")), OPT_BOOL('\0', "add", &add_mode, N_("add branch")),
OPT_END() OPT_END()
}; };
@ -1432,11 +1432,11 @@ static int set_url(int argc, const char **argv)
int urlset_nr; int urlset_nr;
struct strbuf name_buf = STRBUF_INIT; struct strbuf name_buf = STRBUF_INIT;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('\0', "push", &push_mode, OPT_BOOL('\0', "push", &push_mode,
N_("manipulate push URLs")), N_("manipulate push URLs")),
OPT_BOOLEAN('\0', "add", &add_mode, OPT_BOOL('\0', "add", &add_mode,
N_("add URL")), N_("add URL")),
OPT_BOOLEAN('\0', "delete", &delete_mode, OPT_BOOL('\0', "delete", &delete_mode,
N_("delete URLs")), N_("delete URLs")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -118,9 +118,9 @@ int cmd_replace(int argc, const char **argv, const char *prefix)
{ {
int list = 0, delete = 0, force = 0; int list = 0, delete = 0, force = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN('l', NULL, &list, N_("list replace refs")), OPT_BOOL('l', NULL, &list, N_("list replace refs")),
OPT_BOOLEAN('d', NULL, &delete, N_("delete replace refs")), OPT_BOOL('d', NULL, &delete, N_("delete replace refs")),
OPT_BOOLEAN('f', NULL, &force, N_("replace the ref if it exists")), OPT_BOOL('f', NULL, &force, N_("replace the ref if it exists")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -258,7 +258,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
N_("reset HEAD, index and working tree"), MERGE), N_("reset HEAD, index and working tree"), MERGE),
OPT_SET_INT(0, "keep", &reset_type, OPT_SET_INT(0, "keep", &reset_type,
N_("reset HEAD but keep local changes"), KEEP), N_("reset HEAD but keep local changes"), KEEP),
OPT_BOOLEAN('p', "patch", &patch_mode, N_("select hunks interactively")), OPT_BOOL('p', "patch", &patch_mode, N_("select hunks interactively")),
OPT_END() OPT_END()
}; };

Просмотреть файл

@ -346,9 +346,9 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
NULL NULL
}; };
static struct option parseopt_opts[] = { static struct option parseopt_opts[] = {
OPT_BOOLEAN(0, "keep-dashdash", &keep_dashdash, OPT_BOOL(0, "keep-dashdash", &keep_dashdash,
N_("keep the `--` passed as an arg")), N_("keep the `--` passed as an arg")),
OPT_BOOLEAN(0, "stop-at-non-option", &stop_at_non_option, OPT_BOOL(0, "stop-at-non-option", &stop_at_non_option,
N_("stop parsing after the " N_("stop parsing after the "
"first non-option argument")), "first non-option argument")),
OPT_END(), OPT_END(),

Просмотреть файл

@ -71,44 +71,19 @@ static void verify_opt_compatible(const char *me, const char *base_opt, ...)
die(_("%s: %s cannot be used with %s"), me, this_opt, base_opt); die(_("%s: %s cannot be used with %s"), me, this_opt, base_opt);
} }
LAST_ARG_MUST_BE_NULL
static void verify_opt_mutually_compatible(const char *me, ...)
{
const char *opt1, *opt2 = NULL;
va_list ap;
va_start(ap, me);
while ((opt1 = va_arg(ap, const char *))) {
if (va_arg(ap, int))
break;
}
if (opt1) {
while ((opt2 = va_arg(ap, const char *))) {
if (va_arg(ap, int))
break;
}
}
va_end(ap);
if (opt1 && opt2)
die(_("%s: %s cannot be used with %s"), me, opt1, opt2);
}
static void parse_args(int argc, const char **argv, struct replay_opts *opts) static void parse_args(int argc, const char **argv, struct replay_opts *opts)
{ {
const char * const * usage_str = revert_or_cherry_pick_usage(opts); const char * const * usage_str = revert_or_cherry_pick_usage(opts);
const char *me = action_name(opts); const char *me = action_name(opts);
int remove_state = 0; int cmd = 0;
int contin = 0;
int rollback = 0;
struct option options[] = { struct option options[] = {
OPT_BOOLEAN(0, "quit", &remove_state, N_("end revert or cherry-pick sequence")), OPT_CMDMODE(0, "quit", &cmd, N_("end revert or cherry-pick sequence"), 'q'),
OPT_BOOLEAN(0, "continue", &contin, N_("resume revert or cherry-pick sequence")), OPT_CMDMODE(0, "continue", &cmd, N_("resume revert or cherry-pick sequence"), 'c'),
OPT_BOOLEAN(0, "abort", &rollback, N_("cancel revert or cherry-pick sequence")), OPT_CMDMODE(0, "abort", &cmd, N_("cancel revert or cherry-pick sequence"), 'a'),
OPT_BOOLEAN('n', "no-commit", &opts->no_commit, N_("don't automatically commit")), OPT_BOOL('n', "no-commit", &opts->no_commit, N_("don't automatically commit")),
OPT_BOOLEAN('e', "edit", &opts->edit, N_("edit the commit message")), OPT_BOOL('e', "edit", &opts->edit, N_("edit the commit message")),
OPT_NOOP_NOARG('r', NULL), OPT_NOOP_NOARG('r', NULL),
OPT_BOOLEAN('s', "signoff", &opts->signoff, N_("add Signed-off-by:")), OPT_BOOL('s', "signoff", &opts->signoff, N_("add Signed-off-by:")),
OPT_INTEGER('m', "mainline", &opts->mainline, N_("parent number")), OPT_INTEGER('m', "mainline", &opts->mainline, N_("parent number")),
OPT_RERERE_AUTOUPDATE(&opts->allow_rerere_auto), OPT_RERERE_AUTOUPDATE(&opts->allow_rerere_auto),
OPT_STRING(0, "strategy", &opts->strategy, N_("strategy"), N_("merge strategy")), OPT_STRING(0, "strategy", &opts->strategy, N_("strategy"), N_("merge strategy")),
@ -124,11 +99,11 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
if (opts->action == REPLAY_PICK) { if (opts->action == REPLAY_PICK) {
struct option cp_extra[] = { struct option cp_extra[] = {
OPT_BOOLEAN('x', NULL, &opts->record_origin, N_("append commit name")), OPT_BOOL('x', NULL, &opts->record_origin, N_("append commit name")),
OPT_BOOLEAN(0, "ff", &opts->allow_ff, N_("allow fast-forward")), OPT_BOOL(0, "ff", &opts->allow_ff, N_("allow fast-forward")),
OPT_BOOLEAN(0, "allow-empty", &opts->allow_empty, N_("preserve initially empty commits")), OPT_BOOL(0, "allow-empty", &opts->allow_empty, N_("preserve initially empty commits")),
OPT_BOOLEAN(0, "allow-empty-message", &opts->allow_empty_message, N_("allow commits with empty messages")), OPT_BOOL(0, "allow-empty-message", &opts->allow_empty_message, N_("allow commits with empty messages")),
OPT_BOOLEAN(0, "keep-redundant-commits", &opts->keep_redundant_commits, N_("keep redundant, empty commits")), OPT_BOOL(0, "keep-redundant-commits", &opts->keep_redundant_commits, N_("keep redundant, empty commits")),
OPT_END(), OPT_END(),
}; };
if (parse_options_concat(options, ARRAY_SIZE(options), cp_extra)) if (parse_options_concat(options, ARRAY_SIZE(options), cp_extra))
@ -139,23 +114,16 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_ARGV0 |
PARSE_OPT_KEEP_UNKNOWN); PARSE_OPT_KEEP_UNKNOWN);
/* Check for incompatible subcommands */
verify_opt_mutually_compatible(me,
"--quit", remove_state,
"--continue", contin,
"--abort", rollback,
NULL);
/* implies allow_empty */ /* implies allow_empty */
if (opts->keep_redundant_commits) if (opts->keep_redundant_commits)
opts->allow_empty = 1; opts->allow_empty = 1;
/* Set the subcommand */ /* Set the subcommand */
if (remove_state) if (cmd == 'q')
opts->subcommand = REPLAY_REMOVE_STATE; opts->subcommand = REPLAY_REMOVE_STATE;
else if (contin) else if (cmd == 'c')
opts->subcommand = REPLAY_CONTINUE; opts->subcommand = REPLAY_CONTINUE;
else if (rollback) else if (cmd == 'a')
opts->subcommand = REPLAY_ROLLBACK; opts->subcommand = REPLAY_ROLLBACK;
else else
opts->subcommand = REPLAY_NONE; opts->subcommand = REPLAY_NONE;

Просмотреть файл

@ -267,10 +267,10 @@ static int ignore_unmatch = 0;
static struct option builtin_rm_options[] = { static struct option builtin_rm_options[] = {
OPT__DRY_RUN(&show_only, N_("dry run")), OPT__DRY_RUN(&show_only, N_("dry run")),
OPT__QUIET(&quiet, N_("do not list removed files")), OPT__QUIET(&quiet, N_("do not list removed files")),
OPT_BOOLEAN( 0 , "cached", &index_only, N_("only remove from the index")), OPT_BOOL( 0 , "cached", &index_only, N_("only remove from the index")),
OPT__FORCE(&force, N_("override the up-to-date check")), OPT__FORCE(&force, N_("override the up-to-date check")),
OPT_BOOLEAN('r', NULL, &recursive, N_("allow recursive removal")), OPT_BOOL('r', NULL, &recursive, N_("allow recursive removal")),
OPT_BOOLEAN( 0 , "ignore-unmatch", &ignore_unmatch, OPT_BOOL( 0 , "ignore-unmatch", &ignore_unmatch,
N_("exit with a zero status even if nothing matched")), N_("exit with a zero status even if nothing matched")),
OPT_END(), OPT_END(),
}; };

Просмотреть файл

@ -224,12 +224,12 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
int nongit = !startup_info->have_repository; int nongit = !startup_info->have_repository;
static const struct option options[] = { static const struct option options[] = {
OPT_BOOLEAN('n', "numbered", &log.sort_by_number, OPT_BOOL('n', "numbered", &log.sort_by_number,
N_("sort output according to the number of commits per author")), N_("sort output according to the number of commits per author")),
OPT_BOOLEAN('s', "summary", &log.summary, OPT_BOOL('s', "summary", &log.summary,
N_("Suppress commit descriptions, only provides commit count")), N_("Suppress commit descriptions, only provides commit count")),
OPT_BOOLEAN('e', "email", &log.email, OPT_BOOL('e', "email", &log.email,
N_("Show the email address of each author")), N_("Show the email address of each author")),
{ OPTION_CALLBACK, 'w', NULL, &log, N_("w[,i1[,i2]]"), { OPTION_CALLBACK, 'w', NULL, &log, N_("w[,i1[,i2]]"),
N_("Linewrap output"), PARSE_OPT_OPTARG, &parse_wrap_args }, N_("Linewrap output"), PARSE_OPT_OPTARG, &parse_wrap_args },
OPT_END(), OPT_END(),

Просмотреть файл

@ -646,30 +646,30 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
int dense = 1; int dense = 1;
const char *reflog_base = NULL; const char *reflog_base = NULL;
struct option builtin_show_branch_options[] = { struct option builtin_show_branch_options[] = {
OPT_BOOLEAN('a', "all", &all_heads, OPT_BOOL('a', "all", &all_heads,
N_("show remote-tracking and local branches")), N_("show remote-tracking and local branches")),
OPT_BOOLEAN('r', "remotes", &all_remotes, OPT_BOOL('r', "remotes", &all_remotes,
N_("show remote-tracking branches")), N_("show remote-tracking branches")),
OPT__COLOR(&showbranch_use_color, OPT__COLOR(&showbranch_use_color,
N_("color '*!+-' corresponding to the branch")), N_("color '*!+-' corresponding to the branch")),
{ OPTION_INTEGER, 0, "more", &extra, N_("n"), { OPTION_INTEGER, 0, "more", &extra, N_("n"),
N_("show <n> more commits after the common ancestor"), N_("show <n> more commits after the common ancestor"),
PARSE_OPT_OPTARG, NULL, (intptr_t)1 }, PARSE_OPT_OPTARG, NULL, (intptr_t)1 },
OPT_SET_INT(0, "list", &extra, N_("synonym to more=-1"), -1), OPT_SET_INT(0, "list", &extra, N_("synonym to more=-1"), -1),
OPT_BOOLEAN(0, "no-name", &no_name, N_("suppress naming strings")), OPT_BOOL(0, "no-name", &no_name, N_("suppress naming strings")),
OPT_BOOLEAN(0, "current", &with_current_branch, OPT_BOOL(0, "current", &with_current_branch,
N_("include the current branch")), N_("include the current branch")),
OPT_BOOLEAN(0, "sha1-name", &sha1_name, OPT_BOOL(0, "sha1-name", &sha1_name,
N_("name commits with their object names")), N_("name commits with their object names")),
OPT_BOOLEAN(0, "merge-base", &merge_base, OPT_BOOL(0, "merge-base", &merge_base,
N_("show possible merge bases")), N_("show possible merge bases")),
OPT_BOOLEAN(0, "independent", &independent, OPT_BOOL(0, "independent", &independent,
N_("show refs unreachable from any other ref")), N_("show refs unreachable from any other ref")),
OPT_SET_INT(0, "topo-order", &sort_order, OPT_SET_INT(0, "topo-order", &sort_order,
N_("show commits in topological order"), N_("show commits in topological order"),
REV_SORT_IN_GRAPH_ORDER), REV_SORT_IN_GRAPH_ORDER),
OPT_BOOLEAN(0, "topics", &topics, OPT_BOOL(0, "topics", &topics,
N_("show only commits not on the first branch")), N_("show only commits not on the first branch")),
OPT_SET_INT(0, "sparse", &dense, OPT_SET_INT(0, "sparse", &dense,
N_("show merges reachable from only one tip"), 0), N_("show merges reachable from only one tip"), 0),
OPT_SET_INT(0, "date-order", &sort_order, OPT_SET_INT(0, "date-order", &sort_order,

Просмотреть файл

@ -165,16 +165,15 @@ static int help_callback(const struct option *opt, const char *arg, int unset)
} }
static const struct option show_ref_options[] = { static const struct option show_ref_options[] = {
OPT_BOOLEAN(0, "tags", &tags_only, N_("only show tags (can be combined with heads)")), OPT_BOOL(0, "tags", &tags_only, N_("only show tags (can be combined with heads)")),
OPT_BOOLEAN(0, "heads", &heads_only, N_("only show heads (can be combined with tags)")), OPT_BOOL(0, "heads", &heads_only, N_("only show heads (can be combined with tags)")),
OPT_BOOLEAN(0, "verify", &verify, N_("stricter reference checking, " OPT_BOOL(0, "verify", &verify, N_("stricter reference checking, "
"requires exact ref path")), "requires exact ref path")),
{ OPTION_BOOLEAN, 'h', NULL, &show_head, NULL, OPT_HIDDEN_BOOL('h', NULL, &show_head,
N_("show the HEAD reference, even if it would be filtered out"), N_("show the HEAD reference, even if it would be filtered out")),
PARSE_OPT_NOARG | PARSE_OPT_HIDDEN }, OPT_BOOL(0, "head", &show_head,
OPT_BOOLEAN(0, "head", &show_head,
N_("show the HEAD reference, even if it would be filtered out")), N_("show the HEAD reference, even if it would be filtered out")),
OPT_BOOLEAN('d', "dereference", &deref_tags, OPT_BOOL('d', "dereference", &deref_tags,
N_("dereference tags into object IDs")), N_("dereference tags into object IDs")),
{ OPTION_CALLBACK, 's', "hash", &abbrev, N_("n"), { OPTION_CALLBACK, 's', "hash", &abbrev, N_("n"),
N_("only show SHA1 hash using <n> digits"), N_("only show SHA1 hash using <n> digits"),

Просмотреть файл

@ -450,12 +450,12 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
OPT_CMDMODE('v', "verify", &cmdmode, N_("verify tags"), 'v'), OPT_CMDMODE('v', "verify", &cmdmode, N_("verify tags"), 'v'),
OPT_GROUP(N_("Tag creation options")), OPT_GROUP(N_("Tag creation options")),
OPT_BOOLEAN('a', "annotate", &annotate, OPT_BOOL('a', "annotate", &annotate,
N_("annotated tag, needs a message")), N_("annotated tag, needs a message")),
OPT_CALLBACK('m', "message", &msg, N_("message"), OPT_CALLBACK('m', "message", &msg, N_("message"),
N_("tag message"), parse_msg_arg), N_("tag message"), parse_msg_arg),
OPT_FILENAME('F', "file", &msgfile, N_("read message from file")), OPT_FILENAME('F', "file", &msgfile, N_("read message from file")),
OPT_BOOLEAN('s', "sign", &opt.sign, N_("annotated and GPG-signed tag")), OPT_BOOL('s', "sign", &opt.sign, N_("annotated and GPG-signed tag")),
OPT_STRING(0, "cleanup", &cleanup_arg, N_("mode"), OPT_STRING(0, "cleanup", &cleanup_arg, N_("mode"),
N_("how to strip spaces and #comments from message")), N_("how to strip spaces and #comments from message")),
OPT_STRING('u', "local-user", &keyid, N_("key id"), OPT_STRING('u', "local-user", &keyid, N_("key id"),

Просмотреть файл

@ -16,8 +16,8 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix)
int delete = 0, no_deref = 0, flags = 0; int delete = 0, no_deref = 0, flags = 0;
struct option options[] = { struct option options[] = {
OPT_STRING( 'm', NULL, &msg, N_("reason"), N_("reason of the update")), OPT_STRING( 'm', NULL, &msg, N_("reason"), N_("reason of the update")),
OPT_BOOLEAN('d', NULL, &delete, N_("delete the reference")), OPT_BOOL('d', NULL, &delete, N_("delete the reference")),
OPT_BOOLEAN( 0 , "no-deref", &no_deref, OPT_BOOL( 0 , "no-deref", &no_deref,
N_("update <refname> not the one it points to")), N_("update <refname> not the one it points to")),
OPT_END(), OPT_END(),
}; };

Просмотреть файл

@ -22,9 +22,6 @@ enum parse_opt_type {
OPTION_FILENAME OPTION_FILENAME
}; };
/* Deprecated synonym */
#define OPTION_BOOLEAN OPTION_COUNTUP
enum parse_opt_flags { enum parse_opt_flags {
PARSE_OPT_KEEP_DASHDASH = 1, PARSE_OPT_KEEP_DASHDASH = 1,
PARSE_OPT_STOP_AT_NON_OPTION = 2, PARSE_OPT_STOP_AT_NON_OPTION = 2,
@ -129,6 +126,8 @@ struct option {
#define OPT_SET_INT(s, l, v, h, i) { OPTION_SET_INT, (s), (l), (v), NULL, \ #define OPT_SET_INT(s, l, v, h, i) { OPTION_SET_INT, (s), (l), (v), NULL, \
(h), PARSE_OPT_NOARG, NULL, (i) } (h), PARSE_OPT_NOARG, NULL, (i) }
#define OPT_BOOL(s, l, v, h) OPT_SET_INT(s, l, v, h, 1) #define OPT_BOOL(s, l, v, h) OPT_SET_INT(s, l, v, h, 1)
#define OPT_HIDDEN_BOOL(s, l, v, h) { OPTION_SET_INT, (s), (l), (v), NULL, \
(h), PARSE_OPT_NOARG | PARSE_OPT_HIDDEN, NULL, 1}
#define OPT_SET_PTR(s, l, v, h, p) { OPTION_SET_PTR, (s), (l), (v), NULL, \ #define OPT_SET_PTR(s, l, v, h, p) { OPTION_SET_PTR, (s), (l), (v), NULL, \
(h), PARSE_OPT_NOARG, NULL, (p) } (h), PARSE_OPT_NOARG, NULL, (p) }
#define OPT_CMDMODE(s, l, v, h, i) { OPTION_CMDMODE, (s), (l), (v), NULL, \ #define OPT_CMDMODE(s, l, v, h, i) { OPTION_CMDMODE, (s), (l), (v), NULL, \