Browse Source

Ensure stable tag sort in PlotWalk

Because tags are more interesting here than local or remote branch
heads, tags get sorted earlier in the array than heads or remotes do.

Bug: 324939
Change-Id: Ifc3863461654df7f34fdecbd2abe1f4b5d2ffb8e
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
CC: Mathias Kinzler <mathias.kinzler@sap.com>
CC: Stefan Lay <stefan.lay@sap.com>
stable-0.10
Shawn O. Pearce 14 years ago
parent
commit
864091d982
  1. 21
      org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java

21
org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java

@ -44,6 +44,10 @@
package org.eclipse.jgit.revplot;
import static org.eclipse.jgit.lib.Constants.R_HEADS;
import static org.eclipse.jgit.lib.Constants.R_REMOTES;
import static org.eclipse.jgit.lib.Constants.R_TAGS;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
@ -131,11 +135,14 @@ public class PlotWalk extends RevWalk {
return -1;
if (t1 < t2)
return 1;
return 0;
} catch (IOException e) {
// ignore
return 0;
}
int cmp = kind(o1) - kind(o2);
if (cmp == 0)
cmp = o1.getName().compareTo(o2.getName());
return cmp;
}
long timeof(RevObject o) {
@ -148,5 +155,15 @@ public class PlotWalk extends RevWalk {
}
return 0;
}
int kind(Ref r) {
if (r.getName().startsWith(R_TAGS))
return 0;
if (r.getName().startsWith(R_HEADS))
return 1;
if (r.getName().startsWith(R_REMOTES))
return 2;
return 3;
}
}
}

Loading…
Cancel
Save