Revision 4f22b1015d4203ccdf2b66f27ee5946504342ace authored by Jeff King on 24 February 2012, 22:10:17 UTC, committed by Junio C Hamano on 24 February 2012, 22:18:20 UTC
Because git's object format requires us to specify the number of bytes in the object in its header, we must know the size before streaming a blob into the object database. This is not a problem when adding a regular file, as we can get the size from stat(). However, when filters are in use (such as autocrlf, or the ident, filter, or eol gitattributes), we have no idea what the ultimate size will be. The current code just punts on the whole issue and ignores filter configuration entirely for files larger than core.bigfilethreshold. This can generate confusing results if you use filters for large binary files, as the filter will suddenly stop working as the file goes over a certain size. Rather than try to handle unknown input sizes with streaming, this patch just turns off the streaming optimization when filters are in use. This has a slight performance regression in a very specific case: if you have autocrlf on, but no gitattributes, a large binary file will avoid the streaming code path because we don't know beforehand whether it will need conversion or not. But if you are handling large binary files, you should be marking them as such via attributes (or at least not using autocrlf, and instead marking your text files as such). And the flip side is that if you have a large _non_-binary file, there is a correctness improvement; before we did not apply the conversion at all. The first half of the new t1051 script covers these failures on input. The second half tests the matching output code paths. These already work correctly, and do not need any adjustment. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 4c3b57b
File | Mode | Size |
---|---|---|
Documentation | ||
block-sha1 | ||
builtin | ||
compat | ||
contrib | ||
git-gui | ||
git_remote_helpers | ||
gitk-git | ||
gitweb | ||
mergetools | ||
perl | ||
po | ||
ppc | ||
t | ||
templates | ||
vcs-svn | ||
xdiff | ||
.gitattributes | -rw-r--r-- | 105 bytes |
.gitignore | -rw-r--r-- | 3.2 KB |
.mailmap | -rw-r--r-- | 2.7 KB |
COPYING | -rw-r--r-- | 18.3 KB |
GIT-VERSION-GEN | -rwxr-xr-x | 754 bytes |
INSTALL | -rw-r--r-- | 7.4 KB |
LGPL-2.1 | -rw-r--r-- | 26.2 KB |
Makefile | -rw-r--r-- | 73.1 KB |
README | -rw-r--r-- | 2.4 KB |
RelNotes | l--------- | 34 bytes |
abspath.c | -rw-r--r-- | 4.2 KB |
aclocal.m4 | -rw-r--r-- | 1.4 KB |
advice.c | -rw-r--r-- | 1.6 KB |
advice.h | -rw-r--r-- | 513 bytes |
alias.c | -rw-r--r-- | 1.7 KB |
alloc.c | -rw-r--r-- | 1.6 KB |
archive-tar.c | -rw-r--r-- | 9.1 KB |
archive-zip.c | -rw-r--r-- | 7.5 KB |
archive.c | -rw-r--r-- | 11.8 KB |
archive.h | -rw-r--r-- | 1.1 KB |
argv-array.c | -rw-r--r-- | 1.1 KB |
argv-array.h | -rw-r--r-- | 463 bytes |
attr.c | -rw-r--r-- | 18.8 KB |
attr.h | -rw-r--r-- | 1.6 KB |
base85.c | -rw-r--r-- | 2.8 KB |
bisect.c | -rw-r--r-- | 22.9 KB |
bisect.h | -rw-r--r-- | 837 bytes |
blob.c | -rw-r--r-- | 565 bytes |
blob.h | -rw-r--r-- | 664 bytes |
branch.c | -rw-r--r-- | 6.0 KB |
branch.h | -rw-r--r-- | 1.8 KB |
builtin.h | -rw-r--r-- | 8.8 KB |
bundle.c | -rw-r--r-- | 11.1 KB |
bundle.h | -rw-r--r-- | 707 bytes |
cache-tree.c | -rw-r--r-- | 15.7 KB |
cache-tree.h | -rw-r--r-- | 1.4 KB |
cache.h | -rw-r--r-- | 43.7 KB |
check-builtins.sh | -rwxr-xr-x | 588 bytes |
check-racy.c | -rw-r--r-- | 538 bytes |
check_bindir | -rwxr-xr-x | 369 bytes |
color.c | -rw-r--r-- | 5.2 KB |
color.h | -rw-r--r-- | 3.1 KB |
combine-diff.c | -rw-r--r-- | 31.8 KB |
command-list.txt | -rw-r--r-- | 7.8 KB |
commit.c | -rw-r--r-- | 20.3 KB |
commit.h | -rw-r--r-- | 6.0 KB |
config.c | -rw-r--r-- | 35.3 KB |
config.mak.in | -rw-r--r-- | 1.8 KB |
configure.ac | -rw-r--r-- | 28.6 KB |
connect.c | -rw-r--r-- | 14.1 KB |
connected.c | -rw-r--r-- | 1.5 KB |
connected.h | -rw-r--r-- | 651 bytes |
convert.c | -rw-r--r-- | 29.3 KB |
convert.h | -rw-r--r-- | 2.2 KB |
copy.c | -rw-r--r-- | 1.6 KB |
csum-file.c | -rw-r--r-- | 3.6 KB |
csum-file.h | -rw-r--r-- | 832 bytes |
ctype.c | -rw-r--r-- | 941 bytes |
daemon.c | -rw-r--r-- | 29.1 KB |
date.c | -rw-r--r-- | 23.1 KB |
decorate.c | -rw-r--r-- | 1.8 KB |
decorate.h | -rw-r--r-- | 400 bytes |
delta.h | -rw-r--r-- | 3.4 KB |
diff-delta.c | -rw-r--r-- | 15.5 KB |
diff-lib.c | -rw-r--r-- | 13.8 KB |
diff-no-index.c | -rw-r--r-- | 6.1 KB |
diff.c | -rw-r--r-- | 124.4 KB |
diff.h | -rw-r--r-- | 10.5 KB |
diffcore-break.c | -rw-r--r-- | 8.7 KB |
diffcore-delta.c | -rw-r--r-- | 5.4 KB |
diffcore-order.c | -rw-r--r-- | 2.2 KB |
diffcore-pickaxe.c | -rw-r--r-- | 6.0 KB |
diffcore-rename.c | -rw-r--r-- | 18.3 KB |
diffcore.h | -rw-r--r-- | 4.4 KB |
dir.c | -rw-r--r-- | 29.9 KB |
dir.h | -rw-r--r-- | 3.4 KB |
editor.c | -rw-r--r-- | 1.1 KB |
entry.c | -rw-r--r-- | 7.7 KB |
environment.c | -rw-r--r-- | 7.3 KB |
exec_cmd.c | -rw-r--r-- | 3.2 KB |
exec_cmd.h | -rw-r--r-- | 487 bytes |
fast-import.c | -rw-r--r-- | 86.4 KB |
fetch-pack.h | -rw-r--r-- | 479 bytes |
fixup-builtins | -rwxr-xr-x | 432 bytes |
fsck.c | -rw-r--r-- | 9.5 KB |
fsck.h | -rw-r--r-- | 1.0 KB |
generate-cmdlist.sh | -rwxr-xr-x | 429 bytes |
gettext.c | -rw-r--r-- | 290 bytes |
gettext.h | -rw-r--r-- | 975 bytes |
git-add--interactive.perl | -rwxr-xr-x | 35.4 KB |
git-am.sh | -rwxr-xr-x | 21.0 KB |
git-archimport.perl | -rwxr-xr-x | 36.0 KB |
git-bisect.sh | -rwxr-xr-x | 11.2 KB |
git-compat-util.h | -rw-r--r-- | 14.3 KB |
git-cvsexportcommit.perl | -rwxr-xr-x | 12.4 KB |
git-cvsimport.perl | -rwxr-xr-x | 29.5 KB |
git-cvsserver.perl | -rwxr-xr-x | 118.0 KB |
git-difftool--helper.sh | -rwxr-xr-x | 1.7 KB |
git-difftool.perl | -rwxr-xr-x | 2.6 KB |
git-filter-branch.sh | -rwxr-xr-x | 11.8 KB |
git-instaweb.sh | -rwxr-xr-x | 17.8 KB |
git-lost-found.sh | -rwxr-xr-x | 554 bytes |
git-merge-octopus.sh | -rwxr-xr-x | 2.2 KB |
git-merge-one-file.sh | -rwxr-xr-x | 3.8 KB |
git-merge-resolve.sh | -rwxr-xr-x | 944 bytes |
git-mergetool--lib.sh | -rw-r--r-- | 4.1 KB |
git-mergetool.sh | -rwxr-xr-x | 8.4 KB |
git-parse-remote.sh | -rw-r--r-- | 2.5 KB |
git-pull.sh | -rwxr-xr-x | 7.3 KB |
git-quiltimport.sh | -rwxr-xr-x | 3.3 KB |
git-rebase--am.sh | -rw-r--r-- | 615 bytes |
git-rebase--interactive.sh | -rw-r--r-- | 22.2 KB |
git-rebase--merge.sh | -rw-r--r-- | 3.0 KB |
git-rebase.sh | -rwxr-xr-x | 13.0 KB |
git-relink.perl | -rwxr-xr-x | 4.0 KB |
git-remote-testgit.py | -rw-r--r-- | 5.9 KB |
git-repack.sh | -rwxr-xr-x | 4.5 KB |
git-request-pull.sh | -rwxr-xr-x | 1.6 KB |
git-send-email.perl | -rwxr-xr-x | 39.4 KB |
git-sh-i18n.sh | -rw-r--r-- | 837 bytes |
git-sh-setup.sh | -rw-r--r-- | 4.8 KB |
git-stash.sh | -rwxr-xr-x | 12.6 KB |
git-submodule.sh | -rwxr-xr-x | 21.1 KB |
git-svn.perl | -rwxr-xr-x | 188.1 KB |
git-web--browse.sh | -rwxr-xr-x | 4.1 KB |
git.c | -rw-r--r-- | 16.7 KB |
git.spec.in | -rw-r--r-- | 11.0 KB |
graph.c | -rw-r--r-- | 34.4 KB |
graph.h | -rw-r--r-- | 3.6 KB |
grep.c | -rw-r--r-- | 27.2 KB |
grep.h | -rw-r--r-- | 2.9 KB |
hash.c | -rw-r--r-- | 2.5 KB |
hash.h | -rw-r--r-- | 1.1 KB |
help.c | -rw-r--r-- | 9.9 KB |
help.h | -rw-r--r-- | 906 bytes |
hex.c | -rw-r--r-- | 2.3 KB |
http-backend.c | -rw-r--r-- | 13.2 KB |
http-fetch.c | -rw-r--r-- | 2.2 KB |
http-push.c | -rw-r--r-- | 50.8 KB |
http-walker.c | -rw-r--r-- | 13.9 KB |
http.c | -rw-r--r-- | 33.7 KB |
http.h | -rw-r--r-- | 5.1 KB |
ident.c | -rw-r--r-- | 7.0 KB |
imap-send.c | -rw-r--r-- | 34.8 KB |
kwset.c | -rw-r--r-- | 20.5 KB |
kwset.h | -rw-r--r-- | 2.6 KB |
levenshtein.c | -rw-r--r-- | 2.5 KB |
levenshtein.h | -rw-r--r-- | 203 bytes |
list-objects.c | -rw-r--r-- | 5.5 KB |
list-objects.h | -rw-r--r-- | 429 bytes |
ll-merge.c | -rw-r--r-- | 10.0 KB |
ll-merge.h | -rw-r--r-- | 567 bytes |
lockfile.c | -rw-r--r-- | 6.2 KB |
log-tree.c | -rw-r--r-- | 17.8 KB |
log-tree.h | -rw-r--r-- | 867 bytes |
mailmap.c | -rw-r--r-- | 6.4 KB |
mailmap.h | -rw-r--r-- | 263 bytes |
match-trees.c | -rw-r--r-- | 8.7 KB |
merge-file.c | -rw-r--r-- | 2.6 KB |
merge-file.h | -rw-r--r-- | 175 bytes |
merge-recursive.c | -rw-r--r-- | 57.5 KB |
merge-recursive.h | -rw-r--r-- | 1.7 KB |
name-hash.c | -rw-r--r-- | 4.7 KB |
notes-cache.c | -rw-r--r-- | 2.1 KB |
notes-cache.h | -rw-r--r-- | 500 bytes |
notes-merge.c | -rw-r--r-- | 22.9 KB |
notes-merge.h | -rw-r--r-- | 3.4 KB |
notes.c | -rw-r--r-- | 35.8 KB |
notes.h | -rw-r--r-- | 11.9 KB |
object.c | -rw-r--r-- | 5.8 KB |
object.h | -rw-r--r-- | 2.5 KB |
pack-check.c | -rw-r--r-- | 4.6 KB |
pack-refs.c | -rw-r--r-- | 3.4 KB |
pack-refs.h | -rw-r--r-- | 465 bytes |
pack-revindex.c | -rw-r--r-- | 4.0 KB |
pack-revindex.h | -rw-r--r-- | 223 bytes |
pack-write.c | -rw-r--r-- | 8.9 KB |
pack.h | -rw-r--r-- | 2.7 KB |
pager.c | -rw-r--r-- | 2.1 KB |
parse-options-cb.c | -rw-r--r-- | 2.5 KB |
parse-options.c | -rw-r--r-- | 15.0 KB |
parse-options.h | -rw-r--r-- | 8.4 KB |
patch-delta.c | -rw-r--r-- | 2.2 KB |
patch-ids.c | -rw-r--r-- | 2.5 KB |
patch-ids.h | -rw-r--r-- | 490 bytes |
path.c | -rw-r--r-- | 14.9 KB |
pkt-line.c | -rw-r--r-- | 4.5 KB |
pkt-line.h | -rw-r--r-- | 589 bytes |
preload-index.c | -rw-r--r-- | 2.4 KB |
pretty.c | -rw-r--r-- | 32.4 KB |
progress.c | -rw-r--r-- | 6.5 KB |
progress.h | -rw-r--r-- | 504 bytes |
quote.c | -rw-r--r-- | 11.3 KB |
quote.h | -rw-r--r-- | 2.9 KB |
reachable.c | -rw-r--r-- | 5.5 KB |
reachable.h | -rw-r--r-- | 127 bytes |
read-cache.c | -rw-r--r-- | 46.0 KB |
reflog-walk.c | -rw-r--r-- | 7.6 KB |
reflog-walk.h | -rw-r--r-- | 664 bytes |
refs.c | -rw-r--r-- | 50.6 KB |
refs.h | -rw-r--r-- | 5.7 KB |
remote-curl.c | -rw-r--r-- | 21.0 KB |
remote.c | -rw-r--r-- | 41.0 KB |
remote.h | -rw-r--r-- | 4.2 KB |
replace_object.c | -rw-r--r-- | 2.7 KB |
rerere.c | -rw-r--r-- | 17.9 KB |
rerere.h | -rw-r--r-- | 829 bytes |
resolve-undo.c | -rw-r--r-- | 3.9 KB |
resolve-undo.h | -rw-r--r-- | 546 bytes |
revision.c | -rw-r--r-- | 63.7 KB |
revision.h | -rw-r--r-- | 5.6 KB |
run-command.c | -rw-r--r-- | 13.3 KB |
run-command.h | -rw-r--r-- | 2.8 KB |
send-pack.h | -rw-r--r-- | 403 bytes |
sequencer.c | -rw-r--r-- | 271 bytes |
sequencer.h | -rw-r--r-- | 261 bytes |
server-info.c | -rw-r--r-- | 5.1 KB |
setup.c | -rw-r--r-- | 20.1 KB |
sh-i18n--envsubst.c | -rw-r--r-- | 10.7 KB |
sha1-array.c | -rw-r--r-- | 1.2 KB |
sha1-array.h | -rw-r--r-- | 631 bytes |
sha1-lookup.c | -rw-r--r-- | 7.8 KB |
sha1-lookup.h | -rw-r--r-- | 403 bytes |
sha1_file.c | -rw-r--r-- | 72.0 KB |
sha1_name.c | -rw-r--r-- | 26.5 KB |
shallow.c | -rw-r--r-- | 2.3 KB |
shell.c | -rw-r--r-- | 5.1 KB |
shortlog.h | -rw-r--r-- | 463 bytes |
show-index.c | -rw-r--r-- | 2.2 KB |
sideband.c | -rw-r--r-- | 3.4 KB |
sideband.h | -rw-r--r-- | 326 bytes |
sigchain.c | -rw-r--r-- | 969 bytes |
sigchain.h | -rw-r--r-- | 215 bytes |
strbuf.c | -rw-r--r-- | 7.9 KB |
strbuf.h | -rw-r--r-- | 4.1 KB |
streaming.c | -rw-r--r-- | 10.4 KB |
streaming.h | -rw-r--r-- | 404 bytes |
string-list.c | -rw-r--r-- | 4.7 KB |
string-list.h | -rw-r--r-- | 2.1 KB |
submodule.c | -rw-r--r-- | 25.3 KB |
submodule.h | -rw-r--r-- | 1.4 KB |
symlinks.c | -rw-r--r-- | 8.4 KB |
tag.c | -rw-r--r-- | 3.5 KB |
tag.h | -rw-r--r-- | 517 bytes |
tar.h | -rw-r--r-- | 644 bytes |
test-chmtime.c | -rw-r--r-- | 2.6 KB |
test-ctype.c | -rw-r--r-- | 918 bytes |
test-date.c | -rw-r--r-- | 1.4 KB |
test-delta.c | -rw-r--r-- | 1.8 KB |
test-dump-cache-tree.c | -rw-r--r-- | 1.5 KB |
test-genrandom.c | -rw-r--r-- | 722 bytes |
test-index-version.c | -rw-r--r-- | 264 bytes |
test-line-buffer.c | -rw-r--r-- | 2.1 KB |
test-match-trees.c | -rw-r--r-- | 588 bytes |
test-mktemp.c | -rw-r--r-- | 269 bytes |
test-obj-pool.c | -rw-r--r-- | 2.5 KB |
test-parse-options.c | -rw-r--r-- | 3.2 KB |
test-path-utils.c | -rw-r--r-- | 1.3 KB |
test-run-command.c | -rw-r--r-- | 840 bytes |
test-sha1.c | -rw-r--r-- | 816 bytes |
test-sha1.sh | -rwxr-xr-x | 1.9 KB |
test-sigchain.c | -rw-r--r-- | 344 bytes |
test-string-pool.c | -rw-r--r-- | 654 bytes |
test-subprocess.c | -rw-r--r-- | 387 bytes |
test-svn-fe.c | -rw-r--r-- | 312 bytes |
test-treap.c | -rw-r--r-- | 1.7 KB |
thread-utils.c | -rw-r--r-- | 1.3 KB |
thread-utils.h | -rw-r--r-- | 209 bytes |
trace.c | -rw-r--r-- | 4.7 KB |
transport-helper.c | -rw-r--r-- | 29.0 KB |
transport.c | -rw-r--r-- | 30.8 KB |
transport.h | -rw-r--r-- | 5.7 KB |
tree-diff.c | -rw-r--r-- | 8.6 KB |
tree-walk.c | -rw-r--r-- | 15.4 KB |
tree-walk.h | -rw-r--r-- | 2.2 KB |
tree.c | -rw-r--r-- | 6.1 KB |
tree.h | -rw-r--r-- | 897 bytes |
unimplemented.sh | -rw-r--r-- | 100 bytes |
unpack-trees.c | -rw-r--r-- | 47.0 KB |
unpack-trees.h | -rw-r--r-- | 2.2 KB |
upload-pack.c | -rw-r--r-- | 19.6 KB |
url.c | -rw-r--r-- | 2.8 KB |
url.h | -rw-r--r-- | 492 bytes |
usage.c | -rw-r--r-- | 2.9 KB |
userdiff.c | -rw-r--r-- | 9.2 KB |
userdiff.h | -rw-r--r-- | 646 bytes |
utf8.c | -rw-r--r-- | 13.0 KB |
utf8.h | -rw-r--r-- | 658 bytes |
walker.c | -rw-r--r-- | 7.2 KB |
walker.h | -rw-r--r-- | 1.1 KB |
wrap-for-bin.sh | -rw-r--r-- | 610 bytes |
wrapper.c | -rw-r--r-- | 8.1 KB |
write_or_die.c | -rw-r--r-- | 2.0 KB |
ws.c | -rw-r--r-- | 9.6 KB |
wt-status.c | -rw-r--r-- | 25.8 KB |
wt-status.h | -rw-r--r-- | 2.1 KB |
xdiff-interface.c | -rw-r--r-- | 8.2 KB |
xdiff-interface.h | -rw-r--r-- | 1.1 KB |
zlib.c | -rw-r--r-- | 5.7 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...