Browse Source

Merge "RefDirectory.getRef: Treat fake missing symrefs like real ones"

stable-4.3
Jonathan Nieder 9 years ago committed by Gerrit Code Review @ Eclipse.org
parent
commit
15e60b646e
  1. 30
      org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java
  2. 2
      org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java

30
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java

@ -857,6 +857,36 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
assertNull("mising 1 due to cycle", r);
}
@Test
public void testGetRef_CycleInSymbolicRef() throws IOException {
Ref r;
writeLooseRef("refs/1", "ref: refs/2\n");
writeLooseRef("refs/2", "ref: refs/3\n");
writeLooseRef("refs/3", "ref: refs/4\n");
writeLooseRef("refs/4", "ref: refs/5\n");
writeLooseRef("refs/5", "ref: refs/end\n");
writeLooseRef("refs/end", A);
r = refdir.getRef("1");
assertEquals("refs/1", r.getName());
assertEquals(A, r.getObjectId());
assertTrue(r.isSymbolic());
writeLooseRef("refs/5", "ref: refs/6\n");
writeLooseRef("refs/6", "ref: refs/end\n");
r = refdir.getRef("1");
assertNull("missing 1 due to cycle", r);
writeLooseRef("refs/heads/1", B);
r = refdir.getRef("1");
assertEquals("refs/heads/1", r.getName());
assertEquals(B, r.getObjectId());
assertFalse(r.isSymbolic());
}
@Test
public void testGetRefs_PackedNotPeeled_Sorted() throws IOException {
Map<String, Ref> all;

2
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java

@ -294,6 +294,8 @@ public class RefDirectory extends RefDatabase {
ref = readRef(prefix + needle, packed);
if (ref != null) {
ref = resolve(ref, 0, null, null, packed);
}
if (ref != null) {
break;
}
} catch (IOException e) {

Loading…
Cancel
Save