Staging
v0.5.1
Revision 7da41f48c8acea834e8204917fe59da2b975903b authored by Shawn O. Pearce on 14 December 2006, 10:07:46 UTC, committed by Junio C Hamano on 14 December 2006, 10:40:33 UTC
When comparing file contents during the second loop through a rename
detection attempt we can skip the expensive byte-by-byte comparsion
if both source and destination files have valid SHA1 values.  This
improves performance by avoiding either an expensive open/mmap to
read the working tree copy, or an expensive inflate of a blob object.

Unfortunately we still have to at least initialize the sizes of the
source and destination files even if the SHA1 values don't match.
Failing to initialize the sizes causes a number of test cases to fail
and start reporting different copy/rename behavior than was expected.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent 155bd0c
History
File Mode Size
Documentation
arm
compat
contrib
gitweb
mozilla-sha1
perl
ppc
t
templates
xdiff
.gitignore -rw-r--r-- 2.1 KB
COPYING -rw-r--r-- 18.3 KB
GIT-VERSION-GEN -rwxr-xr-x 749 bytes
INSTALL -rw-r--r-- 5.1 KB
Makefile -rw-r--r-- 26.5 KB
README -rw-r--r-- 24.7 KB
alloc.c -rw-r--r-- 1.4 KB
archive-tar.c -rw-r--r-- 8.1 KB
archive-zip.c -rw-r--r-- 8.8 KB
archive.h -rw-r--r-- 1.1 KB
base85.c -rw-r--r-- 2.9 KB
blob.c -rw-r--r-- 1.2 KB
blob.h -rw-r--r-- 311 bytes
builtin-add.c -rw-r--r-- 3.0 KB
builtin-annotate.c -rw-r--r-- 444 bytes
builtin-apply.c -rw-r--r-- 65.9 KB
builtin-archive.c -rw-r--r-- 5.8 KB
builtin-blame.c -rw-r--r-- 45.6 KB
builtin-branch.c -rw-r--r-- 4.9 KB
builtin-cat-file.c -rw-r--r-- 3.2 KB
builtin-check-ref-format.c -rw-r--r-- 282 bytes
builtin-checkout-index.c -rw-r--r-- 7.6 KB
builtin-commit-tree.c -rw-r--r-- 3.3 KB
builtin-count-objects.c -rw-r--r-- 2.8 KB
builtin-diff-files.c -rw-r--r-- 1.3 KB
builtin-diff-index.c -rw-r--r-- 1.0 KB
builtin-diff-stages.c -rw-r--r-- 2.5 KB
builtin-diff-tree.c -rw-r--r-- 3.2 KB
builtin-diff.c -rw-r--r-- 8.6 KB
builtin-fmt-merge-msg.c -rw-r--r-- 7.7 KB
builtin-for-each-ref.c -rw-r--r-- 20.4 KB
builtin-grep.c -rw-r--r-- 16.0 KB
builtin-init-db.c -rw-r--r-- 8.2 KB
builtin-log.c -rw-r--r-- 13.6 KB
builtin-ls-files.c -rw-r--r-- 11.4 KB
builtin-ls-tree.c -rw-r--r-- 3.5 KB
builtin-mailinfo.c -rw-r--r-- 17.3 KB
builtin-mailsplit.c -rw-r--r-- 4.2 KB
builtin-mv.c -rw-r--r-- 7.5 KB
builtin-name-rev.c -rw-r--r-- 5.5 KB
builtin-pack-objects.c -rw-r--r-- 41.1 KB
builtin-pack-refs.c -rw-r--r-- 2.3 KB
builtin-prune-packed.c -rw-r--r-- 1.5 KB
builtin-prune.c -rw-r--r-- 5.6 KB
builtin-push.c -rw-r--r-- 6.5 KB
builtin-read-tree.c -rw-r--r-- 5.9 KB
builtin-repo-config.c -rw-r--r-- 4.9 KB
builtin-rev-list.c -rw-r--r-- 6.3 KB
builtin-rev-parse.c -rw-r--r-- 7.7 KB
builtin-rm.c -rw-r--r-- 3.1 KB
builtin-runstatus.c -rw-r--r-- 812 bytes
builtin-show-branch.c -rw-r--r-- 18.2 KB
builtin-show-ref.c -rw-r--r-- 3.2 KB
builtin-stripspace.c -rw-r--r-- 1.0 KB
builtin-symbolic-ref.c -rw-r--r-- 728 bytes
builtin-tar-tree.c -rw-r--r-- 2.1 KB
builtin-unpack-objects.c -rw-r--r-- 9.0 KB
builtin-update-index.c -rw-r--r-- 16.6 KB
builtin-update-ref.c -rw-r--r-- 1.5 KB
builtin-upload-archive.c -rw-r--r-- 4.2 KB
builtin-verify-pack.c -rw-r--r-- 1.6 KB
builtin-write-tree.c -rw-r--r-- 2.1 KB
builtin.h -rw-r--r-- 4.8 KB
cache-tree.c -rw-r--r-- 12.5 KB
cache-tree.h -rw-r--r-- 921 bytes
cache.h -rw-r--r-- 15.2 KB
check-builtins.sh -rwxr-xr-x 588 bytes
check-racy.c -rw-r--r-- 517 bytes
color.c -rw-r--r-- 3.2 KB
color.h -rw-r--r-- 376 bytes
combine-diff.c -rw-r--r-- 25.0 KB
commit.c -rw-r--r-- 22.6 KB
commit.h -rw-r--r-- 3.2 KB
config.c -rw-r--r-- 15.6 KB
config.mak.in -rw-r--r-- 971 bytes
configure.ac -rw-r--r-- 12.2 KB
connect.c -rw-r--r-- 16.1 KB
convert-objects.c -rw-r--r-- 7.5 KB
copy.c -rw-r--r-- 692 bytes
csum-file.c -rw-r--r-- 2.9 KB
csum-file.h -rw-r--r-- 566 bytes
ctype.c -rw-r--r-- 890 bytes
daemon.c -rw-r--r-- 26.0 KB
date.c -rw-r--r-- 17.0 KB
delta.h -rw-r--r-- 3.2 KB
describe.c -rw-r--r-- 3.7 KB
diff-delta.c -rw-r--r-- 13.8 KB
diff-lib.c -rw-r--r-- 8.7 KB
diff.c -rw-r--r-- 68.6 KB
diff.h -rw-r--r-- 6.6 KB
diffcore-break.c -rw-r--r-- 8.5 KB
diffcore-delta.c -rw-r--r-- 5.1 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-- 13.0 KB
diffcore.h -rw-r--r-- 3.7 KB
dir.c -rw-r--r-- 8.9 KB
dir.h -rw-r--r-- 1.3 KB
dump-cache-tree.c -rw-r--r-- 1.5 KB
entry.c -rw-r--r-- 4.1 KB
environment.c -rw-r--r-- 2.0 KB
exec_cmd.c -rw-r--r-- 2.8 KB
exec_cmd.h -rw-r--r-- 295 bytes
fetch-pack.c -rw-r--r-- 14.0 KB
fetch.c -rw-r--r-- 6.6 KB
fetch.h -rw-r--r-- 1.6 KB
fsck-objects.c -rw-r--r-- 13.6 KB
generate-cmdlist.sh -rwxr-xr-x 558 bytes
git-am.sh -rwxr-xr-x 10.8 KB
git-applymbox.sh -rwxr-xr-x 2.8 KB
git-applypatch.sh -rwxr-xr-x 5.4 KB
git-archimport.perl -rwxr-xr-x 34.2 KB
git-bisect.sh -rwxr-xr-x 5.7 KB
git-checkout.sh -rwxr-xr-x 5.3 KB
git-clean.sh -rwxr-xr-x 1.5 KB
git-clone.sh -rwxr-xr-x 9.9 KB
git-commit.sh -rwxr-xr-x 13.3 KB
git-compat-util.h -rw-r--r-- 4.2 KB
git-cvsexportcommit.perl -rwxr-xr-x 9.1 KB
git-cvsimport.perl -rwxr-xr-x 23.7 KB
git-cvsserver.perl -rwxr-xr-x 90.9 KB
git-fetch.sh -rwxr-xr-x 11.1 KB
git-instaweb.sh -rwxr-xr-x 4.9 KB
git-lost-found.sh -rwxr-xr-x 468 bytes
git-ls-remote.sh -rwxr-xr-x 2.2 KB
git-merge-octopus.sh -rwxr-xr-x 2.4 KB
git-merge-one-file.sh -rwxr-xr-x 3.1 KB
git-merge-ours.sh -rwxr-xr-x 356 bytes
git-merge-recursive-old.py -rwxr-xr-x 30.8 KB
git-merge-resolve.sh -rwxr-xr-x 955 bytes
git-merge-stupid.sh -rwxr-xr-x 1.4 KB
git-merge.sh -rwxr-xr-x 8.0 KB
git-p4import.py -rw-r--r-- 10.5 KB
git-parse-remote.sh -rwxr-xr-x 5.4 KB
git-pull.sh -rwxr-xr-x 2.9 KB
git-quiltimport.sh -rwxr-xr-x 3.0 KB
git-rebase.sh -rwxr-xr-x 8.0 KB
git-relink.perl -rwxr-xr-x 4.0 KB
git-repack.sh -rwxr-xr-x 2.5 KB
git-request-pull.sh -rwxr-xr-x 844 bytes
git-rerere.perl -rwxr-xr-x 4.8 KB
git-reset.sh -rwxr-xr-x 1.5 KB
git-resolve.sh -rwxr-xr-x 2.7 KB
git-revert.sh -rwxr-xr-x 4.2 KB
git-send-email.perl -rwxr-xr-x 15.2 KB
git-sh-setup.sh -rwxr-xr-x 1014 bytes
git-shortlog.perl -rwxr-xr-x 4.6 KB
git-svn.perl -rwxr-xr-x 89.5 KB
git-svnimport.perl -rwxr-xr-x 24.2 KB
git-tag.sh -rwxr-xr-x 2.4 KB
git-verify-tag.sh -rwxr-xr-x 703 bytes
git.c -rw-r--r-- 9.5 KB
git.spec.in -rw-r--r-- 7.0 KB
gitMergeCommon.py -rw-r--r-- 6.9 KB
gitk -rwxr-xr-x 170.4 KB
grep.c -rw-r--r-- 12.9 KB
grep.h -rw-r--r-- 1.6 KB
hash-object.c -rw-r--r-- 1.8 KB
help.c -rw-r--r-- 4.8 KB
http-fetch.c -rw-r--r-- 26.1 KB
http-push.c -rw-r--r-- 66.2 KB
http.c -rw-r--r-- 11.3 KB
http.h -rw-r--r-- 2.4 KB
ident.c -rw-r--r-- 5.1 KB
imap-send.c -rw-r--r-- 28.5 KB
index-pack.c -rw-r--r-- 24.9 KB
interpolate.c -rw-r--r-- 2.1 KB
interpolate.h -rw-r--r-- 583 bytes
list-objects.c -rw-r--r-- 3.3 KB
list-objects.h -rw-r--r-- 382 bytes
local-fetch.c -rw-r--r-- 6.1 KB
lockfile.c -rw-r--r-- 1.5 KB
log-tree.c -rw-r--r-- 8.3 KB
log-tree.h -rw-r--r-- 386 bytes
merge-base.c -rw-r--r-- 1.2 KB
merge-file.c -rw-r--r-- 3.3 KB
merge-index.c -rw-r--r-- 2.7 KB
merge-recursive.c -rw-r--r-- 34.6 KB
merge-tree.c -rw-r--r-- 7.8 KB
mktag.c -rw-r--r-- 3.9 KB
mktree.c -rw-r--r-- 3.1 KB
object-refs.c -rw-r--r-- 3.0 KB
object.c -rw-r--r-- 5.4 KB
object.h -rw-r--r-- 2.4 KB
pack-check.c -rw-r--r-- 4.2 KB
pack-redundant.c -rw-r--r-- 14.3 KB
pack.h -rw-r--r-- 382 bytes
pager.c -rw-r--r-- 974 bytes
patch-delta.c -rw-r--r-- 2.1 KB
patch-id.c -rw-r--r-- 1.6 KB
path-list.c -rw-r--r-- 2.3 KB
path-list.h -rw-r--r-- 603 bytes
path.c -rw-r--r-- 6.0 KB
peek-remote.c -rw-r--r-- 1.3 KB
pkt-line.c -rw-r--r-- 2.4 KB
pkt-line.h -rw-r--r-- 348 bytes
quote.c -rw-r--r-- 7.6 KB
quote.h -rw-r--r-- 2.0 KB
read-cache.c -rw-r--r-- 24.8 KB
receive-pack.c -rw-r--r-- 10.1 KB
refs.c -rw-r--r-- 20.9 KB
refs.h -rw-r--r-- 1.6 KB
revision.c -rw-r--r-- 28.8 KB
revision.h -rw-r--r-- 2.9 KB
rsh.c -rw-r--r-- 1.8 KB
rsh.h -rw-r--r-- 159 bytes
run-command.c -rw-r--r-- 1.5 KB
run-command.h -rw-r--r-- 523 bytes
send-pack.c -rw-r--r-- 9.9 KB
server-info.c -rw-r--r-- 5.1 KB
setup.c -rw-r--r-- 6.1 KB
sha1_file.c -rw-r--r-- 44.3 KB
sha1_name.c -rw-r--r-- 12.7 KB
shell.c -rw-r--r-- 1.1 KB
show-index.c -rw-r--r-- 594 bytes
sideband.c -rw-r--r-- 1.9 KB
sideband.h -rw-r--r-- 335 bytes
ssh-fetch.c -rw-r--r-- 3.6 KB
ssh-pull.c -rw-r--r-- 154 bytes
ssh-push.c -rw-r--r-- 155 bytes
ssh-upload.c -rw-r--r-- 2.8 KB
strbuf.c -rw-r--r-- 807 bytes
strbuf.h -rw-r--r-- 216 bytes
tag.c -rw-r--r-- 2.6 KB
tag.h -rw-r--r-- 471 bytes
tar.h -rw-r--r-- 644 bytes
test-date.c -rw-r--r-- 416 bytes
test-delta.c -rw-r--r-- 1.8 KB
test-sha1.c -rw-r--r-- 815 bytes
test-sha1.sh -rwxr-xr-x 1.9 KB
trace.c -rw-r--r-- 3.9 KB
tree-diff.c -rw-r--r-- 6.1 KB
tree-walk.c -rw-r--r-- 4.3 KB
tree-walk.h -rw-r--r-- 863 bytes
tree.c -rw-r--r-- 5.0 KB
tree.h -rw-r--r-- 860 bytes
unpack-file.c -rw-r--r-- 812 bytes
unpack-trees.c -rw-r--r-- 17.9 KB
unpack-trees.h -rw-r--r-- 865 bytes
update-server-info.c -rw-r--r-- 457 bytes
upload-pack.c -rw-r--r-- 11.1 KB
usage.c -rw-r--r-- 1.5 KB
var.c -rw-r--r-- 1.3 KB
write_or_die.c -rw-r--r-- 831 bytes
wt-status.c -rw-r--r-- 7.4 KB
wt-status.h -rw-r--r-- 451 bytes
xdiff-interface.c -rw-r--r-- 2.2 KB
xdiff-interface.h -rw-r--r-- 446 bytes

README

back to top