org.gitective.core.filter.commit
Class DuplicateBlobFilter

java.lang.Object
  extended by org.eclipse.jgit.revwalk.filter.RevFilter
      extended by org.gitective.core.filter.commit.CommitFilter
          extended by org.gitective.core.filter.commit.CommitDiffFilter
              extended by org.gitective.core.filter.commit.DuplicateBlobFilter
All Implemented Interfaces:
Cloneable

public class DuplicateBlobFilter
extends CommitDiffFilter

Filter that tracks commits where files with the same content were modified.

This filter traverses all the diff entries in each commit visited and tracks any instances where the different paths reference the same blob object id.


Field Summary
 
Fields inherited from class org.gitective.core.filter.commit.CommitDiffFilter
detectRenames, renameDetector
 
Fields inherited from class org.gitective.core.filter.commit.CommitFilter
repository
 
Fields inherited from class org.eclipse.jgit.revwalk.filter.RevFilter
ALL, MERGE_BASE, NO_MERGES, NONE
 
Constructor Summary
DuplicateBlobFilter()
          Create duplicate blob filter
DuplicateBlobFilter(boolean detectRenames)
          Create duplicate blob filter
 
Method Summary
 org.eclipse.jgit.revwalk.filter.RevFilter clone()
          Clones this filter.
 Map<org.eclipse.jgit.revwalk.RevCommit,DuplicateContainer> getDuplicates()
          Get the duplicates
 boolean hasDuplicates()
          Were any duplicate blobs detected for all commits visited?
 boolean include(org.eclipse.jgit.revwalk.RevCommit commit, Collection<org.eclipse.jgit.diff.DiffEntry> diffs)
          Handle the differences introduced by given commit.
 CommitFilter reset()
          Resets the filter state.
 
Methods inherited from class org.gitective.core.filter.commit.CommitDiffFilter
createTreeWalk, include, include, isFileDiff, setRepository
 
Methods inherited from class org.gitective.core.filter.commit.CommitFilter
include, setStop
 
Methods inherited from class org.eclipse.jgit.revwalk.filter.RevFilter
negate, requiresCommitBody, toString
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DuplicateBlobFilter

public DuplicateBlobFilter()
Create duplicate blob filter


DuplicateBlobFilter

public DuplicateBlobFilter(boolean detectRenames)
Create duplicate blob filter

Parameters:
detectRenames -
Method Detail

include

public boolean include(org.eclipse.jgit.revwalk.RevCommit commit,
                       Collection<org.eclipse.jgit.diff.DiffEntry> diffs)
Description copied from class: CommitDiffFilter
Handle the differences introduced by given commit.

Sub-classes should override this method. The default implementation returns true in all cases.

Overrides:
include in class CommitDiffFilter
Parameters:
commit - non-null
diffs - non-null
Returns:
true to continue, false to abort

getDuplicates

public Map<org.eclipse.jgit.revwalk.RevCommit,DuplicateContainer> getDuplicates()
Get the duplicates

Returns:
non-null but possibly empty map

hasDuplicates

public boolean hasDuplicates()
Were any duplicate blobs detected for all commits visited?

Returns:
true if duplicates exist, false otherwise

reset

public CommitFilter reset()
Description copied from class: CommitFilter
Resets the filter state. The base implementation does nothing by default and sub-classes should override if custom reset logic exists.

Overrides:
reset in class CommitFilter
Returns:
this filter

clone

public org.eclipse.jgit.revwalk.filter.RevFilter clone()
Description copied from class: CommitFilter
Clones this filter.

The default implementation throws a UnsupportedOperationException and sub-classes should override if filter cloning is supported.

Overrides:
clone in class CommitFilter
See Also:
RevFilter.clone()


Copyright © 2011-2012. All Rights Reserved.