Merge branch 'stable-4.1'

* stable-4.1:
  Prepare 4.1.2-SNAPSHOT builds
  JGit v4.1.1.201511131810-r
  Fallback exactRef: Do not ignore symrefs to unborn branch
  RefDirectory.exactRef: Do not ignore symrefs to unborn branch

Change-Id: I66afb303f355aad8a7eaa7a6dff06de70ae9c490
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
Matthias Sohn 2015-11-14 00:59:36 +01:00
commit 070bf8d15f
3 changed files with 47 additions and 13 deletions

View File

@ -1024,6 +1024,25 @@ public void testGetRef_EmptyDatabase() throws IOException {
assertNull(refdir.getRef("v1.0"));
}
@Test
public void testExactRef_EmptyDatabase() throws IOException {
Ref r;
r = refdir.exactRef(HEAD);
assertTrue(r.isSymbolic());
assertSame(LOOSE, r.getStorage());
assertEquals("refs/heads/master", r.getTarget().getName());
assertSame(NEW, r.getTarget().getStorage());
assertNull(r.getTarget().getObjectId());
assertNull(refdir.exactRef("refs/heads/master"));
assertNull(refdir.exactRef("refs/tags/v1.0"));
assertNull(refdir.exactRef("FETCH_HEAD"));
assertNull(refdir.exactRef("NOT.A.REF.NAME"));
assertNull(refdir.exactRef("master"));
assertNull(refdir.exactRef("v1.0"));
}
@Test
public void testGetRef_FetchHead() throws IOException {
// This is an odd special case where we need to make sure we read

View File

@ -261,6 +261,30 @@ private RefList<LooseRef> getLooseRefs() {
return loose;
}
@Override
public Ref exactRef(String name) throws IOException {
RefList<Ref> packed = getPackedRefs();
Ref ref;
try {
ref = readRef(name, packed);
if (ref != null) {
ref = resolve(ref, 0, null, null, packed);
}
} catch (IOException e) {
if (name.contains("/") //$NON-NLS-1$
|| !(e.getCause() instanceof InvalidObjectIdException)) {
throw e;
}
// While looking for a ref outside of refs/ (e.g., 'config'), we
// found a non-ref file (e.g., a config file) instead. Treat this
// as a ref-not-found condition.
ref = null;
}
fireRefsChanged();
return ref;
}
@Override
public Ref getRef(final String needle) throws IOException {
final RefList<Ref> packed = getPackedRefs();

View File

@ -239,20 +239,11 @@ public boolean performsAtomicTransactions() {
* @since 4.1
*/
public Ref exactRef(String name) throws IOException {
int slash = name.lastIndexOf('/');
String prefix = name.substring(0, slash + 1);
String rest = name.substring(slash + 1);
Ref result = getRefs(prefix).get(rest);
if (result != null || slash != -1) {
return result;
Ref ref = getRef(name);
if (ref == null || !name.equals(ref.getName())) {
return null;
}
for (Ref ref : getAdditionalRefs()) {
if (name.equals(ref.getName())) {
return ref;
}
}
return null;
return ref;
}
/**