提交 66fd2315 编写于 作者: J Junio C Hamano

Merge branch 'lt/push-config'

* lt/push-config:
  git push: add verbose flag and allow overriding of default target repository
  Allow '-' in config variable names
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
static const char push_usage[] = "git-push [--all] [--tags] [-f | --force] <repository> [<refspec>...]"; static const char push_usage[] = "git-push [--all] [--tags] [-f | --force] <repository> [<refspec>...]";
static int all, tags, force, thin = 1; static int all, tags, force, thin = 1, verbose;
static const char *execute; static const char *execute;
#define BUF_SIZE (2084) #define BUF_SIZE (2084)
...@@ -248,6 +248,8 @@ static int do_push(const char *repo) ...@@ -248,6 +248,8 @@ static int do_push(const char *repo)
while (dest_refspec_nr--) while (dest_refspec_nr--)
argv[dest_argc++] = *dest_refspec++; argv[dest_argc++] = *dest_refspec++;
argv[dest_argc] = NULL; argv[dest_argc] = NULL;
if (verbose)
fprintf(stderr, "Pushing to %s\n", dest);
err = run_command_v(argc, argv); err = run_command_v(argc, argv);
if (!err) if (!err)
continue; continue;
...@@ -281,6 +283,14 @@ int cmd_push(int argc, const char **argv, const char *prefix) ...@@ -281,6 +283,14 @@ int cmd_push(int argc, const char **argv, const char *prefix)
i++; i++;
break; break;
} }
if (!strcmp(arg, "-v")) {
verbose=1;
continue;
}
if (!strncmp(arg, "--repo=", 7)) {
repo = arg+7;
continue;
}
if (!strcmp(arg, "--all")) { if (!strcmp(arg, "--all")) {
all = 1; all = 1;
continue; continue;
......
...@@ -103,6 +103,11 @@ static char *parse_value(void) ...@@ -103,6 +103,11 @@ static char *parse_value(void)
} }
} }
static inline int iskeychar(int c)
{
return isalnum(c) || c == '-';
}
static int get_value(config_fn_t fn, char *name, unsigned int len) static int get_value(config_fn_t fn, char *name, unsigned int len)
{ {
int c; int c;
...@@ -113,7 +118,7 @@ static int get_value(config_fn_t fn, char *name, unsigned int len) ...@@ -113,7 +118,7 @@ static int get_value(config_fn_t fn, char *name, unsigned int len)
c = get_next_char(); c = get_next_char();
if (c == EOF) if (c == EOF)
break; break;
if (!isalnum(c)) if (!iskeychar(c))
break; break;
name[len++] = tolower(c); name[len++] = tolower(c);
if (len >= MAXNAME) if (len >= MAXNAME)
...@@ -181,7 +186,7 @@ static int get_base_var(char *name) ...@@ -181,7 +186,7 @@ static int get_base_var(char *name)
return baselen; return baselen;
if (isspace(c)) if (isspace(c))
return get_extended_base_var(name, baselen, c); return get_extended_base_var(name, baselen, c);
if (!isalnum(c) && c != '.') if (!iskeychar(c) && c != '.')
return -1; return -1;
if (baselen > MAXNAME / 2) if (baselen > MAXNAME / 2)
return -1; return -1;
...@@ -573,7 +578,7 @@ int git_config_set_multivar(const char* key, const char* value, ...@@ -573,7 +578,7 @@ int git_config_set_multivar(const char* key, const char* value,
dot = 1; dot = 1;
/* Leave the extended basename untouched.. */ /* Leave the extended basename untouched.. */
if (!dot || i > store.baselen) { if (!dot || i > store.baselen) {
if (!isalnum(c) || (i == store.baselen+1 && !isalpha(c))) { if (!iskeychar(c) || (i == store.baselen+1 && !isalpha(c))) {
fprintf(stderr, "invalid key: %s\n", key); fprintf(stderr, "invalid key: %s\n", key);
free(store.key); free(store.key);
ret = 1; ret = 1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册