|
|
|
@ -45,12 +45,15 @@
|
|
|
|
|
package org.eclipse.jgit.revplot; |
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.util.Arrays; |
|
|
|
|
import java.util.Collection; |
|
|
|
|
import java.util.Comparator; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
|
|
import org.eclipse.jgit.JGitText; |
|
|
|
|
import org.eclipse.jgit.errors.IncorrectObjectTypeException; |
|
|
|
|
import org.eclipse.jgit.errors.MissingObjectException; |
|
|
|
|
import org.eclipse.jgit.lib.AnyObjectId; |
|
|
|
|
import org.eclipse.jgit.lib.PersonIdent; |
|
|
|
|
import org.eclipse.jgit.lib.Ref; |
|
|
|
@ -93,23 +96,26 @@ public class PlotWalk extends RevWalk {
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected RevCommit createCommit(final AnyObjectId id) { |
|
|
|
|
return new PlotCommit(id, getTags(id)); |
|
|
|
|
return new PlotCommit(id); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param commitId |
|
|
|
|
* @return return the list of knows tags referring to this commit |
|
|
|
|
*/ |
|
|
|
|
protected Ref[] getTags(final AnyObjectId commitId) { |
|
|
|
|
@Override |
|
|
|
|
public RevCommit next() throws MissingObjectException, |
|
|
|
|
IncorrectObjectTypeException, IOException { |
|
|
|
|
PlotCommit<?> pc = (PlotCommit) super.next(); |
|
|
|
|
if (pc != null) |
|
|
|
|
pc.refs = getTags(pc); |
|
|
|
|
return pc; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Ref[] getTags(final AnyObjectId commitId) { |
|
|
|
|
Collection<Ref> list = reverseRefMap.get(commitId); |
|
|
|
|
Ref[] tags; |
|
|
|
|
if (list == null) |
|
|
|
|
tags = null; |
|
|
|
|
else { |
|
|
|
|
tags = list.toArray(new Ref[list.size()]); |
|
|
|
|
// TODO hotfix, this results in a loop and consequently stack overflow
|
|
|
|
|
// when opening the history view in EGit
|
|
|
|
|
// Arrays.sort(tags, new PlotRefComparator());
|
|
|
|
|
Arrays.sort(tags, new PlotRefComparator()); |
|
|
|
|
} |
|
|
|
|
return tags; |
|
|
|
|
} |
|
|
|
|