diff --git a/mercurial/similar.py b/mercurial/similar.py --- a/mercurial/similar.py +++ b/mercurial/similar.py @@ -25,7 +25,7 @@ def _findexactmatches(repo, added, remov # Get hashes of removed files. hashes = {} - for i, fctx in enumerate(removed): + for i, fctx in enumerate(reversed(removed)): repo.ui.progress(_('searching for exact renames'), i, total=numfiles, unit=_('files')) h = hashlib.sha1(fctx.data()).digest() @@ -85,7 +85,7 @@ def _findsimilarmatches(repo, added, rem if data is None: data = _ctxdata(r) myscore = _score(a, data) - if myscore >= bestscore: + if myscore > bestscore: copies[a] = (r, myscore) repo.ui.progress(_('searching'), None) diff --git a/tests/test-addremove-similar.t b/tests/test-addremove-similar.t --- a/tests/test-addremove-similar.t +++ b/tests/test-addremove-similar.t @@ -101,7 +101,7 @@ pick one from many identical files removing 8 removing 9 adding a - recording removal of 9 as rename to a (100% similar) + recording removal of 0 as rename to a (100% similar) $ hg revert -aq pick one from many similar files @@ -124,7 +124,7 @@ pick one from many similar files removing 8 removing 9 adding a - recording removal of 9 as rename to a (99% similar) + recording removal of 0 as rename to a (99% similar) $ hg commit -m 'always the same file should be selected' should all fail