Merge branch 'maint-1.7.11' into maint
* maint-1.7.11: Almost 1.7.11.6 gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO rebase -i: use full onto sha1 in reflog sh-setup: protect from exported IFS receive-pack: do not leak output from auto-gc to standard output t/t5400: demonstrate breakage caused by informational message from prune setup: clarify error messages for file/revisions ambiguity send-email: improve RFC2047 quote parsing fsck: detect null sha1 in tree entries do not write null sha1s to on-disk index diff: do not use null sha1 as a sentinel value
This commit is contained in:
@ -110,6 +110,7 @@ static int diff_hunks(mmfile_t *file_a, mmfile_t *file_b, long ctxlen,
|
||||
int textconv_object(const char *path,
|
||||
unsigned mode,
|
||||
const unsigned char *sha1,
|
||||
int sha1_valid,
|
||||
char **buf,
|
||||
unsigned long *buf_size)
|
||||
{
|
||||
@ -117,7 +118,7 @@ int textconv_object(const char *path,
|
||||
struct userdiff_driver *textconv;
|
||||
|
||||
df = alloc_filespec(path);
|
||||
fill_filespec(df, sha1, mode);
|
||||
fill_filespec(df, sha1, sha1_valid, mode);
|
||||
textconv = get_textconv(df);
|
||||
if (!textconv) {
|
||||
free_filespec(df);
|
||||
@ -142,7 +143,7 @@ static void fill_origin_blob(struct diff_options *opt,
|
||||
|
||||
num_read_blob++;
|
||||
if (DIFF_OPT_TST(opt, ALLOW_TEXTCONV) &&
|
||||
textconv_object(o->path, o->mode, o->blob_sha1, &file->ptr, &file_size))
|
||||
textconv_object(o->path, o->mode, o->blob_sha1, 1, &file->ptr, &file_size))
|
||||
;
|
||||
else
|
||||
file->ptr = read_sha1_file(o->blob_sha1, &type, &file_size);
|
||||
@ -2123,7 +2124,7 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
|
||||
switch (st.st_mode & S_IFMT) {
|
||||
case S_IFREG:
|
||||
if (DIFF_OPT_TST(opt, ALLOW_TEXTCONV) &&
|
||||
textconv_object(read_from, mode, null_sha1, &buf_ptr, &buf_len))
|
||||
textconv_object(read_from, mode, null_sha1, 0, &buf_ptr, &buf_len))
|
||||
strbuf_attach(&buf, buf_ptr, buf_len, buf_len + 1);
|
||||
else if (strbuf_read_file(&buf, read_from, st.st_size) != st.st_size)
|
||||
die_errno("cannot open or read '%s'", read_from);
|
||||
@ -2516,7 +2517,7 @@ parse_done:
|
||||
die("no such path %s in %s", path, final_commit_name);
|
||||
|
||||
if (DIFF_OPT_TST(&sb.revs->diffopt, ALLOW_TEXTCONV) &&
|
||||
textconv_object(path, o->mode, o->blob_sha1, (char **) &sb.final_buf,
|
||||
textconv_object(path, o->mode, o->blob_sha1, 1, (char **) &sb.final_buf,
|
||||
&sb.final_buf_size))
|
||||
;
|
||||
else
|
||||
|
@ -146,7 +146,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
|
||||
die("git cat-file --textconv %s: <object> must be <sha1:path>",
|
||||
obj_name);
|
||||
|
||||
if (!textconv_object(obj_context.path, obj_context.mode, sha1, &buf, &size))
|
||||
if (!textconv_object(obj_context.path, obj_context.mode, sha1, 1, &buf, &size))
|
||||
die("git cat-file --textconv: unable to run textconv on %s",
|
||||
obj_name);
|
||||
break;
|
||||
|
@ -29,6 +29,8 @@ static void stuff_change(struct diff_options *opt,
|
||||
unsigned old_mode, unsigned new_mode,
|
||||
const unsigned char *old_sha1,
|
||||
const unsigned char *new_sha1,
|
||||
int old_sha1_valid,
|
||||
int new_sha1_valid,
|
||||
const char *old_name,
|
||||
const char *new_name)
|
||||
{
|
||||
@ -54,8 +56,8 @@ static void stuff_change(struct diff_options *opt,
|
||||
|
||||
one = alloc_filespec(old_name);
|
||||
two = alloc_filespec(new_name);
|
||||
fill_filespec(one, old_sha1, old_mode);
|
||||
fill_filespec(two, new_sha1, new_mode);
|
||||
fill_filespec(one, old_sha1, old_sha1_valid, old_mode);
|
||||
fill_filespec(two, new_sha1, new_sha1_valid, new_mode);
|
||||
|
||||
diff_queue(&diff_queued_diff, one, two);
|
||||
}
|
||||
@ -84,6 +86,7 @@ static int builtin_diff_b_f(struct rev_info *revs,
|
||||
stuff_change(&revs->diffopt,
|
||||
blob[0].mode, canon_mode(st.st_mode),
|
||||
blob[0].sha1, null_sha1,
|
||||
1, 0,
|
||||
path, path);
|
||||
diffcore_std(&revs->diffopt);
|
||||
diff_flush(&revs->diffopt);
|
||||
@ -108,6 +111,7 @@ static int builtin_diff_blobs(struct rev_info *revs,
|
||||
stuff_change(&revs->diffopt,
|
||||
blob[0].mode, blob[1].mode,
|
||||
blob[0].sha1, blob[1].sha1,
|
||||
1, 1,
|
||||
blob[0].name, blob[1].name);
|
||||
diffcore_std(&revs->diffopt);
|
||||
diff_flush(&revs->diffopt);
|
||||
|
@ -977,7 +977,8 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
|
||||
const char *argv_gc_auto[] = {
|
||||
"gc", "--auto", "--quiet", NULL,
|
||||
};
|
||||
run_command_v_opt(argv_gc_auto, RUN_GIT_CMD);
|
||||
int opt = RUN_GIT_CMD | RUN_COMMAND_STDOUT_TO_STDERR;
|
||||
run_command_v_opt(argv_gc_auto, opt);
|
||||
}
|
||||
if (auto_update_server_info)
|
||||
update_server_info(0);
|
||||
|
Reference in New Issue
Block a user