diff options
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java | 13 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java | 2 |
2 files changed, 15 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java index a61580dd1f..56e5549b84 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java @@ -456,6 +456,19 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase { } @Test + public void testGetRefs_LooseSortedCorrectly() throws IOException { + Map<String, Ref> refs; + + writeLooseRef("refs/heads/project1/A", A); + writeLooseRef("refs/heads/project1-B", B); + + refs = refdir.getRefs(RefDatabase.ALL); + assertEquals(2, refs.size()); + assertEquals(A, refs.get("refs/heads/project1/A").getObjectId()); + assertEquals(B, refs.get("refs/heads/project1-B").getObjectId()); + } + + @Test public void testGetRefs_TagsOnly_AllPacked() throws IOException { Map<String, Ref> tags; Ref a; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java index bba634a6b6..cd199dcf92 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java @@ -288,6 +288,7 @@ public class RefDirectory extends RefDatabase { RefList<LooseRef> loose; if (scan.newLoose != null) { + scan.newLoose.sort(); loose = scan.newLoose.toRefList(); if (looseRefs.compareAndSet(oldLoose, loose)) modCnt.incrementAndGet(); @@ -312,6 +313,7 @@ public class RefDirectory extends RefDatabase { loose = loose.remove(toRemove); } } + symbolic.sort(); return new RefMap(prefix, packed, upcast(loose), symbolic.toRefList()); } |