mercurial/cmdutil.py
changeset 8989 85b81cac9613
parent 8988 1247751d9bf8
child 8990 627399330c7d
equal deleted inserted replaced
8988:1247751d9bf8 8989:85b81cac9613
   263     return _match.always(repo.root, repo.getcwd())
   263     return _match.always(repo.root, repo.getcwd())
   264 
   264 
   265 def matchfiles(repo, files):
   265 def matchfiles(repo, files):
   266     return _match.exact(repo.root, repo.getcwd(), files)
   266     return _match.exact(repo.root, repo.getcwd(), files)
   267 
   267 
   268 def findrenames(repo, match, threshold):
   268 def findrenames(repo, added, removed, threshold):
   269     '''find renamed files -- yields (before, after, score) tuples'''
   269     '''find renamed files -- yields (before, after, score) tuples'''
   270     added, removed = repo.status(match=match)[1:3]
       
   271     ctx = repo['.']
   270     ctx = repo['.']
   272     for a in added:
   271     for a in added:
   273         aa = repo.wread(a)
   272         aa = repo.wread(a)
   274         bestname, bestscore = None, threshold
   273         bestname, bestscore = None, threshold
   275         for r in removed:
   274         for r in removed:
       
   275             if r not in ctx:
       
   276                 continue
   276             rr = ctx.filectx(r).data()
   277             rr = ctx.filectx(r).data()
   277 
   278 
   278             # bdiff.blocks() returns blocks of matching lines
   279             # bdiff.blocks() returns blocks of matching lines
   279             # count the number of bytes in each
   280             # count the number of bytes in each
   280             equal = 0
   281             equal = 0
   320                 repo.ui.status(_('removing %s\n') % ((pats and rel) or abs))
   321                 repo.ui.status(_('removing %s\n') % ((pats and rel) or abs))
   321     if not dry_run:
   322     if not dry_run:
   322         repo.remove(deleted)
   323         repo.remove(deleted)
   323         repo.add(unknown)
   324         repo.add(unknown)
   324     if similarity > 0:
   325     if similarity > 0:
   325         for old, new, score in findrenames(repo, m, similarity):
   326         for old, new, score in findrenames(repo, unknown, deleted, similarity):
   326             if repo.ui.verbose or not m.exact(old) or not m.exact(new):
   327             if repo.ui.verbose or not m.exact(old) or not m.exact(new):
   327                 repo.ui.status(_('recording removal of %s as rename to %s '
   328                 repo.ui.status(_('recording removal of %s as rename to %s '
   328                                  '(%d%% similar)\n') %
   329                                  '(%d%% similar)\n') %
   329                                (m.rel(old), m.rel(new), score * 100))
   330                                (m.rel(old), m.rel(new), score * 100))
   330             if not dry_run:
   331             if not dry_run: