Browse Source

Merge "Support branches with name 'config'"

stable-2.1
Christian Halstrick 12 years ago committed by Gerrit Code Review @ Eclipse.org
parent
commit
32e952fefd
  1. 13
      org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java
  2. 22
      org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java

13
org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java

@ -359,6 +359,19 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
assertTrue("empty objects/", refdir.getRefs("objects/").isEmpty()); assertTrue("empty objects/", refdir.getRefs("objects/").isEmpty());
} }
@Test
public void testReadNotExistingBranchConfig() throws IOException {
assertNull("find branch config", refdir.getRef("config"));
assertNull("find branch config", refdir.getRef("refs/heads/config"));
}
@Test
public void testReadBranchConfig() throws IOException {
writeLooseRef("refs/heads/config", A);
assertNotNull("find branch config", refdir.getRef("config"));
}
@Test @Test
public void testGetRefs_HeadsOnly_AllLoose() throws IOException { public void testGetRefs_HeadsOnly_AllLoose() throws IOException {
Map<String, Ref> heads; Map<String, Ref> heads;

22
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java

@ -73,6 +73,7 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import org.eclipse.jgit.errors.InvalidObjectIdException;
import org.eclipse.jgit.errors.LockFailedException; import org.eclipse.jgit.errors.LockFailedException;
import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.errors.ObjectWritingException; import org.eclipse.jgit.errors.ObjectWritingException;
@ -260,10 +261,17 @@ public class RefDirectory extends RefDatabase {
final RefList<Ref> packed = getPackedRefs(); final RefList<Ref> packed = getPackedRefs();
Ref ref = null; Ref ref = null;
for (String prefix : SEARCH_PATH) { for (String prefix : SEARCH_PATH) {
ref = readRef(prefix + needle, packed); try {
if (ref != null) { ref = readRef(prefix + needle, packed);
ref = resolve(ref, 0, null, null, packed); if (ref != null) {
break; ref = resolve(ref, 0, null, null, packed);
break;
}
} catch (IOException e) {
if (!(!needle.contains("/") && "".equals(prefix) && e
.getCause() instanceof InvalidObjectIdException)) {
throw e;
}
} }
} }
fireRefsChanged(); fireRefsChanged();
@ -937,7 +945,11 @@ public class RefDirectory extends RefDatabase {
while (0 < n && Character.isWhitespace(buf[n - 1])) while (0 < n && Character.isWhitespace(buf[n - 1]))
n--; n--;
String content = RawParseUtils.decode(buf, 0, n); String content = RawParseUtils.decode(buf, 0, n);
throw new IOException(MessageFormat.format(JGitText.get().notARef, name, content));
IOException ioException = new IOException(MessageFormat.format(JGitText.get().notARef,
name, content));
ioException.initCause(notRef);
throw ioException;
} }
return new LooseUnpeeled(otherSnapshot, name, id); return new LooseUnpeeled(otherSnapshot, name, id);
} }

Loading…
Cancel
Save