Signed-off-by: Charles O'Farrell <charleso@xxxxxxxxxxxx> --- .../src/org/spearce/jgit/pgm/Branch.java | 30 ++++++++++++++----- 1 files changed, 22 insertions(+), 8 deletions(-) diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java index c89f510..9141be0 100644 --- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java +++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Branch.java @@ -39,15 +39,17 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.TreeSet; +import java.util.Map.Entry; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; import org.spearce.jgit.lib.Constants; import org.spearce.jgit.lib.ObjectId; import org.spearce.jgit.lib.Ref; +import org.spearce.jgit.lib.RefComparator; import org.spearce.jgit.lib.RefUpdate; import org.spearce.jgit.lib.RefUpdate.Result; @@ -72,6 +74,8 @@ @Argument private List<String> branches = new ArrayList<String>(); + private Map<String, Ref> printRefs = new LinkedHashMap<String, Ref>(); + @Override protected void run() throws Exception { if (delete || deleteForce) @@ -87,17 +91,27 @@ private void list() { if (head != null) { String current = head.getName(); if (current.equals(Constants.HEAD)) - printHead("(no branch)", true); - for (String ref : new TreeSet<String>(refs.keySet())) { - if (isHead(ref)) - printHead(ref, current.equals(ref)); + addRef("(no branch)", head); + addRefs(refs, Constants.HEADS_PREFIX, !remote); + addRefs(refs, Constants.REMOTES_PREFIX, remote); + for (Entry<String, Ref> e : printRefs.entrySet()) { + printHead(e.getKey(), current.equals(e.getValue().getName())); + } + } + } + + private void addRefs(Map<String, Ref> allRefs, String prefix, boolean add) { + if (all || add) { + for (Ref ref : RefComparator.sort(allRefs.values())) { + String name = ref.getName(); + if (name.startsWith(prefix)) + addRef(name, ref); } } } - private boolean isHead(String key) { - return (all || !remote) && key.startsWith(Constants.HEADS_PREFIX) - || (all || remote) && key.startsWith(Constants.REMOTES_PREFIX); + private void addRef(String name, Ref ref) { + printRefs.put(name, ref); } private void printHead(String ref, boolean isCurrent) { -- 1.6.0.2.g2ebc0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html