Class SimilarityRenameDetector

java.lang.Object
org.eclipse.jgit.diff.SimilarityRenameDetector

class SimilarityRenameDetector extends Object
  • Field Details

    • BITS_PER_INDEX

      private static final int BITS_PER_INDEX
      Number of bits we need to express an index into src or dst list.

      This must be 28, giving us a limit of 2^28 entries in either list, which is an insane limit of 536,870,912 file names being considered in a single rename pass. The other 8 bits are used to store the score, while staying under 127 so the long doesn't go negative.

      See Also:
    • INDEX_MASK

      private static final int INDEX_MASK
      See Also:
    • SCORE_SHIFT

      private static final int SCORE_SHIFT
      See Also:
    • reader

      private ContentSource.Pair reader
    • srcs

      private List<DiffEntry> srcs
      All sources to consider for copies or renames.

      A source is typically a DiffEntry.ChangeType.DELETE change, but could be another type when trying to perform copy detection concurrently with rename detection.

    • dsts

      private List<DiffEntry> dsts
      All destinations to consider looking for a rename.

      A destination is typically an DiffEntry.ChangeType.ADD, as the name has just come into existence, and we want to discover where its initial content came from.

    • matrix

      private long[] matrix
      Matrix of all examined file pairs, and their scores.

      The upper 8 bits of each long stores the score, but the score is bounded to be in the range (0, 128] so that the highest bit is never set, and all entries are therefore positive.

      List indexes to an element of srcs and dsts are encoded as the lower two groups of 28 bits, respectively, but the encoding is inverted, so that 0 is expressed as (1 << 28) - 1. This sorts lower list indices later in the matrix, giving precedence to files whose names sort earlier in the tree.

    • renameScore

      private int renameScore
      Score a pair must exceed to be considered a rename.
    • tableOverflow

      private boolean tableOverflow
    • out

      private List<DiffEntry> out
  • Constructor Details

  • Method Details