https://github.com/git/git
Revision 21798708031ed808cb77232e771e20d3146cf9c8 authored by Thomas Rast on 15 April 2010, 12:59:37 UTC, committed by Junio C Hamano on 17 April 2010, 17:23:59 UTC
Consider an evil merge of two commits A and B, both of which have a
file 'foo', but the merge result does not have that file.

The combined-diff code learned in 4462731 (combine-diff: do not punt
on removed or added files., 2006-02-06) to concisely show only the
removal, since that is the evil part and the previous contents are
presumably uninteresting.

However, to diagnose an empty merge result, it overloaded the variable
that holds the file's length.  This means that the check also triggers
for truncated files.  Consequently, such files were not shown in the
diff at all despite the merge being clearly evil.

Fix this by adding a new variable that distinguishes whether the file
was deleted (which is the case 4462731 handled) or truncated.  In the
truncated case, we show the full combined diff again, which is rather
spammy but at least does not hide the evilness.

Reported-by: David Martínez Martí <desarrollo@gestiweb.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent fff0d0a
History
Tip revision: 21798708031ed808cb77232e771e20d3146cf9c8 authored by Thomas Rast on 15 April 2010, 12:59:37 UTC
combined diff: correctly handle truncated file
Tip revision: 2179870
File Mode Size
Documentation
block-sha1
compat
contrib
git-gui
git_remote_helpers
gitk-git
gitweb
perl
ppc
t
templates
xdiff
.gitattributes -rw-r--r-- 105 bytes
.gitignore -rw-r--r-- 2.8 KB
.mailmap -rw-r--r-- 2.7 KB
COPYING -rw-r--r-- 18.3 KB
GIT-VERSION-GEN -rwxr-xr-x 736 bytes
INSTALL -rw-r--r-- 6.3 KB
Makefile -rw-r--r-- 57.4 KB
README -rw-r--r-- 2.4 KB
RelNotes l--------- 34 bytes
abspath.c -rw-r--r-- 2.8 KB
advice.c -rw-r--r-- 1.4 KB
advice.h -rw-r--r-- 432 bytes
alias.c -rw-r--r-- 1.4 KB
alloc.c -rw-r--r-- 1.7 KB
archive-tar.c -rw-r--r-- 6.3 KB
archive-zip.c -rw-r--r-- 7.3 KB
archive.c -rw-r--r-- 10.2 KB
archive.h -rw-r--r-- 927 bytes
attr.c -rw-r--r-- 16.1 KB
attr.h -rw-r--r-- 973 bytes
base85.c -rw-r--r-- 2.7 KB
bisect.c -rw-r--r-- 23.9 KB
bisect.h -rw-r--r-- 820 bytes
blob.c -rw-r--r-- 565 bytes
blob.h -rw-r--r-- 664 bytes
branch.c -rw-r--r-- 5.4 KB
branch.h -rw-r--r-- 1.0 KB
builtin-add.c -rw-r--r-- 11.7 KB
builtin-annotate.c -rw-r--r-- 446 bytes
builtin-apply.c -rw-r--r-- 94.7 KB
builtin-archive.c -rw-r--r-- 3.5 KB
builtin-bisect--helper.c -rw-r--r-- 617 bytes
builtin-blame.c -rw-r--r-- 62.8 KB
builtin-branch.c -rw-r--r-- 18.7 KB
builtin-bundle.c -rw-r--r-- 1.8 KB
builtin-cat-file.c -rw-r--r-- 5.6 KB
builtin-check-attr.c -rw-r--r-- 2.9 KB
builtin-check-ref-format.c -rw-r--r-- 1.4 KB
builtin-checkout-index.c -rw-r--r-- 8.1 KB
builtin-checkout.c -rw-r--r-- 23.3 KB
builtin-clean.c -rw-r--r-- 4.1 KB
builtin-clone.c -rw-r--r-- 17.2 KB
builtin-commit-tree.c -rw-r--r-- 3.6 KB
builtin-commit.c -rw-r--r-- 35.5 KB
builtin-config.c -rw-r--r-- 13.5 KB
builtin-count-objects.c -rw-r--r-- 3.0 KB
builtin-describe.c -rw-r--r-- 9.9 KB
builtin-diff-files.c -rw-r--r-- 1.9 KB
builtin-diff-index.c -rw-r--r-- 1.2 KB
builtin-diff-tree.c -rw-r--r-- 4.2 KB
builtin-diff.c -rw-r--r-- 10.6 KB
builtin-fast-export.c -rw-r--r-- 16.0 KB
builtin-fetch-pack.c -rw-r--r-- 22.7 KB
builtin-fetch.c -rw-r--r-- 24.4 KB
builtin-fmt-merge-msg.c -rw-r--r-- 8.7 KB
builtin-for-each-ref.c -rw-r--r-- 22.4 KB
builtin-fsck.c -rw-r--r-- 15.8 KB
builtin-gc.c -rw-r--r-- 6.1 KB
builtin-grep.c -rw-r--r-- 23.6 KB
builtin-hash-object.c -rw-r--r-- 3.5 KB
builtin-help.c -rw-r--r-- 11.3 KB
builtin-index-pack.c -rw-r--r-- 26.8 KB
builtin-init-db.c -rw-r--r-- 13.4 KB
builtin-log.c -rw-r--r-- 35.2 KB
builtin-ls-files.c -rw-r--r-- 15.3 KB
builtin-ls-remote.c -rw-r--r-- 2.4 KB
builtin-ls-tree.c -rw-r--r-- 4.4 KB
builtin-mailinfo.c -rw-r--r-- 23.5 KB
builtin-mailsplit.c -rw-r--r-- 6.3 KB
builtin-merge-base.c -rw-r--r-- 1.4 KB
builtin-merge-file.c -rw-r--r-- 2.7 KB
builtin-merge-index.c -rw-r--r-- 2.2 KB
builtin-merge-ours.c -rw-r--r-- 926 bytes
builtin-merge-recursive.c -rw-r--r-- 2.1 KB
builtin-merge-tree.c -rw-r--r-- 8.1 KB
builtin-merge.c -rw-r--r-- 33.4 KB
builtin-mktag.c -rw-r--r-- 5.2 KB
builtin-mktree.c -rw-r--r-- 5.0 KB
builtin-mv.c -rw-r--r-- 5.9 KB
builtin-name-rev.c -rw-r--r-- 7.1 KB
builtin-pack-objects.c -rw-r--r-- 59.0 KB
builtin-pack-redundant.c -rw-r--r-- 15.0 KB
builtin-pack-refs.c -rw-r--r-- 589 bytes
builtin-patch-id.c -rw-r--r-- 1.6 KB
builtin-prune-packed.c -rw-r--r-- 1.9 KB
builtin-prune.c -rw-r--r-- 3.8 KB
builtin-push.c -rw-r--r-- 6.5 KB
builtin-read-tree.c -rw-r--r-- 6.5 KB
builtin-receive-pack.c -rw-r--r-- 18.8 KB
builtin-reflog.c -rw-r--r-- 17.6 KB
builtin-remote.c -rw-r--r-- 38.7 KB
builtin-replace.c -rw-r--r-- 3.9 KB
builtin-rerere.c -rw-r--r-- 3.8 KB
builtin-reset.c -rw-r--r-- 9.4 KB
builtin-rev-list.c -rw-r--r-- 9.6 KB
builtin-rev-parse.c -rw-r--r-- 16.0 KB
builtin-revert.c -rw-r--r-- 11.5 KB
builtin-rm.c -rw-r--r-- 7.0 KB
builtin-send-pack.c -rw-r--r-- 15.6 KB
builtin-shortlog.c -rw-r--r-- 8.9 KB
builtin-show-branch.c -rw-r--r-- 23.0 KB
builtin-show-ref.c -rw-r--r-- 6.3 KB
builtin-stripspace.c -rw-r--r-- 2.0 KB
builtin-symbolic-ref.c -rw-r--r-- 1.3 KB
builtin-tag.c -rw-r--r-- 11.3 KB
builtin-tar-tree.c -rw-r--r-- 2.5 KB
builtin-unpack-file.c -rw-r--r-- 845 bytes
builtin-unpack-objects.c -rw-r--r-- 12.9 KB
builtin-update-index.c -rw-r--r-- 20.3 KB
builtin-update-ref.c -rw-r--r-- 1.6 KB
builtin-update-server-info.c -rw-r--r-- 591 bytes
builtin-upload-archive.c -rw-r--r-- 4.0 KB
builtin-var.c -rw-r--r-- 1.8 KB
builtin-verify-pack.c -rw-r--r-- 4.1 KB
builtin-verify-tag.c -rw-r--r-- 2.7 KB
builtin-write-tree.c -rw-r--r-- 1.5 KB
builtin.h -rw-r--r-- 8.0 KB
bundle.c -rw-r--r-- 10.2 KB
bundle.h -rw-r--r-- 627 bytes
cache-tree.c -rw-r--r-- 15.6 KB
cache-tree.h -rw-r--r-- 1.4 KB
cache.h -rw-r--r-- 36.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-- 4.6 KB
color.h -rw-r--r-- 1.8 KB
combine-diff.c -rw-r--r-- 27.9 KB
command-list.txt -rw-r--r-- 7.7 KB
commit.c -rw-r--r-- 17.5 KB
commit.h -rw-r--r-- 4.8 KB
config.c -rw-r--r-- 29.8 KB
config.mak.in -rw-r--r-- 1.4 KB
configure.ac -rw-r--r-- 24.0 KB
connect.c -rw-r--r-- 13.5 KB
convert.c -rw-r--r-- 14.1 KB
copy.c -rw-r--r-- 1.6 KB
csum-file.c -rw-r--r-- 2.5 KB
csum-file.h -rw-r--r-- 761 bytes
ctype.c -rw-r--r-- 874 bytes
daemon.c -rw-r--r-- 25.3 KB
date.c -rw-r--r-- 22.2 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.3 KB
diff-lib.c -rw-r--r-- 13.4 KB
diff-no-index.c -rw-r--r-- 6.1 KB
diff.c -rw-r--r-- 101.0 KB
diff.h -rw-r--r-- 9.2 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-- 3.2 KB
diffcore-rename.c -rw-r--r-- 16.9 KB
diffcore.h -rw-r--r-- 4.1 KB
dir.c -rw-r--r-- 24.8 KB
dir.h -rw-r--r-- 2.8 KB
editor.c -rw-r--r-- 1.1 KB
entry.c -rw-r--r-- 6.0 KB
environment.c -rw-r--r-- 5.3 KB
exec_cmd.c -rw-r--r-- 3.3 KB
exec_cmd.h -rw-r--r-- 487 bytes
fast-import.c -rw-r--r-- 74.9 KB
fetch-pack.h -rw-r--r-- 479 bytes
fixup-builtins -rwxr-xr-x 432 bytes
fsck.c -rw-r--r-- 8.0 KB
fsck.h -rw-r--r-- 1.0 KB
generate-cmdlist.sh -rwxr-xr-x 443 bytes
git-add--interactive.perl -rwxr-xr-x 34.8 KB
git-am.sh -rwxr-xr-x 17.7 KB
git-archimport.perl -rwxr-xr-x 36.0 KB
git-bisect.sh -rwxr-xr-x 9.8 KB
git-compat-util.h -rw-r--r-- 11.5 KB
git-cvsexportcommit.perl -rwxr-xr-x 12.4 KB
git-cvsimport.perl -rwxr-xr-x 28.1 KB
git-cvsserver.perl -rwxr-xr-x 114.9 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.9 KB
git-instaweb.sh -rwxr-xr-x 11.0 KB
git-lost-found.sh -rwxr-xr-x 554 bytes
git-merge-octopus.sh -rwxr-xr-x 2.0 KB
git-merge-one-file.sh -rwxr-xr-x 3.7 KB
git-merge-resolve.sh -rwxr-xr-x 944 bytes
git-mergetool--lib.sh -rw-r--r-- 8.8 KB
git-mergetool.sh -rwxr-xr-x 6.0 KB
git-notes.sh -rwxr-xr-x 2.7 KB
git-parse-remote.sh -rwxr-xr-x 1.9 KB
git-pull.sh -rwxr-xr-x 7.8 KB
git-quiltimport.sh -rwxr-xr-x 3.3 KB
git-rebase--interactive.sh -rwxr-xr-x 23.1 KB
git-rebase.sh -rwxr-xr-x 14.0 KB
git-relink.perl -rwxr-xr-x 4.0 KB
git-repack.sh -rwxr-xr-x 4.4 KB
git-request-pull.sh -rwxr-xr-x 1.6 KB
git-send-email.perl -rwxr-xr-x 33.1 KB
git-sh-setup.sh -rwxr-xr-x 3.9 KB
git-stash.sh -rwxr-xr-x 8.6 KB
git-submodule.sh -rwxr-xr-x 17.1 KB
git-svn.perl -rwxr-xr-x 171.0 KB
git-web--browse.sh -rwxr-xr-x 3.9 KB
git.c -rw-r--r-- 14.9 KB
git.spec.in -rw-r--r-- 10.0 KB
graph.c -rw-r--r-- 34.6 KB
graph.h -rw-r--r-- 2.5 KB
grep.c -rw-r--r-- 21.8 KB
grep.h -rw-r--r-- 2.3 KB
hash.c -rw-r--r-- 2.5 KB
hash.h -rw-r--r-- 1.1 KB
help.c -rw-r--r-- 8.4 KB
help.h -rw-r--r-- 751 bytes
hex.c -rw-r--r-- 2.1 KB
http-backend.c -rw-r--r-- 14.2 KB
http-fetch.c -rw-r--r-- 2.3 KB
http-push.c -rw-r--r-- 54.2 KB
http-walker.c -rw-r--r-- 13.7 KB
http.c -rw-r--r-- 31.0 KB
http.h -rw-r--r-- 5.1 KB
ident.c -rw-r--r-- 6.1 KB
imap-send.c -rw-r--r-- 32.2 KB
levenshtein.c -rw-r--r-- 2.5 KB
levenshtein.h -rw-r--r-- 203 bytes
list-objects.c -rw-r--r-- 4.6 KB
list-objects.h -rw-r--r-- 422 bytes
ll-merge.c -rw-r--r-- 9.6 KB
ll-merge.h -rw-r--r-- 337 bytes
lockfile.c -rw-r--r-- 6.3 KB
log-tree.c -rw-r--r-- 14.1 KB
log-tree.h -rw-r--r-- 783 bytes
mailmap.c -rw-r--r-- 6.5 KB
mailmap.h -rw-r--r-- 263 bytes
match-trees.c -rw-r--r-- 8.7 KB
merge-file.c -rw-r--r-- 2.4 KB
merge-recursive.c -rw-r--r-- 38.8 KB
merge-recursive.h -rw-r--r-- 1.5 KB
name-hash.c -rw-r--r-- 2.5 KB
notes.c -rw-r--r-- 12.4 KB
notes.h -rw-r--r-- 295 bytes
object.c -rw-r--r-- 5.8 KB
object.h -rw-r--r-- 2.5 KB
pack-check.c -rw-r--r-- 4.5 KB
pack-refs.c -rw-r--r-- 2.8 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-- 7.3 KB
pack.h -rw-r--r-- 2.2 KB
pager.c -rw-r--r-- 2.2 KB
parse-options.c -rw-r--r-- 15.6 KB
parse-options.h -rw-r--r-- 7.0 KB
patch-delta.c -rw-r--r-- 2.1 KB
patch-ids.c -rw-r--r-- 2.5 KB
patch-ids.h -rw-r--r-- 490 bytes
path.c -rw-r--r-- 16.5 KB
pkt-line.c -rw-r--r-- 3.3 KB
pkt-line.h -rw-r--r-- 589 bytes
preload-index.c -rw-r--r-- 2.3 KB
pretty.c -rw-r--r-- 26.7 KB
progress.c -rw-r--r-- 6.5 KB
progress.h -rw-r--r-- 504 bytes
quote.c -rw-r--r-- 10.2 KB
quote.h -rw-r--r-- 2.5 KB
reachable.c -rw-r--r-- 5.6 KB
reachable.h -rw-r--r-- 127 bytes
read-cache.c -rw-r--r-- 44.2 KB
reflog-walk.c -rw-r--r-- 7.7 KB
reflog-walk.h -rw-r--r-- 664 bytes
refs.c -rw-r--r-- 43.6 KB
refs.h -rw-r--r-- 3.9 KB
remote-curl.c -rw-r--r-- 19.5 KB
remote.c -rw-r--r-- 41.1 KB
remote.h -rw-r--r-- 4.2 KB
replace_object.c -rw-r--r-- 2.6 KB
rerere.c -rw-r--r-- 14.3 KB
rerere.h -rw-r--r-- 505 bytes
resolve-undo.c -rw-r--r-- 4.0 KB
resolve-undo.h -rw-r--r-- 546 bytes
revision.c -rw-r--r-- 52.7 KB
revision.h -rw-r--r-- 4.3 KB
run-command.c -rw-r--r-- 12.7 KB
run-command.h -rw-r--r-- 2.8 KB
send-pack.h -rw-r--r-- 374 bytes
server-info.c -rw-r--r-- 5.2 KB
setup.c -rw-r--r-- 13.4 KB
sha1-lookup.c -rw-r--r-- 7.8 KB
sha1-lookup.h -rw-r--r-- 403 bytes
sha1_file.c -rw-r--r-- 63.4 KB
sha1_name.c -rw-r--r-- 25.8 KB
shallow.c -rw-r--r-- 2.3 KB
shell.c -rw-r--r-- 2.2 KB
shortlog.h -rw-r--r-- 450 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-- 8.0 KB
strbuf.h -rw-r--r-- 5.0 KB
string-list.c -rw-r--r-- 4.2 KB
string-list.h -rw-r--r-- 1.7 KB
submodule.c -rw-r--r-- 4.6 KB
submodule.h -rw-r--r-- 281 bytes
symlinks.c -rw-r--r-- 7.9 KB
tag.c -rw-r--r-- 2.7 KB
tag.h -rw-r--r-- 471 bytes
tar.h -rw-r--r-- 644 bytes
test-chmtime.c -rw-r--r-- 2.6 KB
test-ctype.c -rw-r--r-- 1.4 KB
test-date.c -rw-r--r-- 1.3 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-match-trees.c -rw-r--r-- 588 bytes
test-parse-options.c -rw-r--r-- 3.0 KB
test-path-utils.c -rw-r--r-- 872 bytes
test-run-command.c -rw-r--r-- 774 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
thread-utils.c -rw-r--r-- 965 bytes
thread-utils.h -rw-r--r-- 109 bytes
trace.c -rw-r--r-- 3.5 KB
transport-helper.c -rw-r--r-- 17.4 KB
transport.c -rw-r--r-- 29.4 KB
transport.h -rw-r--r-- 4.9 KB
tree-diff.c -rw-r--r-- 11.9 KB
tree-walk.c -rw-r--r-- 10.1 KB
tree-walk.h -rw-r--r-- 1.7 KB
tree.c -rw-r--r-- 7.0 KB
tree.h -rw-r--r-- 883 bytes
unimplemented.sh -rw-r--r-- 100 bytes
unpack-trees.c -rw-r--r-- 35.7 KB
unpack-trees.h -rw-r--r-- 1.6 KB
upload-pack.c -rw-r--r-- 17.6 KB
usage.c -rw-r--r-- 2.4 KB
userdiff.c -rw-r--r-- 6.0 KB
userdiff.h -rw-r--r-- 477 bytes
utf8.c -rw-r--r-- 12.8 KB
utf8.h -rw-r--r-- 537 bytes
walker.c -rw-r--r-- 7.2 KB
walker.h -rw-r--r-- 1.1 KB
wrap-for-bin.sh -rw-r--r-- 526 bytes
wrapper.c -rw-r--r-- 6.6 KB
write_or_die.c -rw-r--r-- 2.0 KB
ws.c -rw-r--r-- 8.2 KB
wt-status.c -rw-r--r-- 18.7 KB
wt-status.h -rw-r--r-- 1.3 KB
xdiff-interface.c -rw-r--r-- 7.9 KB
xdiff-interface.h -rw-r--r-- 1.1 KB

README

back to top