##// END OF EJS Templates
findrenames: Optimise "addremove -s100" by matching files by their SHA1 hashes....
findrenames: Optimise "addremove -s100" by matching files by their SHA1 hashes. We speed up 'findrenames' for the usecase when a user specifies they want a similarity of 100% by matching files by their exact SHA1 hash value. This reduces the number of comparisons required to find exact matches from O(n^2) to O(n). While it would be nice if we could just use mercurial's pre-calculated SHA1 hash for existing files, this hash includes the file's ancestor information making it unsuitable for our purposes. Instead, we calculate the hash of old content from scratch. The following benchmarks were taken on the current head of crew: addremove 100% similarity: rm -rf *; hg up -C; mv tests tests.new hg --time addremove -s100 --dry-run before: real 176.350 secs (user 128.890+0.000 sys 47.430+0.000) after: real 2.130 secs (user 1.890+0.000 sys 0.240+0.000) addremove 75% similarity: rm -rf *; hg up -C; mv tests tests.new; \ for i in tests.new/*; do echo x >> $i; done hg --time addremove -s75 --dry-run before: real 264.560 secs (user 215.130+0.000 sys 49.410+0.000) after: real 218.710 secs (user 172.790+0.000 sys 45.870+0.000)

File last commit:

r11003:aca9a7cf default
r11060:e6df0177 default
Show More
test-debugcomplete.out
231 lines | 4.6 KiB | text/plain | TextLexer
/ tests / test-debugcomplete.out
% Show all commands except debug commands
add
addremove
annotate
archive
backout
bisect
branch
branches
bundle
cat
clone
commit
copy
diff
export
forget
grep
heads
help
identify
import
incoming
init
locate
log
manifest
merge
outgoing
parents
paths
pull
push
recover
remove
rename
resolve
revert
rollback
root
serve
showconfig
status
summary
tag
tags
tip
unbundle
update
verify
version
% Show all commands that start with "a"
add
addremove
annotate
archive
% Do not show debug commands if there are other candidates
diff
% Show debug commands if there are no other candidates
debugancestor
debugcheckstate
debugcommands
debugcomplete
debugconfig
debugdata
debugdate
debugfsinfo
debugindex
debugindexdot
debuginstall
debugrebuildstate
debugrename
debugsetparents
debugstate
debugsub
debugwalk
% Do not show the alias of a debug command if there are other candidates
% (this should hide rawcommit)
recover
remove
rename
resolve
revert
rollback
root
% Show the alias of a debug command if there are no other candidates
% Show the global options
--config
--cwd
--debug
--debugger
--encoding
--encodingmode
--help
--noninteractive
--profile
--quiet
--repository
--time
--traceback
--verbose
--version
-R
-h
-q
-v
-y
% Show the options for the "serve" command
--accesslog
--address
--certificate
--config
--cwd
--daemon
--daemon-pipefds
--debug
--debugger
--encoding
--encodingmode
--errorlog
--help
--ipv6
--name
--noninteractive
--pid-file
--port
--prefix
--profile
--quiet
--repository
--stdio
--style
--templates
--time
--traceback
--verbose
--version
--web-conf
-6
-A
-E
-R
-a
-d
-h
-n
-p
-q
-t
-v
-y
% Show an error if we use --options with an ambiguous abbreviation
hg: command 's' is ambiguous:
serve showconfig status summary
% Show all commands + options
add: include, exclude, dry-run
annotate: rev, follow, no-follow, text, user, file, date, number, changeset, line-number, include, exclude
clone: noupdate, updaterev, rev, branch, pull, uncompressed, ssh, remotecmd
commit: addremove, close-branch, include, exclude, message, logfile, date, user
diff: rev, change, text, git, nodates, show-function, reverse, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, stat, include, exclude
export: output, switch-parent, rev, text, git, nodates
forget: include, exclude
init: ssh, remotecmd
log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, patch, git, limit, no-merges, style, template, include, exclude
merge: force, rev, preview
pull: update, force, rev, branch, ssh, remotecmd
push: force, rev, branch, ssh, remotecmd
remove: after, force, include, exclude
serve: accesslog, daemon, daemon-pipefds, errorlog, port, address, prefix, name, web-conf, webdir-conf, pid-file, stdio, templates, style, ipv6, certificate
status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, change, include, exclude
summary: remote
update: clean, check, date, rev
addremove: similarity, include, exclude, dry-run
archive: no-decode, prefix, rev, type, include, exclude
backout: merge, parent, rev, include, exclude, message, logfile, date, user
bisect: reset, good, bad, skip, command, noupdate
branch: force, clean
branches: active, closed
bundle: force, rev, branch, base, all, type, ssh, remotecmd
cat: output, rev, decode, include, exclude
copy: after, force, include, exclude, dry-run
debugancestor:
debugcheckstate:
debugcommands:
debugcomplete: options
debugdata:
debugdate: extended
debugfsinfo:
debugindex:
debugindexdot:
debuginstall:
debugrebuildstate: rev
debugrename: rev
debugsetparents:
debugstate: nodates
debugsub: rev
debugwalk: include, exclude
grep: print0, all, follow, ignore-case, files-with-matches, line-number, rev, user, date, include, exclude
heads: rev, topo, active, closed, style, template
help:
identify: rev, num, id, branch, tags
import: strip, base, force, no-commit, exact, import-branch, message, logfile, date, user, similarity
incoming: force, newest-first, bundle, rev, branch, patch, git, limit, no-merges, style, template, ssh, remotecmd
locate: rev, print0, fullpath, include, exclude
manifest: rev
outgoing: force, rev, newest-first, branch, patch, git, limit, no-merges, style, template, ssh, remotecmd
parents: rev, style, template
paths:
recover:
rename: after, force, include, exclude, dry-run
resolve: all, list, mark, unmark, no-status, include, exclude
revert: all, date, rev, no-backup, include, exclude, dry-run
rollback: dry-run
root:
showconfig: untrusted
tag: force, local, rev, remove, message, date, user
tags:
tip: patch, git, style, template
unbundle: update
verify:
version: