|
|
@@ -73,7 +73,6 @@ import org.eclipse.jgit.revwalk.RevCommit; |
|
|
|
import org.eclipse.jgit.revwalk.RevFlag; |
|
|
|
import org.eclipse.jgit.revwalk.RevWalk; |
|
|
|
import org.eclipse.jgit.treewalk.TreeWalk; |
|
|
|
import org.eclipse.jgit.treewalk.filter.AndTreeFilter; |
|
|
|
import org.eclipse.jgit.treewalk.filter.PathFilter; |
|
|
|
import org.eclipse.jgit.treewalk.filter.TreeFilter; |
|
|
|
|
|
|
@@ -601,16 +600,7 @@ public class BlameGenerator { |
|
|
|
return split(n.getNextCandidate(0), n); |
|
|
|
revPool.parseHeaders(parent); |
|
|
|
|
|
|
|
if (n.sourceCommit != null && n.recursivePath) { |
|
|
|
treeWalk.setFilter(AndTreeFilter.create(n.sourcePath, ID_DIFF)); |
|
|
|
treeWalk.reset(n.sourceCommit.getTree(), parent.getTree()); |
|
|
|
if (!treeWalk.next()) |
|
|
|
return blameEntireRegionOnParent(n, parent); |
|
|
|
if (isFile(treeWalk.getRawMode(1))) { |
|
|
|
treeWalk.getObjectId(idBuf, 1); |
|
|
|
return splitBlameWithParent(n, parent); |
|
|
|
} |
|
|
|
} else if (find(parent, n.sourcePath)) { |
|
|
|
if (find(parent, n.sourcePath)) { |
|
|
|
if (idBuf.equals(n.sourceBlob)) |
|
|
|
return blameEntireRegionOnParent(n, parent); |
|
|
|
return splitBlameWithParent(n, parent); |
|
|
@@ -627,7 +617,7 @@ public class BlameGenerator { |
|
|
|
// A 100% rename without any content change can also |
|
|
|
// skip directly to the parent. |
|
|
|
n.sourceCommit = parent; |
|
|
|
n.setSourcePath(PathFilter.create(r.getOldPath())); |
|
|
|
n.sourcePath = PathFilter.create(r.getOldPath()); |
|
|
|
push(n); |
|
|
|
return false; |
|
|
|
} |
|
|
@@ -720,7 +710,7 @@ public class BlameGenerator { |
|
|
|
// have an exact content match. For performance reasons |
|
|
|
// we choose to follow the one parent over trying to do |
|
|
|
// possibly both parents. |
|
|
|
n.setSourcePath(PathFilter.create(r.getOldPath())); |
|
|
|
n.sourcePath = PathFilter.create(r.getOldPath()); |
|
|
|
return blameEntireRegionOnParent(n, parent); |
|
|
|
} |
|
|
|
|
|
|
@@ -988,26 +978,4 @@ public class BlameGenerator { |
|
|
|
return ent.getChangeType() == ChangeType.RENAME |
|
|
|
|| ent.getChangeType() == ChangeType.COPY; |
|
|
|
} |
|
|
|
|
|
|
|
private static final TreeFilter ID_DIFF = new TreeFilter() { |
|
|
|
@Override |
|
|
|
public boolean include(TreeWalk tw) { |
|
|
|
return !tw.idEqual(0, 1); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean shouldBeRecursive() { |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public TreeFilter clone() { |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public String toString() { |
|
|
|
return "ID_DIFF"; //$NON-NLS-1$ |
|
|
|
} |
|
|
|
}; |
|
|
|
} |