org.eclipse.jgit.diff

## Class RenameDetector

- java.lang.Object
- - org.eclipse.jgit.diff.RenameDetector

    public class RenameDetector
    extends Object

Detect and resolve object renames.

### Constructor Summary

Constructors
Constructor and Description
`RenameDetector(ObjectReader reader, DiffConfig cfg)` Create a new rename detector with a specified reader and diff config.
`RenameDetector(Repository repo)` Create a new rename detector for the given repository

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `add(DiffEntry entry)` Add an entry to be considered for rename detection.
`void` `addAll(Collection<DiffEntry> entriesToAdd)` Add entries to be considered for rename detection.
`List<DiffEntry>` `compute()` Detect renames in the current file set.
`List<DiffEntry>` `compute(ContentSource.Pair reader, ProgressMonitor pm)` Detect renames in the current file set.
`List<DiffEntry>` `compute(ObjectReader reader, ProgressMonitor pm)` Detect renames in the current file set.
`List<DiffEntry>` `compute(ProgressMonitor pm)` Detect renames in the current file set.
`int` `getBreakScore()`
`int` `getRenameLimit()`
`int` `getRenameScore()`
`boolean` `isOverRenameLimit()` Check if the detector is over the rename limit.
`void` `reset()` Reset this rename detector for another rename detection pass.
`void` `setBreakScore(int breakScore)`
`void` `setRenameLimit(int limit)` Set the limit on the number of files to perform inexact rename detection.
`void` `setRenameScore(int score)` Set the minimum score required to pair an add/delete as a rename.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### RenameDetector

    public RenameDetector(Repository repo)

Create a new rename detector for the given repository

Parameters:
  `repo` - the repository to use for rename detection

#### RenameDetector

    public RenameDetector(ObjectReader reader,
                          DiffConfig cfg)

Create a new rename detector with a specified reader and diff config.

Parameters:
  `reader` - reader to obtain objects from the repository with.
  `cfg` - diff config specifying rename detection options.
Since:
  3.0

### Method Detail

#### getRenameScore

    public int getRenameScore()

Returns:
  minimum score required to pair an add/delete as a rename. The score ranges are within the bounds of (0, 100).

#### setRenameScore

    public void setRenameScore(int score)

Set the minimum score required to pair an add/delete as a rename.

When comparing two files together their score must be greater than or equal to the rename score for them to be considered a rename match. The score is computed based on content similarity, so a score of 60 implies that approximately 60% of the bytes in the files are identical.

Parameters:
  `score` - new rename score, must be within [0, 100].
Throws:
  `IllegalArgumentException` - the score was not within [0, 100].

#### getBreakScore

    public int getBreakScore()

Returns:
  the similarity score required to keep modified file pairs together. Any modify pairs that score below this will be broken apart into separate add/deletes. Values less than or equal to zero indicate that no modifies will be broken apart. Values over 100 cause all modify pairs to be broken.

#### setBreakScore

    public void setBreakScore(int breakScore)

Parameters:
  `breakScore` - the similarity score required to keep modified file pairs together. Any modify pairs that score below this will be broken apart into separate add/deletes. Values less than or equal to zero indicate that no modifies will be broken apart. Values over 100 cause all modify pairs to be broken.

#### getRenameLimit

    public int getRenameLimit()

Returns:
  limit on number of paths to perform inexact rename detection.

#### setRenameLimit

    public void setRenameLimit(int limit)

Set the limit on the number of files to perform inexact rename detection.

The rename detector has to build a square matrix of the rename limit on each side, then perform that many file compares to determine similarity. If 1000 files are added, and 1000 files are deleted, a 1000*1000 matrix must be allocated, and 1,000,000 file compares may need to be performed.

Parameters:
  `limit` - new file limit.

#### isOverRenameLimit

    public boolean isOverRenameLimit()

Check if the detector is over the rename limit.

This method can be invoked either before or after `getEntries` has been used to perform rename detection.

Returns:
  true if the detector has more file additions or removals than the rename limit is currently set to. In such configurations the detector will skip expensive computation.

#### addAll

    public void addAll(Collection<DiffEntry> entriesToAdd)

Add entries to be considered for rename detection.

Parameters:
  `entriesToAdd` - one or more entries to add.
Throws:
  `IllegalStateException` - if `getEntries` was already invoked.

#### add

    public void add(DiffEntry entry)

Add an entry to be considered for rename detection.

Parameters:
  `entry` - to add.
Throws:
  `IllegalStateException` - if `getEntries` was already invoked.

#### compute

    public List<DiffEntry> compute()
                            throws IOException

Detect renames in the current file set.

This convenience function runs without a progress monitor.

Returns:
  an unmodifiable list of `DiffEntry`s representing all files that have been changed.
Throws:
  `IOException` - file contents cannot be read from the repository.

#### compute

    public List<DiffEntry> compute(ProgressMonitor pm)
                            throws IOException

Detect renames in the current file set.

Parameters:
  `pm` - report progress during the detection phases.
Returns:
  an unmodifiable list of `DiffEntry`s representing all files that have been changed.
Throws:
  `IOException` - file contents cannot be read from the repository.

#### compute

    public List<DiffEntry> compute(ObjectReader reader,
                                   ProgressMonitor pm)
                            throws IOException

Detect renames in the current file set.

Parameters:
  `reader` - reader to obtain objects from the repository with.
  `pm` - report progress during the detection phases.
Returns:
  an unmodifiable list of `DiffEntry`s representing all files that have been changed.
Throws:
  `IOException` - file contents cannot be read from the repository.

#### compute

    public List<DiffEntry> compute(ContentSource.Pair reader,
                                   ProgressMonitor pm)
                            throws IOException

Detect renames in the current file set.

Parameters:
  `reader` - reader to obtain objects from the repository with.
  `pm` - report progress during the detection phases.
Returns:
  an unmodifiable list of `DiffEntry`s representing all files that have been changed.
Throws:
  `IOException` - file contents cannot be read from the repository.

#### reset

    public void reset()

Reset this rename detector for another rename detection pass.