global: use designated initializers for options
While we expose macros for most of our different option types understood by the "parse-options" subsystem, not every combination of fields that has one as that would otherwise quickly lead to an explosion of macros. Instead, we just initialize structures manually for those variants of fields that don't have a macro. Callsites that open-code these structure initialization don't use designated initializers though and instead just provide values for each of the fields that they want to initialize. This has three significant downsides: - Callsites need to specify all values up to the last field that they care about. This often includes fields that should simply be left at their default zero-initialized state, which adds distraction. - Any reader not deeply familiar with the layout of the structure has a hard time figuring out what the respective initializers mean. - Reordering or introducing new fields in the middle of the structure is impossible without adapting all callsites. Convert all sites to instead use designated initializers, which we have started using in our codebase quite a while ago. This allows us to skip any default-initialized fields, gives the reader context by specifying the field names and allows us to reorder or introduce new fields where we want to. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
8f282bdff0
commit
d012ceb5f3
35
archive.c
35
archive.c
|
@ -650,20 +650,37 @@ static int parse_archive_args(int argc, const char **argv,
|
||||||
OPT_STRING(0, "format", &format, N_("fmt"), N_("archive format")),
|
OPT_STRING(0, "format", &format, N_("fmt"), N_("archive format")),
|
||||||
OPT_STRING(0, "prefix", &base, N_("prefix"),
|
OPT_STRING(0, "prefix", &base, N_("prefix"),
|
||||||
N_("prepend prefix to each pathname in the archive")),
|
N_("prepend prefix to each pathname in the archive")),
|
||||||
{ OPTION_CALLBACK, 0, "add-file", args, N_("file"),
|
{
|
||||||
N_("add untracked file to archive"), 0, add_file_cb,
|
.type = OPTION_CALLBACK,
|
||||||
(intptr_t)&base },
|
.long_name = "add-file",
|
||||||
{ OPTION_CALLBACK, 0, "add-virtual-file", args,
|
.value = args,
|
||||||
N_("path:content"), N_("add untracked file to archive"), 0,
|
.argh = N_("file"),
|
||||||
add_file_cb, (intptr_t)&base },
|
.help = N_("add untracked file to archive"),
|
||||||
|
.callback = add_file_cb,
|
||||||
|
.defval = (intptr_t) &base,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_CALLBACK,
|
||||||
|
.long_name = "add-virtual-file",
|
||||||
|
.value = args,
|
||||||
|
.argh = N_("path:content"),
|
||||||
|
.help = N_("add untracked file to archive"),
|
||||||
|
.callback = add_file_cb,
|
||||||
|
.defval = (intptr_t) &base,
|
||||||
|
},
|
||||||
OPT_STRING('o', "output", &output, N_("file"),
|
OPT_STRING('o', "output", &output, N_("file"),
|
||||||
N_("write the archive to this file")),
|
N_("write the archive to this file")),
|
||||||
OPT_BOOL(0, "worktree-attributes", &worktree_attributes,
|
OPT_BOOL(0, "worktree-attributes", &worktree_attributes,
|
||||||
N_("read .gitattributes in working directory")),
|
N_("read .gitattributes in working directory")),
|
||||||
OPT__VERBOSE(&verbose, N_("report archived files on stderr")),
|
OPT__VERBOSE(&verbose, N_("report archived files on stderr")),
|
||||||
{ OPTION_STRING, 0, "mtime", &mtime_option, N_("time"),
|
{
|
||||||
N_("set modification time of archive entries"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_NONEG },
|
.long_name = "mtime",
|
||||||
|
.value = &mtime_option,
|
||||||
|
.argh = N_("time"),
|
||||||
|
.help = N_("set modification time of archive entries"),
|
||||||
|
.flags = PARSE_OPT_NONEG,
|
||||||
|
},
|
||||||
OPT_NUMBER_CALLBACK(&compression_level,
|
OPT_NUMBER_CALLBACK(&compression_level,
|
||||||
N_("set compression level"), number_callback),
|
N_("set compression level"), number_callback),
|
||||||
OPT_GROUP(""),
|
OPT_GROUP(""),
|
||||||
|
|
28
builtin/am.c
28
builtin/am.c
|
@ -2400,11 +2400,16 @@ int cmd_am(int argc,
|
||||||
OPT_CMDMODE(0, "quit", &resume_mode,
|
OPT_CMDMODE(0, "quit", &resume_mode,
|
||||||
N_("abort the patching operation but keep HEAD where it is"),
|
N_("abort the patching operation but keep HEAD where it is"),
|
||||||
RESUME_QUIT),
|
RESUME_QUIT),
|
||||||
{ OPTION_CALLBACK, 0, "show-current-patch", &resume_mode,
|
{
|
||||||
"(diff|raw)",
|
.type = OPTION_CALLBACK,
|
||||||
N_("show the patch being applied"),
|
.long_name = "show-current-patch",
|
||||||
PARSE_OPT_CMDMODE | PARSE_OPT_OPTARG | PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP,
|
.value = &resume_mode,
|
||||||
parse_opt_show_current_patch, RESUME_SHOW_PATCH_RAW },
|
.argh = "(diff|raw)",
|
||||||
|
.help = N_("show the patch being applied"),
|
||||||
|
.flags = PARSE_OPT_CMDMODE | PARSE_OPT_OPTARG | PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP,
|
||||||
|
.callback = parse_opt_show_current_patch,
|
||||||
|
.defval = RESUME_SHOW_PATCH_RAW,
|
||||||
|
},
|
||||||
OPT_CMDMODE(0, "retry", &resume_mode,
|
OPT_CMDMODE(0, "retry", &resume_mode,
|
||||||
N_("try to apply current patch again"),
|
N_("try to apply current patch again"),
|
||||||
RESUME_APPLY),
|
RESUME_APPLY),
|
||||||
|
@ -2417,9 +2422,16 @@ int cmd_am(int argc,
|
||||||
OPT_BOOL(0, "ignore-date", &state.ignore_date,
|
OPT_BOOL(0, "ignore-date", &state.ignore_date,
|
||||||
N_("use current timestamp for author date")),
|
N_("use current timestamp for author date")),
|
||||||
OPT_RERERE_AUTOUPDATE(&state.allow_rerere_autoupdate),
|
OPT_RERERE_AUTOUPDATE(&state.allow_rerere_autoupdate),
|
||||||
{ OPTION_STRING, 'S', "gpg-sign", &state.sign_commit, N_("key-id"),
|
{
|
||||||
N_("GPG-sign commits"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
|
.short_name = 'S',
|
||||||
|
.long_name = "gpg-sign",
|
||||||
|
.value = &state.sign_commit,
|
||||||
|
.argh = N_("key-id"),
|
||||||
|
.help = N_("GPG-sign commits"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "",
|
||||||
|
},
|
||||||
OPT_CALLBACK_F(0, "empty", &state.empty_type, "(stop|drop|keep)",
|
OPT_CALLBACK_F(0, "empty", &state.empty_type, "(stop|drop|keep)",
|
||||||
N_("how to handle empty patches"),
|
N_("how to handle empty patches"),
|
||||||
PARSE_OPT_NONEG, am_option_parse_empty),
|
PARSE_OPT_NONEG, am_option_parse_empty),
|
||||||
|
|
|
@ -930,9 +930,16 @@ int cmd_clone(int argc,
|
||||||
N_("don't use local hardlinks, always copy")),
|
N_("don't use local hardlinks, always copy")),
|
||||||
OPT_BOOL('s', "shared", &option_shared,
|
OPT_BOOL('s', "shared", &option_shared,
|
||||||
N_("setup as shared repository")),
|
N_("setup as shared repository")),
|
||||||
{ OPTION_CALLBACK, 0, "recurse-submodules", &option_recurse_submodules,
|
{
|
||||||
N_("pathspec"), N_("initialize submodules in the clone"),
|
.type = OPTION_CALLBACK,
|
||||||
PARSE_OPT_OPTARG, recurse_submodules_cb, (intptr_t)"." },
|
.long_name = "recurse-submodules",
|
||||||
|
.value = &option_recurse_submodules,
|
||||||
|
.argh = N_("pathspec"),
|
||||||
|
.help = N_("initialize submodules in the clone"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.callback = recurse_submodules_cb,
|
||||||
|
.defval = (intptr_t)".",
|
||||||
|
},
|
||||||
OPT_ALIAS(0, "recursive", "recurse-submodules"),
|
OPT_ALIAS(0, "recursive", "recurse-submodules"),
|
||||||
OPT_INTEGER('j', "jobs", &max_jobs,
|
OPT_INTEGER('j', "jobs", &max_jobs,
|
||||||
N_("number of submodules cloned in parallel")),
|
N_("number of submodules cloned in parallel")),
|
||||||
|
|
|
@ -111,8 +111,16 @@ int cmd_commit_tree(int argc,
|
||||||
OPT_CALLBACK_F('F', NULL, &buffer, N_("file"),
|
OPT_CALLBACK_F('F', NULL, &buffer, N_("file"),
|
||||||
N_("read commit log message from file"), PARSE_OPT_NONEG,
|
N_("read commit log message from file"), PARSE_OPT_NONEG,
|
||||||
parse_file_arg_callback),
|
parse_file_arg_callback),
|
||||||
{ OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key-id"),
|
{
|
||||||
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
|
.type = OPTION_STRING,
|
||||||
|
.short_name = 'S',
|
||||||
|
.long_name = "gpg-sign",
|
||||||
|
.value = &sign_commit,
|
||||||
|
.argh = N_("key-id"),
|
||||||
|
.help = N_("GPG sign commit"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "",
|
||||||
|
},
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -1542,17 +1542,34 @@ struct repository *repo UNUSED)
|
||||||
STATUS_FORMAT_LONG),
|
STATUS_FORMAT_LONG),
|
||||||
OPT_BOOL('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,
|
{
|
||||||
N_("mode"),
|
.type = OPTION_STRING,
|
||||||
N_("show untracked files, optional modes: all, normal, no. (Default: all)"),
|
.short_name = 'u',
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
|
.long_name = "untracked-files",
|
||||||
{ OPTION_STRING, 0, "ignored", &ignored_arg,
|
.value = &untracked_files_arg,
|
||||||
N_("mode"),
|
.argh = N_("mode"),
|
||||||
N_("show ignored files, optional modes: traditional, matching, no. (Default: traditional)"),
|
.help = N_("show untracked files, optional modes: all, normal, no. (Default: all)"),
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t)"traditional" },
|
.flags = PARSE_OPT_OPTARG,
|
||||||
{ OPTION_STRING, 0, "ignore-submodules", &ignore_submodule_arg, N_("when"),
|
.defval = (intptr_t)"all",
|
||||||
N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"),
|
},
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
|
{
|
||||||
|
.type = OPTION_STRING,
|
||||||
|
.long_name = "ignored",
|
||||||
|
.value = &ignored_arg,
|
||||||
|
.argh = N_("mode"),
|
||||||
|
.help = N_("show ignored files, optional modes: traditional, matching, no. (Default: traditional)"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t)"traditional",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_STRING,
|
||||||
|
.long_name = "ignore-submodules",
|
||||||
|
.value = &ignore_submodule_arg,
|
||||||
|
.argh = N_("when"),
|
||||||
|
.help = N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t)"all",
|
||||||
|
},
|
||||||
OPT_COLUMN(0, "column", &s.colopts, N_("list untracked files in columns")),
|
OPT_COLUMN(0, "column", &s.colopts, N_("list untracked files in columns")),
|
||||||
OPT_BOOL(0, "no-renames", &no_renames, N_("do not detect renames")),
|
OPT_BOOL(0, "no-renames", &no_renames, N_("do not detect renames")),
|
||||||
OPT_CALLBACK_F('M', "find-renames", &rename_score_arg,
|
OPT_CALLBACK_F('M', "find-renames", &rename_score_arg,
|
||||||
|
@ -1688,8 +1705,16 @@ int cmd_commit(int argc,
|
||||||
OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")),
|
OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")),
|
||||||
OPT_CLEANUP(&cleanup_arg),
|
OPT_CLEANUP(&cleanup_arg),
|
||||||
OPT_BOOL(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"),
|
{
|
||||||
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
|
.type = OPTION_STRING,
|
||||||
|
.short_name = 'S',
|
||||||
|
.long_name = "gpg-sign",
|
||||||
|
.value = &sign_commit,
|
||||||
|
.argh = N_("key-id"),
|
||||||
|
.help = N_("GPG sign commit"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "",
|
||||||
|
},
|
||||||
/* end commit message options */
|
/* end commit message options */
|
||||||
|
|
||||||
OPT_GROUP(N_("Commit contents options")),
|
OPT_GROUP(N_("Commit contents options")),
|
||||||
|
@ -1714,7 +1739,16 @@ int cmd_commit(int argc,
|
||||||
N_("terminate entries with NUL")),
|
N_("terminate entries with NUL")),
|
||||||
OPT_BOOL(0, "amend", &amend, N_("amend previous commit")),
|
OPT_BOOL(0, "amend", &amend, N_("amend previous commit")),
|
||||||
OPT_BOOL(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" },
|
{
|
||||||
|
.type = OPTION_STRING,
|
||||||
|
.short_name = 'u',
|
||||||
|
.long_name = "untracked-files",
|
||||||
|
.value = &untracked_files_arg,
|
||||||
|
.argh = N_("mode"),
|
||||||
|
.help = N_("show untracked files, optional modes: all, normal, no. (Default: all)"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t)"all",
|
||||||
|
},
|
||||||
OPT_PATHSPEC_FROM_FILE(&pathspec_from_file),
|
OPT_PATHSPEC_FROM_FILE(&pathspec_from_file),
|
||||||
OPT_PATHSPEC_FILE_NUL(&pathspec_file_nul),
|
OPT_PATHSPEC_FILE_NUL(&pathspec_file_nul),
|
||||||
/* end commit contents options */
|
/* end commit contents options */
|
||||||
|
|
|
@ -131,9 +131,16 @@ struct config_display_options {
|
||||||
#define TYPE_COLOR 6
|
#define TYPE_COLOR 6
|
||||||
#define TYPE_BOOL_OR_STR 7
|
#define TYPE_BOOL_OR_STR 7
|
||||||
|
|
||||||
#define OPT_CALLBACK_VALUE(s, l, v, h, i) \
|
#define OPT_CALLBACK_VALUE(s, l, v, h, i) { \
|
||||||
{ OPTION_CALLBACK, (s), (l), (v), NULL, (h), PARSE_OPT_NOARG | \
|
.type = OPTION_CALLBACK, \
|
||||||
PARSE_OPT_NONEG, option_parse_type, (i) }
|
.short_name = (s), \
|
||||||
|
.long_name = (l), \
|
||||||
|
.value = (v), \
|
||||||
|
.help = (h), \
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, \
|
||||||
|
.callback = option_parse_type, \
|
||||||
|
.defval = (i), \
|
||||||
|
}
|
||||||
|
|
||||||
static int option_parse_type(const struct option *opt, const char *arg,
|
static int option_parse_type(const struct option *opt, const char *arg,
|
||||||
int unset)
|
int unset)
|
||||||
|
|
|
@ -601,12 +601,24 @@ int cmd_describe(int argc,
|
||||||
N_("do not consider tags matching <pattern>")),
|
N_("do not consider tags matching <pattern>")),
|
||||||
OPT_BOOL(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"),
|
{
|
||||||
N_("append <mark> on dirty working tree (default: \"-dirty\")"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t) "-dirty"},
|
.long_name = "dirty",
|
||||||
{OPTION_STRING, 0, "broken", &broken, N_("mark"),
|
.value = &dirty,
|
||||||
N_("append <mark> on broken working tree (default: \"-broken\")"),
|
.argh = N_("mark"),
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t) "-broken"},
|
.help = N_("append <mark> on dirty working tree (default: \"-dirty\")"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "-dirty",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_STRING,
|
||||||
|
.long_name = "broken",
|
||||||
|
.value = &broken,
|
||||||
|
.argh = N_("mark"),
|
||||||
|
.help = N_("append <mark> on broken working tree (default: \"-broken\")"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "-broken",
|
||||||
|
},
|
||||||
OPT_END(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2359,8 +2359,14 @@ int cmd_fetch(int argc,
|
||||||
OPT_SET_INT_F(0, "refetch", &refetch,
|
OPT_SET_INT_F(0, "refetch", &refetch,
|
||||||
N_("re-fetch without negotiating common commits"),
|
N_("re-fetch without negotiating common commits"),
|
||||||
1, PARSE_OPT_NONEG),
|
1, PARSE_OPT_NONEG),
|
||||||
{ OPTION_STRING, 0, "submodule-prefix", &submodule_prefix, N_("dir"),
|
{
|
||||||
N_("prepend this to submodule path output"), PARSE_OPT_HIDDEN },
|
.type = OPTION_STRING,
|
||||||
|
.long_name = "submodule-prefix",
|
||||||
|
.value = &submodule_prefix,
|
||||||
|
.argh = N_("dir"),
|
||||||
|
.help = N_("prepend this to submodule path output"),
|
||||||
|
.flags = PARSE_OPT_HIDDEN,
|
||||||
|
},
|
||||||
OPT_CALLBACK_F(0, "recurse-submodules-default",
|
OPT_CALLBACK_F(0, "recurse-submodules-default",
|
||||||
&recurse_submodules_default, N_("on-demand"),
|
&recurse_submodules_default, N_("on-demand"),
|
||||||
N_("default for recursive fetching of submodules "
|
N_("default for recursive fetching of submodules "
|
||||||
|
|
|
@ -20,13 +20,24 @@ int cmd_fmt_merge_msg(int argc,
|
||||||
char *into_name = NULL;
|
char *into_name = NULL;
|
||||||
int shortlog_len = -1;
|
int shortlog_len = -1;
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
{ OPTION_INTEGER, 0, "log", &shortlog_len, N_("n"),
|
{
|
||||||
N_("populate log with at most <n> entries from shortlog"),
|
.type = OPTION_INTEGER,
|
||||||
PARSE_OPT_OPTARG, NULL, DEFAULT_MERGE_LOG_LEN },
|
.long_name = "log",
|
||||||
{ OPTION_INTEGER, 0, "summary", &shortlog_len, N_("n"),
|
.value = &shortlog_len,
|
||||||
N_("alias for --log (deprecated)"),
|
.argh = N_("n"),
|
||||||
PARSE_OPT_OPTARG | PARSE_OPT_HIDDEN, NULL,
|
.help = N_("populate log with at most <n> entries from shortlog"),
|
||||||
DEFAULT_MERGE_LOG_LEN },
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = DEFAULT_MERGE_LOG_LEN,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_INTEGER,
|
||||||
|
.long_name = "summary",
|
||||||
|
.value = &shortlog_len,
|
||||||
|
.argh = N_("n"),
|
||||||
|
.help = N_("alias for --log (deprecated)"),
|
||||||
|
.flags = PARSE_OPT_OPTARG | PARSE_OPT_HIDDEN,
|
||||||
|
.defval = DEFAULT_MERGE_LOG_LEN,
|
||||||
|
},
|
||||||
OPT_STRING('m', "message", &message, N_("text"),
|
OPT_STRING('m', "message", &message, N_("text"),
|
||||||
N_("use <text> as start of message")),
|
N_("use <text> as start of message")),
|
||||||
OPT_STRING(0, "into-name", &into_name, N_("name"),
|
OPT_STRING(0, "into-name", &into_name, N_("name"),
|
||||||
|
|
12
builtin/gc.c
12
builtin/gc.c
|
@ -699,9 +699,15 @@ struct repository *repo UNUSED)
|
||||||
int ret;
|
int ret;
|
||||||
struct option builtin_gc_options[] = {
|
struct option builtin_gc_options[] = {
|
||||||
OPT__QUIET(&quiet, N_("suppress progress reporting")),
|
OPT__QUIET(&quiet, N_("suppress progress reporting")),
|
||||||
{ OPTION_STRING, 0, "prune", &prune_expire_arg, N_("date"),
|
{
|
||||||
N_("prune unreferenced objects"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t)prune_expire_arg },
|
.long_name = "prune",
|
||||||
|
.value = &prune_expire_arg,
|
||||||
|
.argh = N_("date"),
|
||||||
|
.help = N_("prune unreferenced objects"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t)prune_expire_arg,
|
||||||
|
},
|
||||||
OPT_BOOL(0, "cruft", &cfg.cruft_packs, N_("pack unreferenced objects separately")),
|
OPT_BOOL(0, "cruft", &cfg.cruft_packs, N_("pack unreferenced objects separately")),
|
||||||
OPT_MAGNITUDE(0, "max-cruft-size", &cfg.max_cruft_size,
|
OPT_MAGNITUDE(0, "max-cruft-size", &cfg.max_cruft_size,
|
||||||
N_("with --cruft, limit the size of new cruft packs")),
|
N_("with --cruft, limit the size of new cruft packs")),
|
||||||
|
|
|
@ -1017,10 +1017,16 @@ int cmd_grep(int argc,
|
||||||
OPT_BOOL(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")),
|
||||||
OPT_GROUP(""),
|
OPT_GROUP(""),
|
||||||
{ OPTION_STRING, 'O', "open-files-in-pager", &show_in_pager,
|
{
|
||||||
N_("pager"), N_("show matching files in the pager"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_OPTARG | PARSE_OPT_NOCOMPLETE,
|
.short_name = 'O',
|
||||||
NULL, (intptr_t)default_pager },
|
.long_name = "open-files-in-pager",
|
||||||
|
.value = &show_in_pager,
|
||||||
|
.argh = N_("pager"),
|
||||||
|
.help = N_("show matching files in the pager"),
|
||||||
|
.flags = PARSE_OPT_OPTARG | PARSE_OPT_NOCOMPLETE,
|
||||||
|
.defval = (intptr_t)default_pager,
|
||||||
|
},
|
||||||
OPT_BOOL_F(0, "ext-grep", &external_grep_allowed__ignored,
|
OPT_BOOL_F(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)"),
|
||||||
PARSE_OPT_NOCOMPLETE),
|
PARSE_OPT_NOCOMPLETE),
|
||||||
|
|
|
@ -93,10 +93,15 @@ int cmd_init_db(int argc,
|
||||||
N_("directory from which templates will be used")),
|
N_("directory from which templates will be used")),
|
||||||
OPT_SET_INT(0, "bare", &is_bare_repository_cfg,
|
OPT_SET_INT(0, "bare", &is_bare_repository_cfg,
|
||||||
N_("create a bare repository"), 1),
|
N_("create a bare repository"), 1),
|
||||||
{ OPTION_CALLBACK, 0, "shared", &init_shared_repository,
|
{
|
||||||
N_("permissions"),
|
.type = OPTION_CALLBACK,
|
||||||
N_("specify that the git repository is to be shared amongst several users"),
|
.long_name = "shared",
|
||||||
PARSE_OPT_OPTARG | PARSE_OPT_NONEG, shared_callback, 0},
|
.value = &init_shared_repository,
|
||||||
|
.argh = N_("permissions"),
|
||||||
|
.help = N_("specify that the git repository is to be shared amongst several users"),
|
||||||
|
.flags = PARSE_OPT_OPTARG | PARSE_OPT_NONEG,
|
||||||
|
.callback = shared_callback
|
||||||
|
},
|
||||||
OPT_BIT('q', "quiet", &flags, N_("be quiet"), INIT_DB_QUIET),
|
OPT_BIT('q', "quiet", &flags, N_("be quiet"), INIT_DB_QUIET),
|
||||||
OPT_STRING(0, "separate-git-dir", &real_git_dir, N_("gitdir"),
|
OPT_STRING(0, "separate-git-dir", &real_git_dir, N_("gitdir"),
|
||||||
N_("separate git dir from working tree")),
|
N_("separate git dir from working tree")),
|
||||||
|
|
|
@ -67,9 +67,14 @@ int cmd_ls_remote(int argc,
|
||||||
OPT__QUIET(&quiet, N_("do not print remote URL")),
|
OPT__QUIET(&quiet, N_("do not print remote URL")),
|
||||||
OPT_STRING(0, "upload-pack", &uploadpack, N_("exec"),
|
OPT_STRING(0, "upload-pack", &uploadpack, N_("exec"),
|
||||||
N_("path of git-upload-pack on the remote host")),
|
N_("path of git-upload-pack on the remote host")),
|
||||||
{ OPTION_STRING, 0, "exec", &uploadpack, N_("exec"),
|
{
|
||||||
N_("path of git-upload-pack on the remote host"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_HIDDEN },
|
.long_name = "exec",
|
||||||
|
.value = &uploadpack,
|
||||||
|
.argh = N_("exec"),
|
||||||
|
.help = N_("path of git-upload-pack on the remote host"),
|
||||||
|
.flags = PARSE_OPT_HIDDEN,
|
||||||
|
},
|
||||||
OPT_BIT('t', "tags", &flags, N_("limit to tags"), REF_TAGS),
|
OPT_BIT('t', "tags", &flags, N_("limit to tags"), REF_TAGS),
|
||||||
OPT_BIT('b', "branches", &flags, N_("limit to branches"), REF_BRANCHES),
|
OPT_BIT('b', "branches", &flags, N_("limit to branches"), REF_BRANCHES),
|
||||||
OPT_BIT_F('h', "heads", &flags,
|
OPT_BIT_F('h', "heads", &flags,
|
||||||
|
|
|
@ -250,9 +250,15 @@ static struct option builtin_merge_options[] = {
|
||||||
OPT_BOOL(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_BOOL(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"),
|
{
|
||||||
N_("add (at most <n>) entries from shortlog to merge commit message"),
|
.type = OPTION_INTEGER,
|
||||||
PARSE_OPT_OPTARG, NULL, DEFAULT_MERGE_LOG_LEN },
|
.long_name = "log",
|
||||||
|
.value = &shortlog_len,
|
||||||
|
.argh = N_("n"),
|
||||||
|
.help = N_("add (at most <n>) entries from shortlog to merge commit message"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = DEFAULT_MERGE_LOG_LEN,
|
||||||
|
},
|
||||||
OPT_BOOL(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_BOOL(0, "commit", &option_commit,
|
OPT_BOOL(0, "commit", &option_commit,
|
||||||
|
@ -274,9 +280,16 @@ static struct option builtin_merge_options[] = {
|
||||||
OPT_CALLBACK('m', "message", &merge_msg, N_("message"),
|
OPT_CALLBACK('m', "message", &merge_msg, N_("message"),
|
||||||
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),
|
||||||
{ OPTION_LOWLEVEL_CALLBACK, 'F', "file", &merge_msg, N_("path"),
|
{
|
||||||
N_("read message from file"), PARSE_OPT_NONEG,
|
.type = OPTION_LOWLEVEL_CALLBACK,
|
||||||
NULL, 0, option_read_message },
|
.short_name = 'F',
|
||||||
|
.long_name = "file",
|
||||||
|
.value = &merge_msg,
|
||||||
|
.argh = N_("path"),
|
||||||
|
.help = N_("read message from file"),
|
||||||
|
.flags = PARSE_OPT_NONEG,
|
||||||
|
.ll_callback = option_read_message,
|
||||||
|
},
|
||||||
OPT_STRING(0, "into-name", &into_name, N_("name"),
|
OPT_STRING(0, "into-name", &into_name, N_("name"),
|
||||||
N_("use <name> instead of the real target")),
|
N_("use <name> instead of the real target")),
|
||||||
OPT__VERBOSITY(&verbosity),
|
OPT__VERBOSITY(&verbosity),
|
||||||
|
@ -289,8 +302,16 @@ static struct option builtin_merge_options[] = {
|
||||||
OPT_BOOL(0, "allow-unrelated-histories", &allow_unrelated_histories,
|
OPT_BOOL(0, "allow-unrelated-histories", &allow_unrelated_histories,
|
||||||
N_("allow merging unrelated histories")),
|
N_("allow merging unrelated histories")),
|
||||||
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"),
|
{
|
||||||
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
|
.type = OPTION_STRING,
|
||||||
|
.short_name = 'S',
|
||||||
|
.long_name = "gpg-sign",
|
||||||
|
.value = &sign_commit,
|
||||||
|
.argh = N_("key-id"),
|
||||||
|
.help = N_("GPG sign commit"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "",
|
||||||
|
},
|
||||||
OPT_AUTOSTASH(&autostash),
|
OPT_AUTOSTASH(&autostash),
|
||||||
OPT_BOOL(0, "overwrite-ignore", &overwrite_ignore, N_("update ignored files (default)")),
|
OPT_BOOL(0, "overwrite-ignore", &overwrite_ignore, N_("update ignored files (default)")),
|
||||||
OPT_BOOL(0, "signoff", &signoff, N_("add a Signed-off-by trailer")),
|
OPT_BOOL(0, "signoff", &signoff, N_("add a Signed-off-by trailer")),
|
||||||
|
|
|
@ -135,9 +135,14 @@ int cmd_read_tree(int argc,
|
||||||
N_("3-way merge in presence of adds and removes")),
|
N_("3-way merge in presence of adds and removes")),
|
||||||
OPT_BOOL(0, "reset", &opts.reset,
|
OPT_BOOL(0, "reset", &opts.reset,
|
||||||
N_("same as -m, but discard unmerged entries")),
|
N_("same as -m, but discard unmerged entries")),
|
||||||
{ OPTION_STRING, 0, "prefix", &opts.prefix, N_("<subdirectory>/"),
|
{
|
||||||
N_("read the tree into the index under <subdirectory>/"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_NONEG },
|
.long_name = "prefix",
|
||||||
|
.value = &opts.prefix,
|
||||||
|
.argh = N_("<subdirectory>/"),
|
||||||
|
.help = N_("read the tree into the index under <subdirectory>/"),
|
||||||
|
.flags = PARSE_OPT_NONEG,
|
||||||
|
},
|
||||||
OPT_BOOL('u', NULL, &opts.update,
|
OPT_BOOL('u', NULL, &opts.update,
|
||||||
N_("update working tree with merge result")),
|
N_("update working tree with merge result")),
|
||||||
OPT_CALLBACK_F(0, "exclude-per-directory", &opts,
|
OPT_CALLBACK_F(0, "exclude-per-directory", &opts,
|
||||||
|
|
|
@ -1122,9 +1122,15 @@ int cmd_rebase(int argc,
|
||||||
OPT_BIT('v', "verbose", &options.flags,
|
OPT_BIT('v', "verbose", &options.flags,
|
||||||
N_("display a diffstat of what changed upstream"),
|
N_("display a diffstat of what changed upstream"),
|
||||||
REBASE_NO_QUIET | REBASE_VERBOSE | REBASE_DIFFSTAT),
|
REBASE_NO_QUIET | REBASE_VERBOSE | REBASE_DIFFSTAT),
|
||||||
{OPTION_NEGBIT, 'n', "no-stat", &options.flags, NULL,
|
{
|
||||||
N_("do not show diffstat of what changed upstream"),
|
.type = OPTION_NEGBIT,
|
||||||
PARSE_OPT_NOARG, NULL, REBASE_DIFFSTAT },
|
.short_name = 'n',
|
||||||
|
.long_name = "no-stat",
|
||||||
|
.value = &options.flags,
|
||||||
|
.help = N_("do not show diffstat of what changed upstream"),
|
||||||
|
.flags = PARSE_OPT_NOARG,
|
||||||
|
.defval = REBASE_DIFFSTAT,
|
||||||
|
},
|
||||||
OPT_BOOL(0, "signoff", &options.signoff,
|
OPT_BOOL(0, "signoff", &options.signoff,
|
||||||
N_("add a Signed-off-by trailer to each commit")),
|
N_("add a Signed-off-by trailer to each commit")),
|
||||||
OPT_BOOL(0, "committer-date-is-author-date",
|
OPT_BOOL(0, "committer-date-is-author-date",
|
||||||
|
@ -1190,9 +1196,16 @@ int cmd_rebase(int argc,
|
||||||
OPT_BOOL(0, "update-refs", &options.update_refs,
|
OPT_BOOL(0, "update-refs", &options.update_refs,
|
||||||
N_("update branches that point to commits "
|
N_("update branches that point to commits "
|
||||||
"that are being rebased")),
|
"that are being rebased")),
|
||||||
{ OPTION_STRING, 'S', "gpg-sign", &gpg_sign, N_("key-id"),
|
{
|
||||||
N_("GPG-sign commits"),
|
.type = OPTION_STRING,
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
|
.short_name = 'S',
|
||||||
|
.long_name = "gpg-sign",
|
||||||
|
.value = &gpg_sign,
|
||||||
|
.argh = N_("key-id"),
|
||||||
|
.help = N_("GPG-sign commits"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "",
|
||||||
|
},
|
||||||
OPT_AUTOSTASH(&options.autostash),
|
OPT_AUTOSTASH(&options.autostash),
|
||||||
OPT_STRING_LIST('x', "exec", &options.exec, N_("exec"),
|
OPT_STRING_LIST('x', "exec", &options.exec, N_("exec"),
|
||||||
N_("add exec lines after each commit of the "
|
N_("add exec lines after each commit of the "
|
||||||
|
|
|
@ -132,8 +132,16 @@ static int run_sequencer(int argc, const char **argv, const char *prefix,
|
||||||
OPT_STRING(0, "strategy", &strategy, N_("strategy"), N_("merge strategy")),
|
OPT_STRING(0, "strategy", &strategy, N_("strategy"), N_("merge strategy")),
|
||||||
OPT_STRVEC('X', "strategy-option", &opts->xopts, N_("option"),
|
OPT_STRVEC('X', "strategy-option", &opts->xopts, N_("option"),
|
||||||
N_("option for merge strategy")),
|
N_("option for merge strategy")),
|
||||||
{ OPTION_STRING, 'S', "gpg-sign", &gpg_sign, N_("key-id"),
|
{
|
||||||
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
|
.type = OPTION_STRING,
|
||||||
|
.short_name = 'S',
|
||||||
|
.long_name = "gpg-sign",
|
||||||
|
.value = &gpg_sign,
|
||||||
|
.argh = N_("key-id"),
|
||||||
|
.help = N_("GPG sign commit"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = (intptr_t) "",
|
||||||
|
},
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
struct option *options = base_options;
|
struct option *options = base_options;
|
||||||
|
|
|
@ -667,9 +667,15 @@ int cmd_show_branch(int ac,
|
||||||
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"),
|
{
|
||||||
N_("show <n> more commits after the common ancestor"),
|
.type = OPTION_INTEGER,
|
||||||
PARSE_OPT_OPTARG, NULL, (intptr_t)1 },
|
.long_name = "more",
|
||||||
|
.value = &extra,
|
||||||
|
.argh = N_("n"),
|
||||||
|
.help = N_("show <n> more commits after the common ancestor"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = 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_BOOL(0, "no-name", &no_name, N_("suppress naming strings")),
|
OPT_BOOL(0, "no-name", &no_name, N_("suppress naming strings")),
|
||||||
OPT_BOOL(0, "current", &with_current_branch,
|
OPT_BOOL(0, "current", &with_current_branch,
|
||||||
|
|
|
@ -479,9 +479,15 @@ int cmd_tag(int argc,
|
||||||
int edit_flag = 0;
|
int edit_flag = 0;
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
OPT_CMDMODE('l', "list", &cmdmode, N_("list tag names"), 'l'),
|
OPT_CMDMODE('l', "list", &cmdmode, N_("list tag names"), 'l'),
|
||||||
{ OPTION_INTEGER, 'n', NULL, &filter.lines, N_("n"),
|
{
|
||||||
N_("print <n> lines of each tag message"),
|
.type = OPTION_INTEGER,
|
||||||
PARSE_OPT_OPTARG, NULL, 1 },
|
.short_name = 'n',
|
||||||
|
.value = &filter.lines,
|
||||||
|
.argh = N_("n"),
|
||||||
|
.help = N_("print <n> lines of each tag message"),
|
||||||
|
.flags = PARSE_OPT_OPTARG,
|
||||||
|
.defval = 1,
|
||||||
|
},
|
||||||
OPT_CMDMODE('d', "delete", &cmdmode, N_("delete tags"), 'd'),
|
OPT_CMDMODE('d', "delete", &cmdmode, N_("delete tags"), 'd'),
|
||||||
OPT_CMDMODE('v', "verify", &cmdmode, N_("verify tags"), 'v'),
|
OPT_CMDMODE('v', "verify", &cmdmode, N_("verify tags"), 'v'),
|
||||||
|
|
||||||
|
@ -513,9 +519,14 @@ int cmd_tag(int argc,
|
||||||
N_("do not output a newline after empty formatted refs")),
|
N_("do not output a newline after empty formatted refs")),
|
||||||
OPT_REF_SORT(&sorting_options),
|
OPT_REF_SORT(&sorting_options),
|
||||||
{
|
{
|
||||||
OPTION_CALLBACK, 0, "points-at", &filter.points_at, N_("object"),
|
.type = OPTION_CALLBACK,
|
||||||
N_("print only tags of the object"), PARSE_OPT_LASTARG_DEFAULT,
|
.long_name = "points-at",
|
||||||
parse_opt_object_name, (intptr_t) "HEAD"
|
.value = &filter.points_at,
|
||||||
|
.argh = N_("object"),
|
||||||
|
.help = N_("print only tags of the object"),
|
||||||
|
.flags = PARSE_OPT_LASTARG_DEFAULT,
|
||||||
|
.callback = parse_opt_object_name,
|
||||||
|
.defval = (intptr_t) "HEAD",
|
||||||
},
|
},
|
||||||
OPT_STRING( 0 , "format", &format.format, N_("format"),
|
OPT_STRING( 0 , "format", &format.format, N_("format"),
|
||||||
N_("format to use for the output")),
|
N_("format to use for the output")),
|
||||||
|
|
|
@ -964,29 +964,51 @@ int cmd_update_index(int argc,
|
||||||
N_("like --refresh, but ignore assume-unchanged setting"),
|
N_("like --refresh, but ignore assume-unchanged setting"),
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
really_refresh_callback),
|
really_refresh_callback),
|
||||||
{OPTION_LOWLEVEL_CALLBACK, 0, "cacheinfo", NULL,
|
{
|
||||||
N_("<mode>,<object>,<path>"),
|
.type = OPTION_LOWLEVEL_CALLBACK,
|
||||||
N_("add the specified entry to the index"),
|
.long_name = "cacheinfo",
|
||||||
PARSE_OPT_NOARG | /* disallow --cacheinfo=<mode> form */
|
.argh = N_("<mode>,<object>,<path>"),
|
||||||
|
.help = N_("add the specified entry to the index"),
|
||||||
|
.flags = PARSE_OPT_NOARG | /* disallow --cacheinfo=<mode> form */
|
||||||
PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP,
|
PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP,
|
||||||
NULL, 0,
|
.ll_callback = cacheinfo_callback,
|
||||||
cacheinfo_callback},
|
},
|
||||||
OPT_CALLBACK_F(0, "chmod", &set_executable_bit, "(+|-)x",
|
OPT_CALLBACK_F(0, "chmod", &set_executable_bit, "(+|-)x",
|
||||||
N_("override the executable bit of the listed files"),
|
N_("override the executable bit of the listed files"),
|
||||||
PARSE_OPT_NONEG,
|
PARSE_OPT_NONEG,
|
||||||
chmod_callback),
|
chmod_callback),
|
||||||
{OPTION_SET_INT, 0, "assume-unchanged", &mark_valid_only, NULL,
|
{
|
||||||
N_("mark files as \"not changing\""),
|
.type = OPTION_SET_INT,
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG},
|
.long_name = "assume-unchanged",
|
||||||
{OPTION_SET_INT, 0, "no-assume-unchanged", &mark_valid_only, NULL,
|
.value = &mark_valid_only,
|
||||||
N_("clear assumed-unchanged bit"),
|
.help = N_("mark files as \"not changing\""),
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG},
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
{OPTION_SET_INT, 0, "skip-worktree", &mark_skip_worktree_only, NULL,
|
.defval = MARK_FLAG,
|
||||||
N_("mark files as \"index-only\""),
|
},
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG},
|
{
|
||||||
{OPTION_SET_INT, 0, "no-skip-worktree", &mark_skip_worktree_only, NULL,
|
.type = OPTION_SET_INT,
|
||||||
N_("clear skip-worktree bit"),
|
.long_name = "no-assume-unchanged",
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG},
|
.value = &mark_valid_only,
|
||||||
|
.help = N_("clear assumed-unchanged bit"),
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
.defval = UNMARK_FLAG,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_SET_INT,
|
||||||
|
.long_name = "skip-worktree",
|
||||||
|
.value = &mark_skip_worktree_only,
|
||||||
|
.help = N_("mark files as \"index-only\""),
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
.defval = MARK_FLAG,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_SET_INT,
|
||||||
|
.long_name = "no-skip-worktree",
|
||||||
|
.value = &mark_skip_worktree_only,
|
||||||
|
.help = N_("clear skip-worktree bit"),
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
.defval = UNMARK_FLAG,
|
||||||
|
},
|
||||||
OPT_BOOL(0, "ignore-skip-worktree-entries", &ignore_skip_worktree_entries,
|
OPT_BOOL(0, "ignore-skip-worktree-entries", &ignore_skip_worktree_entries,
|
||||||
N_("do not touch index-only entries")),
|
N_("do not touch index-only entries")),
|
||||||
OPT_SET_INT(0, "info-only", &info_only,
|
OPT_SET_INT(0, "info-only", &info_only,
|
||||||
|
@ -995,22 +1017,39 @@ int cmd_update_index(int argc,
|
||||||
N_("remove named paths even if present in worktree"), 1),
|
N_("remove named paths even if present in worktree"), 1),
|
||||||
OPT_BOOL('z', NULL, &nul_term_line,
|
OPT_BOOL('z', NULL, &nul_term_line,
|
||||||
N_("with --stdin: input lines are terminated by null bytes")),
|
N_("with --stdin: input lines are terminated by null bytes")),
|
||||||
{OPTION_LOWLEVEL_CALLBACK, 0, "stdin", &read_from_stdin, NULL,
|
{
|
||||||
N_("read list of paths to be updated from standard input"),
|
.type = OPTION_LOWLEVEL_CALLBACK,
|
||||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
.long_name = "stdin",
|
||||||
NULL, 0, stdin_callback},
|
.value = &read_from_stdin,
|
||||||
{OPTION_LOWLEVEL_CALLBACK, 0, "index-info", &nul_term_line, NULL,
|
.help = N_("read list of paths to be updated from standard input"),
|
||||||
N_("add entries from standard input to the index"),
|
.flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
.ll_callback = stdin_callback,
|
||||||
NULL, 0, stdin_cacheinfo_callback},
|
},
|
||||||
{OPTION_LOWLEVEL_CALLBACK, 0, "unresolve", &has_errors, NULL,
|
{
|
||||||
N_("repopulate stages #2 and #3 for the listed paths"),
|
.type = OPTION_LOWLEVEL_CALLBACK,
|
||||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
.long_name = "index-info",
|
||||||
NULL, 0, unresolve_callback},
|
.value = &nul_term_line,
|
||||||
{OPTION_LOWLEVEL_CALLBACK, 'g', "again", &has_errors, NULL,
|
.help = N_("add entries from standard input to the index"),
|
||||||
N_("only update entries that differ from HEAD"),
|
.flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
.ll_callback = stdin_cacheinfo_callback,
|
||||||
NULL, 0, reupdate_callback},
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_LOWLEVEL_CALLBACK,
|
||||||
|
.long_name = "unresolve",
|
||||||
|
.value = &has_errors,
|
||||||
|
.help = N_("repopulate stages #2 and #3 for the listed paths"),
|
||||||
|
.flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||||
|
.ll_callback = unresolve_callback,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_LOWLEVEL_CALLBACK,
|
||||||
|
.short_name = 'g',
|
||||||
|
.long_name = "again",
|
||||||
|
.value = &has_errors,
|
||||||
|
.help = N_("only update entries that differ from HEAD"),
|
||||||
|
.flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG,
|
||||||
|
.ll_callback = reupdate_callback,
|
||||||
|
},
|
||||||
OPT_BIT(0, "ignore-missing", &refresh_args.flags,
|
OPT_BIT(0, "ignore-missing", &refresh_args.flags,
|
||||||
N_("ignore files missing from worktree"),
|
N_("ignore files missing from worktree"),
|
||||||
REFRESH_IGNORE_MISSING),
|
REFRESH_IGNORE_MISSING),
|
||||||
|
@ -1036,12 +1075,22 @@ int cmd_update_index(int argc,
|
||||||
N_("write out the index even if is not flagged as changed"), 1),
|
N_("write out the index even if is not flagged as changed"), 1),
|
||||||
OPT_BOOL(0, "fsmonitor", &fsmonitor,
|
OPT_BOOL(0, "fsmonitor", &fsmonitor,
|
||||||
N_("enable or disable file system monitor")),
|
N_("enable or disable file system monitor")),
|
||||||
{OPTION_SET_INT, 0, "fsmonitor-valid", &mark_fsmonitor_only, NULL,
|
{
|
||||||
N_("mark files as fsmonitor valid"),
|
.type = OPTION_SET_INT,
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG},
|
.long_name = "fsmonitor-valid",
|
||||||
{OPTION_SET_INT, 0, "no-fsmonitor-valid", &mark_fsmonitor_only, NULL,
|
.value = &mark_fsmonitor_only,
|
||||||
N_("clear fsmonitor valid bit"),
|
.help = N_("mark files as fsmonitor valid"),
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG},
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
.defval = MARK_FLAG,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_SET_INT,
|
||||||
|
.long_name = "no-fsmonitor-valid",
|
||||||
|
.value = &mark_fsmonitor_only,
|
||||||
|
.help = N_("clear fsmonitor valid bit"),
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
.defval = UNMARK_FLAG,
|
||||||
|
},
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,14 @@ int cmd_write_tree(int argc,
|
||||||
WRITE_TREE_MISSING_OK),
|
WRITE_TREE_MISSING_OK),
|
||||||
OPT_STRING(0, "prefix", &tree_prefix, N_("<prefix>/"),
|
OPT_STRING(0, "prefix", &tree_prefix, N_("<prefix>/"),
|
||||||
N_("write tree object for a subdirectory <prefix>")),
|
N_("write tree object for a subdirectory <prefix>")),
|
||||||
{ OPTION_BIT, 0, "ignore-cache-tree", &flags, NULL,
|
{
|
||||||
N_("only useful for debugging"),
|
.type = OPTION_BIT,
|
||||||
PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, NULL,
|
.long_name = "ignore-cache-tree",
|
||||||
WRITE_TREE_IGNORE_CACHE_TREE },
|
.value = &flags,
|
||||||
|
.help = N_("only useful for debugging"),
|
||||||
|
.flags = PARSE_OPT_HIDDEN | PARSE_OPT_NOARG,
|
||||||
|
.defval = WRITE_TREE_IGNORE_CACHE_TREE,
|
||||||
|
},
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
13
diff.c
13
diff.c
|
@ -5892,10 +5892,15 @@ struct option *add_diff_options(const struct option *opts,
|
||||||
OPT_CALLBACK_F(0, "diff-filter", options, N_("[(A|C|D|M|R|T|U|X|B)...[*]]"),
|
OPT_CALLBACK_F(0, "diff-filter", options, N_("[(A|C|D|M|R|T|U|X|B)...[*]]"),
|
||||||
N_("select files by diff type"),
|
N_("select files by diff type"),
|
||||||
PARSE_OPT_NONEG, diff_opt_diff_filter),
|
PARSE_OPT_NONEG, diff_opt_diff_filter),
|
||||||
{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
|
{
|
||||||
N_("output to a specific file"),
|
.type = OPTION_CALLBACK,
|
||||||
PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
|
.long_name = "output",
|
||||||
|
.value = options,
|
||||||
|
.argh = N_("<file>"),
|
||||||
|
.help = N_("output to a specific file"),
|
||||||
|
.flags = PARSE_OPT_NONEG,
|
||||||
|
.ll_callback = diff_opt_output,
|
||||||
|
},
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
13
ref-filter.h
13
ref-filter.h
|
@ -114,10 +114,15 @@ struct ref_format {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Macros for checking --merged and --no-merged options */
|
/* Macros for checking --merged and --no-merged options */
|
||||||
#define _OPT_MERGED_NO_MERGED(option, filter, h) \
|
#define _OPT_MERGED_NO_MERGED(option, filter, h) { \
|
||||||
{ OPTION_CALLBACK, 0, option, (filter), N_("commit"), (h), \
|
.type = OPTION_CALLBACK, \
|
||||||
PARSE_OPT_LASTARG_DEFAULT | PARSE_OPT_NONEG, \
|
.long_name = option, \
|
||||||
parse_opt_merge_filter, (intptr_t) "HEAD" \
|
.value = (filter), \
|
||||||
|
.argh = N_("commit"), \
|
||||||
|
.help = (h), \
|
||||||
|
.flags = PARSE_OPT_LASTARG_DEFAULT | PARSE_OPT_NONEG, \
|
||||||
|
.callback = parse_opt_merge_filter, \
|
||||||
|
.defval = (intptr_t) "HEAD", \
|
||||||
}
|
}
|
||||||
#define OPT_MERGED(f, h) _OPT_MERGED_NO_MERGED("merged", f, h)
|
#define OPT_MERGED(f, h) _OPT_MERGED_NO_MERGED("merged", f, h)
|
||||||
#define OPT_NO_MERGED(f, h) _OPT_MERGED_NO_MERGED("no-merged", f, h)
|
#define OPT_NO_MERGED(f, h) _OPT_MERGED_NO_MERGED("no-merged", f, h)
|
||||||
|
|
|
@ -124,8 +124,15 @@ int cmd__parse_options(int argc, const char **argv)
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
OPT_BOOL(0, "yes", &boolean, "get a boolean"),
|
OPT_BOOL(0, "yes", &boolean, "get a boolean"),
|
||||||
OPT_BOOL('D', "no-doubt", &boolean, "begins with 'no-'"),
|
OPT_BOOL('D', "no-doubt", &boolean, "begins with 'no-'"),
|
||||||
{ OPTION_SET_INT, 'B', "no-fear", &boolean, NULL,
|
{
|
||||||
"be brave", PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1 },
|
.type = OPTION_SET_INT,
|
||||||
|
.short_name = 'B',
|
||||||
|
.long_name = "no-fear",
|
||||||
|
.value = &boolean,
|
||||||
|
.help = "be brave",
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
.defval = 1,
|
||||||
|
},
|
||||||
OPT_COUNTUP('b', "boolean", &boolean, "increment by one"),
|
OPT_COUNTUP('b', "boolean", &boolean, "increment by one"),
|
||||||
OPT_BIT('4', "or4", &boolean,
|
OPT_BIT('4', "or4", &boolean,
|
||||||
"bitwise-or boolean with ...0100", 4),
|
"bitwise-or boolean with ...0100", 4),
|
||||||
|
@ -155,12 +162,27 @@ int cmd__parse_options(int argc, const char **argv)
|
||||||
OPT_GROUP("Magic arguments"),
|
OPT_GROUP("Magic arguments"),
|
||||||
OPT_NUMBER_CALLBACK(&integer, "set integer to NUM",
|
OPT_NUMBER_CALLBACK(&integer, "set integer to NUM",
|
||||||
number_callback),
|
number_callback),
|
||||||
{ OPTION_COUNTUP, '+', NULL, &boolean, NULL, "same as -b",
|
{
|
||||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH },
|
.type = OPTION_COUNTUP,
|
||||||
{ OPTION_COUNTUP, 0, "ambiguous", &ambiguous, NULL,
|
.short_name = '+',
|
||||||
"positive ambiguity", PARSE_OPT_NOARG | PARSE_OPT_NONEG },
|
.value = &boolean,
|
||||||
{ OPTION_COUNTUP, 0, "no-ambiguous", &ambiguous, NULL,
|
.help = "same as -b",
|
||||||
"negative ambiguity", PARSE_OPT_NOARG | PARSE_OPT_NONEG },
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_COUNTUP,
|
||||||
|
.long_name = "ambiguous",
|
||||||
|
.value = &ambiguous,
|
||||||
|
.help = "positive ambiguity",
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = OPTION_COUNTUP,
|
||||||
|
.long_name = "no-ambiguous",
|
||||||
|
.value = &ambiguous,
|
||||||
|
.help = "negative ambiguity",
|
||||||
|
.flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||||
|
},
|
||||||
OPT_GROUP("Standard options"),
|
OPT_GROUP("Standard options"),
|
||||||
OPT__ABBREV(&abbrev),
|
OPT__ABBREV(&abbrev),
|
||||||
OPT__VERBOSE(&verbose, "be verbose"),
|
OPT__VERBOSE(&verbose, "be verbose"),
|
||||||
|
|
Loading…
Reference in New Issue