]> source.dussan.org Git - jgit.git/commitdiff
Enable PlotWalk to show additional refs 01/3801/3
authorStefan Lay <stefan.lay@sap.com>
Fri, 1 Jul 2011 15:38:01 +0000 (17:38 +0200)
committerStefan Lay <stefan.lay@sap.com>
Fri, 1 Jul 2011 15:38:01 +0000 (17:38 +0200)
Change-Id: Ic85f8859571dc2aef7f146ce56a6c9b8ec142e60
Signed-off-by: Stefan Lay <stefan.lay@sap.com>
org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotWalk.java

index ea2437ff77671749e48fbba844233c544190a4e7..de181b1037fc3b33e9eb206221bebbeefd3503e8 100644 (file)
@@ -51,7 +51,9 @@ import static org.eclipse.jgit.lib.Constants.R_TAGS;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
@@ -91,6 +93,27 @@ public class PlotWalk extends RevWalk {
                reverseRefMap = repo.getAllRefsByPeeledObjectId();
        }
 
+       /**
+        * Add additional refs to the walk
+        *
+        * @param refs
+        *            additional refs
+        *
+        * @throws IOException
+        */
+       public void addAdditionalRefs(Iterable<Ref> refs) throws IOException {
+               for (Ref ref : refs) {
+                       Set<Ref> set = reverseRefMap.get(ref.getObjectId());
+                       if (set == null)
+                               set = Collections.singleton(ref);
+                       else {
+                               set = new HashSet<Ref>(set);
+                               set.add(ref);
+                       }
+                       reverseRefMap.put(ref.getObjectId(), set);
+               }
+       }
+
        @Override
        public void sort(final RevSort s, final boolean use) {
                if (s == RevSort.TOPO && !use)