]> source.dussan.org Git - jgit.git/commitdiff
RenameDetector: Only scan deletes if adds exist 93/1893/2
authorShawn O. Pearce <spearce@spearce.org>
Thu, 11 Nov 2010 23:02:57 +0000 (15:02 -0800)
committerShawn O. Pearce <spearce@spearce.org>
Fri, 12 Nov 2010 19:57:02 +0000 (11:57 -0800)
If there are only deletes, don't need perform rename or copy
detection.  There are no adds (aka destinations) for the deletes
to match against.

Change-Id: I00fb90c509fa26a053de561dd8506cc1e0f5799a
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java

index 9d9a96d8dff15d408a31b9e68aa8876c0754befc..dfaf5886e7af7cb3859c5dd7144aae8c4ca3e23b 100644 (file)
@@ -357,9 +357,17 @@ public class RenameDetector {
 
                        if (pm == null)
                                pm = NullProgressMonitor.INSTANCE;
+
+                       if (0 < breakScore)
                                breakModifies(reader, pm);
+
+                       if (!added.isEmpty() && !deleted.isEmpty())
                                findExactRenames(pm);
+
+                       if (!added.isEmpty() && !deleted.isEmpty())
                                findContentRenames(reader, pm);
+
+                       if (0 < breakScore && !added.isEmpty() && !deleted.isEmpty())
                                rejoinModifies(pm);
 
                        entries.addAll(added);
@@ -383,9 +391,6 @@ public class RenameDetector {
 
        private void breakModifies(ContentSource.Pair reader, ProgressMonitor pm)
                        throws IOException {
-               if (breakScore <= 0)
-                       return;
-
                ArrayList<DiffEntry> newEntries = new ArrayList<DiffEntry>(entries.size());
 
                pm.beginTask(JGitText.get().renamesBreakingModifies, entries.size());
@@ -469,9 +474,6 @@ public class RenameDetector {
                        ProgressMonitor pm)
                        throws IOException {
                int cnt = Math.max(added.size(), deleted.size());
-               if (cnt == 0)
-                       return;
-
                if (getRenameLimit() == 0 || cnt <= getRenameLimit()) {
                        SimilarityRenameDetector d;
 
@@ -489,9 +491,6 @@ public class RenameDetector {
 
        @SuppressWarnings("unchecked")
        private void findExactRenames(ProgressMonitor pm) {
-               if (added.isEmpty() || deleted.isEmpty())
-                       return;
-
                pm.beginTask(JGitText.get().renamesFindingExact, //
                                added.size() + added.size() + deleted.size()
                                                + added.size() * deleted.size());