Skip to content

Commit

Permalink
Avoid printing unnecessary warnings during fetch and push
Browse files Browse the repository at this point in the history
If a transport doesn't support an option we already are telling
the higher level application (fetch or push) that the option is not
valid by sending back a >0 return value from transport_set_option
so there's not a strong motivation to have the function perform the
output itself.  Instead we should let the higher level application
do the output if it is necessary.  This avoids always telling the
user that depth isn't supported on HTTP urls even when they did
not pass a --depth option to git-fetch.

If the user passes an option and the option value is invalid we now
properly die in git-fetch instead of just spitting out a message
and running anyway.  This mimics prior behavior better where
incorrect/malformed options are not accepted by the process.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Sep 19, 2007
1 parent 85682c1 commit ab865e6
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 12 deletions.
18 changes: 15 additions & 3 deletions builtin-fetch.c
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,17 @@ static int do_fetch(struct transport *transport,
return 0;
}

static void set_option(const char *name, const char *value)
{
int r = transport_set_option(transport, name, value);
if (r < 0)
die("Option \"%s\" value \"%s\" is not valid for %s\n",
name, value, transport->url);
if (r > 0)
warning("Option \"%s\" is ignored for %s\n",
name, transport->url);
}

int cmd_fetch(int argc, const char **argv, const char *prefix)
{
struct remote *remote;
Expand Down Expand Up @@ -525,10 +536,11 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
if (quiet)
transport->verbose = 0;
if (upload_pack)
transport_set_option(transport, TRANS_OPT_UPLOADPACK, upload_pack);
set_option(TRANS_OPT_UPLOADPACK, upload_pack);
if (keep)
transport_set_option(transport, TRANS_OPT_KEEP, "yes");
transport_set_option(transport, TRANS_OPT_DEPTH, depth);
set_option(TRANS_OPT_KEEP, "yes");
if (depth)
set_option(TRANS_OPT_DEPTH, depth);

if (!transport->url)
die("Where do you want to fetch from today?");
Expand Down
11 changes: 2 additions & 9 deletions transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -460,16 +460,9 @@ struct transport *transport_get(struct remote *remote, const char *url)
int transport_set_option(struct transport *transport,
const char *name, const char *value)
{
int ret = 1;
if (transport->ops->set_option)
ret = transport->ops->set_option(transport, name, value);
if (ret < 0)
fprintf(stderr, "For '%s' option %s cannot be set to '%s'\n",
transport->url, name, value);
if (ret > 0)
fprintf(stderr, "For '%s' option %s is ignored\n",
transport->url, name);
return ret;
return transport->ops->set_option(transport, name, value);
return 1;
}

int transport_push(struct transport *transport,
Expand Down

0 comments on commit ab865e6

Please sign in to comment.