Mercurial > hg > mercurial-crew-with-dirclash
view tests/test-mq-caches @ 4135:6cb6cfe43c5d
Avoid some false positives for addremove -s
The original code uses the similary score
1 - len(diff(after, before)) / len(after)
The diff can at most be the size of the 'before' file, so any small
'before' file would be considered very similar. Removing an empty file
would cause all files added in the same revision to be considered
copies of the removed file.
This changes the metric to
bytes_overlap(before, after) / len(before + after)
i.e. the actual percentage of bytes shared between the two files.
author | Erling Ellingsen <erlingalf@gmail.com> |
---|---|
date | Sun, 18 Feb 2007 20:39:25 +0100 |
parents | 9dcf9d45cab8 |
children | a7af0eeae8a3 |
line wrap: on
line source
#!/bin/sh echo '[extensions]' >> $HGRCPATH echo 'hgext.mq=' >> $HGRCPATH show_branch_cache() { branches=.hg/branches.cache # force cache (re)generation hg log -r does-not-exist 2> /dev/null hg log -r tip --template 'tip: #rev#\n' if [ -f $branches ]; then sort $branches else echo No $branches fi if [ "$1" = 1 ]; then for b in foo bar; do hg log -r $b --template "branch $b: "'#rev#\n' done fi } hg init a cd a hg qinit -c echo '# mq patch on an empty repo' hg qnew p1 show_branch_cache echo > pfile hg add pfile hg qrefresh -m 'patch 1' show_branch_cache echo echo '# some regular revisions' hg qpop echo foo > foo hg add foo echo foo > .hg/branch hg ci -m 'branch foo' -d '1000000 0' echo bar > bar hg add bar echo bar > .hg/branch hg ci -m 'branch bar' -d '1000000 0' show_branch_cache echo echo '# add some mq patches' hg qpush show_branch_cache hg qnew p2 echo foo > .hg/branch echo foo2 >> foo hg qrefresh -m 'patch 2' show_branch_cache 1 echo echo '# removing the cache' rm .hg/branches.cache show_branch_cache 1 echo echo '# importing rev 1 (the cache now ends in one of the patches)' hg qimport -r 1 -n p0 show_branch_cache 1 hg log -r qbase --template 'qbase: #rev#\n' echo echo '# detect an invalid cache' hg qpop -a hg qpush -a show_branch_cache