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>
This commit is contained in:
Shawn O. Pearce 2010-12-03 13:19:15 -08:00
parent 37001ddc8d
commit 864091d982
1 changed files with 19 additions and 2 deletions

View File

@ -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 int compare(Ref o1, Ref o2) {
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 @@ long timeof(RevObject o) {
}
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;
}
}
}