mirror of
https://github.com/git/git.git
synced 2026-04-02 04:50:12 +02:00
Merge commit 'origin/master' into msysgit/devel
This commit is contained in:
@@ -63,6 +63,10 @@ OPTIONS
|
||||
-u::
|
||||
Update affected files from CVS repository before attempting export.
|
||||
|
||||
-k::
|
||||
Reverse CVS keyword expansion (e.g. $Revision: 1.2.3.4$
|
||||
becomes $Revision$) in working CVS checkout before applying patch.
|
||||
|
||||
-w::
|
||||
Specify the location of the CVS checkout to use for the export. This
|
||||
option does not require GIT_DIR to be set before execution if the
|
||||
|
||||
@@ -3277,9 +3277,11 @@ int cmd_apply(int argc, const char **argv, const char *unused_prefix)
|
||||
OPT_BOOLEAN(0, "stat", &diffstat,
|
||||
"instead of applying the patch, output diffstat for the input"),
|
||||
{ OPTION_BOOLEAN, 0, "allow-binary-replacement", &binary,
|
||||
NULL, "old option, now no-op", PARSE_OPT_HIDDEN },
|
||||
NULL, "old option, now no-op",
|
||||
PARSE_OPT_HIDDEN | PARSE_OPT_NOARG },
|
||||
{ OPTION_BOOLEAN, 0, "binary", &binary,
|
||||
NULL, "old option, now no-op", PARSE_OPT_HIDDEN },
|
||||
NULL, "old option, now no-op",
|
||||
PARSE_OPT_HIDDEN | PARSE_OPT_NOARG },
|
||||
OPT_BOOLEAN(0, "numstat", &numstat,
|
||||
"shows number of added and deleted lines in decimal notation"),
|
||||
OPT_BOOLEAN(0, "summary", &summary,
|
||||
|
||||
@@ -561,14 +561,6 @@ static void populate_value(struct refinfo *ref)
|
||||
|
||||
ref->value = xcalloc(sizeof(struct atom_value), used_atom_cnt);
|
||||
|
||||
buf = get_obj(ref->objectname, &obj, &size, &eaten);
|
||||
if (!buf)
|
||||
die("missing object %s for %s",
|
||||
sha1_to_hex(ref->objectname), ref->refname);
|
||||
if (!obj)
|
||||
die("parse_object_buffer failed on %s for %s",
|
||||
sha1_to_hex(ref->objectname), ref->refname);
|
||||
|
||||
/* Fill in specials first */
|
||||
for (i = 0; i < used_atom_cnt; i++) {
|
||||
const char *name = used_atom[i];
|
||||
@@ -621,6 +613,22 @@ static void populate_value(struct refinfo *ref)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < used_atom_cnt; i++) {
|
||||
struct atom_value *v = &ref->value[i];
|
||||
if (v->s == NULL)
|
||||
goto need_obj;
|
||||
}
|
||||
return;
|
||||
|
||||
need_obj:
|
||||
buf = get_obj(ref->objectname, &obj, &size, &eaten);
|
||||
if (!buf)
|
||||
die("missing object %s for %s",
|
||||
sha1_to_hex(ref->objectname), ref->refname);
|
||||
if (!obj)
|
||||
die("parse_object_buffer failed on %s for %s",
|
||||
sha1_to_hex(ref->objectname), ref->refname);
|
||||
|
||||
grab_values(ref->value, 0, obj, buf, size);
|
||||
if (!eaten)
|
||||
free(buf);
|
||||
@@ -926,7 +934,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
|
||||
|
||||
memset(&cbdata, 0, sizeof(cbdata));
|
||||
cbdata.grab_pattern = argv;
|
||||
for_each_ref(grab_single_ref, &cbdata);
|
||||
for_each_rawref(grab_single_ref, &cbdata);
|
||||
refs = cbdata.grab_array;
|
||||
num_refs = cbdata.grab_cnt;
|
||||
|
||||
|
||||
@@ -376,8 +376,8 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
|
||||
struct commit_list *with_commit = NULL;
|
||||
struct option options[] = {
|
||||
OPT_BOOLEAN('l', NULL, &list, "list tag names"),
|
||||
{ OPTION_INTEGER, 'n', NULL, &lines, NULL,
|
||||
"print n lines of each tag message",
|
||||
{ OPTION_INTEGER, 'n', NULL, &lines, "n",
|
||||
"print <n> lines of each tag message",
|
||||
PARSE_OPT_OPTARG, NULL, 1 },
|
||||
OPT_BOOLEAN('d', NULL, &delete, "delete tags"),
|
||||
OPT_BOOLEAN('v', NULL, &verify, "verify tags"),
|
||||
|
||||
@@ -8,9 +8,9 @@ use File::Basename qw(basename dirname);
|
||||
use File::Spec;
|
||||
use Git;
|
||||
|
||||
our ($opt_h, $opt_P, $opt_p, $opt_v, $opt_c, $opt_f, $opt_a, $opt_m, $opt_d, $opt_u, $opt_w, $opt_W);
|
||||
our ($opt_h, $opt_P, $opt_p, $opt_v, $opt_c, $opt_f, $opt_a, $opt_m, $opt_d, $opt_u, $opt_w, $opt_W, $opt_k);
|
||||
|
||||
getopts('uhPpvcfam:d:w:W');
|
||||
getopts('uhPpvcfkam:d:w:W');
|
||||
|
||||
$opt_h && usage();
|
||||
|
||||
@@ -287,7 +287,26 @@ foreach my $f (@files) {
|
||||
$dirty = 1;
|
||||
warn "File $f not up to date but has status '$cvsstat{$f}' in your CVS checkout!\n";
|
||||
}
|
||||
|
||||
# Depending on how your GIT tree got imported from CVS you may
|
||||
# have a conflict between expanded keywords in your CVS tree and
|
||||
# unexpanded keywords in the patch about to be applied.
|
||||
if ($opt_k) {
|
||||
my $orig_file ="$f.orig";
|
||||
rename $f, $orig_file;
|
||||
open(FILTER_IN, "<$orig_file") or die "Cannot open $orig_file\n";
|
||||
open(FILTER_OUT, ">$f") or die "Cannot open $f\n";
|
||||
while (<FILTER_IN>)
|
||||
{
|
||||
my $line = $_;
|
||||
$line =~ s/\$([A-Z][a-z]+):[^\$]+\$/\$\1\$/g;
|
||||
print FILTER_OUT $line;
|
||||
}
|
||||
close FILTER_IN;
|
||||
close FILTER_OUT;
|
||||
}
|
||||
}
|
||||
|
||||
if ($dirty) {
|
||||
if ($opt_f) { warn "The tree is not clean -- forced merge\n";
|
||||
$dirty = 0;
|
||||
@@ -391,7 +410,7 @@ sleep(1);
|
||||
|
||||
sub usage {
|
||||
print STDERR <<END;
|
||||
Usage: GIT_DIR=/path/to/.git git cvsexportcommit [-h] [-p] [-v] [-c] [-f] [-u] [-w cvsworkdir] [-m msgprefix] [ parent ] commit
|
||||
Usage: GIT_DIR=/path/to/.git git cvsexportcommit [-h] [-p] [-v] [-c] [-f] [-u] [-k] [-w cvsworkdir] [-m msgprefix] [ parent ] commit
|
||||
END
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -176,13 +176,11 @@ case "$merge_head" in
|
||||
?*' '?*)
|
||||
if test -z "$orig_head"
|
||||
then
|
||||
echo >&2 "Cannot merge multiple branches into empty head"
|
||||
exit 1
|
||||
die "Cannot merge multiple branches into empty head"
|
||||
fi
|
||||
if test true = "$rebase"
|
||||
then
|
||||
echo >&2 "Cannot rebase onto multiple branches"
|
||||
exit 1
|
||||
die "Cannot rebase onto multiple branches"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -168,10 +168,8 @@ run_pre_rebase_hook () {
|
||||
if test -z "$OK_TO_SKIP_PRE_REBASE" &&
|
||||
test -x "$GIT_DIR/hooks/pre-rebase"
|
||||
then
|
||||
"$GIT_DIR/hooks/pre-rebase" ${1+"$@"} || {
|
||||
echo >&2 "The pre-rebase hook refused to rebase."
|
||||
exit 1
|
||||
}
|
||||
"$GIT_DIR/hooks/pre-rebase" ${1+"$@"} ||
|
||||
die "The pre-rebase hook refused to rebase."
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -359,8 +357,7 @@ fi
|
||||
|
||||
# The tree must be really really clean.
|
||||
if ! git update-index --ignore-submodules --refresh; then
|
||||
echo >&2 "cannot rebase: you have unstaged changes"
|
||||
exit 1
|
||||
die "cannot rebase: you have unstaged changes"
|
||||
fi
|
||||
diff=$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)
|
||||
case "$diff" in
|
||||
|
||||
8
http.c
8
http.c
@@ -20,7 +20,7 @@ char curl_errorstr[CURL_ERROR_SIZE];
|
||||
|
||||
static int curl_ssl_verify = -1;
|
||||
static const char *ssl_cert;
|
||||
#if LIBCURL_VERSION_NUM >= 0x070902
|
||||
#if LIBCURL_VERSION_NUM >= 0x070903
|
||||
static const char *ssl_key;
|
||||
#endif
|
||||
#if LIBCURL_VERSION_NUM >= 0x070908
|
||||
@@ -126,7 +126,7 @@ static int http_options(const char *var, const char *value, void *cb)
|
||||
}
|
||||
if (!strcmp("http.sslcert", var))
|
||||
return git_config_string(&ssl_cert, var, value);
|
||||
#if LIBCURL_VERSION_NUM >= 0x070902
|
||||
#if LIBCURL_VERSION_NUM >= 0x070903
|
||||
if (!strcmp("http.sslkey", var))
|
||||
return git_config_string(&ssl_key, var, value);
|
||||
#endif
|
||||
@@ -196,7 +196,7 @@ static CURL *get_curl_handle(void)
|
||||
|
||||
if (ssl_cert != NULL)
|
||||
curl_easy_setopt(result, CURLOPT_SSLCERT, ssl_cert);
|
||||
#if LIBCURL_VERSION_NUM >= 0x070902
|
||||
#if LIBCURL_VERSION_NUM >= 0x070903
|
||||
if (ssl_key != NULL)
|
||||
curl_easy_setopt(result, CURLOPT_SSLKEY, ssl_key);
|
||||
#endif
|
||||
@@ -313,7 +313,7 @@ void http_init(struct remote *remote)
|
||||
curl_ssl_verify = 0;
|
||||
|
||||
set_from_env(&ssl_cert, "GIT_SSL_CERT");
|
||||
#if LIBCURL_VERSION_NUM >= 0x070902
|
||||
#if LIBCURL_VERSION_NUM >= 0x070903
|
||||
set_from_env(&ssl_key, "GIT_SSL_KEY");
|
||||
#endif
|
||||
#if LIBCURL_VERSION_NUM >= 0x070908
|
||||
|
||||
@@ -464,7 +464,7 @@ int parse_options(int argc, const char **argv, const char *prefix,
|
||||
static int usage_argh(const struct option *opts)
|
||||
{
|
||||
const char *s;
|
||||
int literal = opts->flags & PARSE_OPT_LITERAL_ARGHELP;
|
||||
int literal = (opts->flags & PARSE_OPT_LITERAL_ARGHELP) || !opts->argh;
|
||||
if (opts->flags & PARSE_OPT_OPTARG)
|
||||
if (opts->long_name)
|
||||
s = literal ? "[=%s]" : "[=<%s>]";
|
||||
@@ -472,7 +472,7 @@ static int usage_argh(const struct option *opts)
|
||||
s = literal ? "[%s]" : "[<%s>]";
|
||||
else
|
||||
s = literal ? " %s" : " <%s>";
|
||||
return fprintf(stderr, s, opts->argh);
|
||||
return fprintf(stderr, s, opts->argh ? opts->argh : "...");
|
||||
}
|
||||
|
||||
#define USAGE_OPTS_WIDTH 24
|
||||
@@ -524,40 +524,8 @@ int usage_with_options_internal(const char * const *usagestr,
|
||||
if (opts->type == OPTION_NUMBER)
|
||||
pos += fprintf(stderr, "-NUM");
|
||||
|
||||
switch (opts->type) {
|
||||
case OPTION_ARGUMENT:
|
||||
break;
|
||||
case OPTION_INTEGER:
|
||||
if (opts->flags & PARSE_OPT_OPTARG)
|
||||
if (opts->long_name)
|
||||
pos += fprintf(stderr, "[=<n>]");
|
||||
else
|
||||
pos += fprintf(stderr, "[<n>]");
|
||||
else
|
||||
pos += fprintf(stderr, " <n>");
|
||||
break;
|
||||
case OPTION_CALLBACK:
|
||||
if (opts->flags & PARSE_OPT_NOARG)
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case OPTION_FILENAME:
|
||||
/* FALLTHROUGH */
|
||||
case OPTION_STRING:
|
||||
if (opts->argh)
|
||||
pos += usage_argh(opts);
|
||||
else {
|
||||
if (opts->flags & PARSE_OPT_OPTARG)
|
||||
if (opts->long_name)
|
||||
pos += fprintf(stderr, "[=...]");
|
||||
else
|
||||
pos += fprintf(stderr, "[...]");
|
||||
else
|
||||
pos += fprintf(stderr, " ...");
|
||||
}
|
||||
break;
|
||||
default: /* OPTION_{BIT,BOOLEAN,NUMBER,SET_INT,SET_PTR} */
|
||||
break;
|
||||
}
|
||||
if (!(opts->flags & PARSE_OPT_NOARG))
|
||||
pos += usage_argh(opts);
|
||||
|
||||
if (pos <= USAGE_OPTS_WIDTH)
|
||||
pad = USAGE_OPTS_WIDTH - pos;
|
||||
|
||||
@@ -67,7 +67,7 @@ typedef int parse_opt_cb(const struct option *, const char *arg, int unset);
|
||||
* `flags`::
|
||||
* mask of parse_opt_option_flags.
|
||||
* PARSE_OPT_OPTARG: says that the argument is optional (not for BOOLEANs)
|
||||
* PARSE_OPT_NOARG: says that this option takes no argument, for CALLBACKs
|
||||
* PARSE_OPT_NOARG: says that this option takes no argument
|
||||
* PARSE_OPT_NONEG: says that this option cannot be negated
|
||||
* PARSE_OPT_HIDDEN: this option is skipped in the default usage, and
|
||||
* shown only in the full usage.
|
||||
@@ -104,14 +104,20 @@ struct option {
|
||||
};
|
||||
|
||||
#define OPT_END() { OPTION_END }
|
||||
#define OPT_ARGUMENT(l, h) { OPTION_ARGUMENT, 0, (l), NULL, NULL, (h) }
|
||||
#define OPT_ARGUMENT(l, h) { OPTION_ARGUMENT, 0, (l), NULL, NULL, \
|
||||
(h), PARSE_OPT_NOARG}
|
||||
#define OPT_GROUP(h) { OPTION_GROUP, 0, NULL, NULL, NULL, (h) }
|
||||
#define OPT_BIT(s, l, v, h, b) { OPTION_BIT, (s), (l), (v), NULL, (h), 0, NULL, (b) }
|
||||
#define OPT_NEGBIT(s, l, v, h, b) { OPTION_NEGBIT, (s), (l), (v), NULL, (h), 0, NULL, (b) }
|
||||
#define OPT_BOOLEAN(s, l, v, h) { OPTION_BOOLEAN, (s), (l), (v), NULL, (h) }
|
||||
#define OPT_SET_INT(s, l, v, h, i) { OPTION_SET_INT, (s), (l), (v), NULL, (h), 0, NULL, (i) }
|
||||
#define OPT_SET_PTR(s, l, v, h, p) { OPTION_SET_PTR, (s), (l), (v), NULL, (h), 0, NULL, (p) }
|
||||
#define OPT_INTEGER(s, l, v, h) { OPTION_INTEGER, (s), (l), (v), NULL, (h) }
|
||||
#define OPT_BIT(s, l, v, h, b) { OPTION_BIT, (s), (l), (v), NULL, (h), \
|
||||
PARSE_OPT_NOARG, NULL, (b) }
|
||||
#define OPT_NEGBIT(s, l, v, h, b) { OPTION_NEGBIT, (s), (l), (v), NULL, \
|
||||
(h), PARSE_OPT_NOARG, NULL, (b) }
|
||||
#define OPT_BOOLEAN(s, l, v, h) { OPTION_BOOLEAN, (s), (l), (v), NULL, \
|
||||
(h), PARSE_OPT_NOARG }
|
||||
#define OPT_SET_INT(s, l, v, h, i) { OPTION_SET_INT, (s), (l), (v), NULL, \
|
||||
(h), PARSE_OPT_NOARG, NULL, (i) }
|
||||
#define OPT_SET_PTR(s, l, v, h, p) { OPTION_SET_PTR, (s), (l), (v), NULL, \
|
||||
(h), PARSE_OPT_NOARG, NULL, (p) }
|
||||
#define OPT_INTEGER(s, l, v, h) { OPTION_INTEGER, (s), (l), (v), "n", (h) }
|
||||
#define OPT_STRING(s, l, v, a, h) { OPTION_STRING, (s), (l), (v), (a), (h) }
|
||||
#define OPT_DATE(s, l, v, h) \
|
||||
{ OPTION_CALLBACK, (s), (l), (v), "time",(h), 0, \
|
||||
|
||||
Reference in New Issue
Block a user