Skip to content

Commit

Permalink
git remote: Separate usage strings for subcommands
Browse files Browse the repository at this point in the history
When the usage string for a subcommand must be printed,
only print the information relevant to that command.

This commit also removes the complete options list from
the first line of the subcommand usage string. Instead,
individual options are documented in the detailed
description following the general usage line.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Tim Henigan authored and Junio C Hamano committed Nov 21, 2009
1 parent 78d553b commit 4504107
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 21 deletions.
7 changes: 4 additions & 3 deletions Documentation/git-remote.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ SYNOPSIS
'git remote add' [-t <branch>] [-m <master>] [-f] [--mirror] <name> <url>
'git remote rename' <old> <new>
'git remote rm' <name>
'git remote set-head' <name> [-a | -d | <branch>]
'git remote show' [-n] <name>
'git remote set-head' <name> (-a | -d | <branch>)
'git remote' [-v | --verbose] 'show' [-n] <name>
'git remote prune' [-n | --dry-run] <name>
'git remote update' [-p | --prune] [group | remote]...
'git remote' [-v | --verbose] 'update' [-p | --prune] [group | remote]...

DESCRIPTION
-----------
Expand All @@ -30,6 +30,7 @@ OPTIONS
-v::
--verbose::
Be a little more verbose and show remote url after name.
NOTE: This must be placed between `remote` and `subcommand`.


COMMANDS
Expand Down
66 changes: 48 additions & 18 deletions builtin-remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,48 @@ static const char * const builtin_remote_usage[] = {
"git remote add [-t <branch>] [-m <master>] [-f] [--mirror] <name> <url>",
"git remote rename <old> <new>",
"git remote rm <name>",
"git remote set-head <name> [-a | -d | <branch>]",
"git remote show [-n] <name>",
"git remote set-head <name> (-a | -d | <branch>)",
"git remote [-v | --verbose] show [-n] <name>",
"git remote prune [-n | --dry-run] <name>",
"git remote [-v | --verbose] update [-p | --prune] [group]",
NULL
};

static const char * const builtin_remote_add_usage[] = {
"git remote add [<options>] <name> <url>",
NULL
};

static const char * const builtin_remote_rename_usage[] = {
"git remote rename <old> <new>",
NULL
};

static const char * const builtin_remote_rm_usage[] = {
"git remote rm <name>",
NULL
};

static const char * const builtin_remote_sethead_usage[] = {
"git remote set-head <name> (-a | -d | <branch>])",
NULL
};

static const char * const builtin_remote_show_usage[] = {
"git remote show [<options>] <name>",
NULL
};

static const char * const builtin_remote_prune_usage[] = {
"git remote prune [<options>] <name>",
NULL
};

static const char * const builtin_remote_update_usage[] = {
"git remote update [<options>] [<group> | <remote>]...",
NULL
};

#define GET_REF_STATES (1<<0)
#define GET_HEAD_NAMES (1<<1)
#define GET_PUSH_REF_STATES (1<<2)
Expand Down Expand Up @@ -70,7 +105,6 @@ static int add(int argc, const char **argv)
int i;

struct option options[] = {
OPT_GROUP("add specific options"),
OPT_BOOLEAN('f', "fetch", &fetch, "fetch the remote branches"),
OPT_CALLBACK('t', "track", &track, "branch",
"branch(es) to track", opt_parse_track),
Expand All @@ -79,11 +113,11 @@ static int add(int argc, const char **argv)
OPT_END()
};

argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
argc = parse_options(argc, argv, NULL, options, builtin_remote_add_usage,
0);

if (argc < 2)
usage_with_options(builtin_remote_usage, options);
usage_with_options(builtin_remote_add_usage, options);

name = argv[0];
url = argv[1];
Expand Down Expand Up @@ -540,7 +574,7 @@ static int mv(int argc, const char **argv)
int i;

if (argc != 3)
usage_with_options(builtin_remote_usage, options);
usage_with_options(builtin_remote_rename_usage, options);

rename.old = argv[1];
rename.new = argv[2];
Expand Down Expand Up @@ -681,7 +715,7 @@ static int rm(int argc, const char **argv)
int i, result;

if (argc != 2)
usage_with_options(builtin_remote_usage, options);
usage_with_options(builtin_remote_rm_usage, options);

remote = remote_get(argv[1]);
if (!remote)
Expand Down Expand Up @@ -976,15 +1010,14 @@ static int show(int argc, const char **argv)
{
int no_query = 0, result = 0, query_flag = 0;
struct option options[] = {
OPT_GROUP("show specific options"),
OPT_BOOLEAN('n', NULL, &no_query, "do not query remotes"),
OPT_END()
};
struct ref_states states;
struct string_list info_list = { NULL, 0, 0, 0 };
struct show_info info;

argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
argc = parse_options(argc, argv, NULL, options, builtin_remote_show_usage,
0);

if (argc < 1)
Expand Down Expand Up @@ -1081,14 +1114,13 @@ static int set_head(int argc, const char **argv)
char *head_name = NULL;

struct option options[] = {
OPT_GROUP("set-head specific options"),
OPT_BOOLEAN('a', "auto", &opt_a,
"set refs/remotes/<name>/HEAD according to remote"),
OPT_BOOLEAN('d', "delete", &opt_d,
"delete refs/remotes/<name>/HEAD"),
OPT_END()
};
argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
argc = parse_options(argc, argv, NULL, options, builtin_remote_sethead_usage,
0);
if (argc)
strbuf_addf(&buf, "refs/remotes/%s/HEAD", argv[0]);
Expand All @@ -1114,7 +1146,7 @@ static int set_head(int argc, const char **argv)
if (delete_ref(buf.buf, NULL, REF_NODEREF))
result |= error("Could not delete %s", buf.buf);
} else
usage_with_options(builtin_remote_usage, options);
usage_with_options(builtin_remote_sethead_usage, options);

if (head_name) {
unsigned char sha1[20];
Expand All @@ -1138,16 +1170,15 @@ static int prune(int argc, const char **argv)
{
int dry_run = 0, result = 0;
struct option options[] = {
OPT_GROUP("prune specific options"),
OPT__DRY_RUN(&dry_run),
OPT_END()
};

argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
argc = parse_options(argc, argv, NULL, options, builtin_remote_prune_usage,
0);

if (argc < 1)
usage_with_options(builtin_remote_usage, options);
usage_with_options(builtin_remote_prune_usage, options);

for (; argc; argc--, argv++)
result |= prune_remote(*argv, dry_run);
Expand Down Expand Up @@ -1228,13 +1259,12 @@ static int update(int argc, const char **argv)
struct string_list list = { NULL, 0, 0, 0 };
static const char *default_argv[] = { NULL, "default", NULL };
struct option options[] = {
OPT_GROUP("update specific options"),
OPT_BOOLEAN('p', "prune", &prune,
"prune remotes after fetching"),
OPT_END()
};

argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
argc = parse_options(argc, argv, NULL, options, builtin_remote_update_usage,
PARSE_OPT_KEEP_ARGV0);
if (argc < 2) {
argc = 2;
Expand Down Expand Up @@ -1334,7 +1364,7 @@ static int show_all(void)
int cmd_remote(int argc, const char **argv, const char *prefix)
{
struct option options[] = {
OPT__VERBOSE(&verbose),
OPT_BOOLEAN('v', "verbose", &verbose, "be verbose; must be placed before a subcommand"),
OPT_END()
};
int result;
Expand Down

0 comments on commit 4504107

Please sign in to comment.