summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BundleWriterTest.java27
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleWriter.java3
2 files changed, 19 insertions, 11 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BundleWriterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BundleWriterTest.java
index efc3834f45..24cee0a6a1 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BundleWriterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BundleWriterTest.java
@@ -73,20 +73,19 @@ import org.junit.Test;
public class BundleWriterTest extends SampleDataRepositoryTestCase {
@Test
- public void testWrite0() throws Exception {
+ public void testWriteSingleRef() throws Exception {
// Create a tiny bundle, (well one of) the first commits only
final byte[] bundle = makeBundle("refs/heads/firstcommit",
"42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", null);
// Then we clone a new repo from that bundle and do a simple test. This
- // makes sure
- // we could read the bundle we created.
+ // makes sure we could read the bundle we created.
Repository newRepo = createBareRepository();
FetchResult fetchResult = fetchFromBundle(newRepo, bundle);
Ref advertisedRef = fetchResult
.getAdvertisedRef("refs/heads/firstcommit");
- // We expect firstcommit to appear by id
+ // We expect first commit to appear by id
assertEquals("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", advertisedRef
.getObjectId().name());
// ..and by name as the bundle created a new ref
@@ -94,13 +93,21 @@ public class BundleWriterTest extends SampleDataRepositoryTestCase {
.resolve("refs/heads/firstcommit").name());
}
- /**
- * Incremental bundle test
- *
- * @throws Exception
- */
@Test
- public void testWrite1() throws Exception {
+ public void testWriteHEAD() throws Exception {
+ byte[] bundle = makeBundle("HEAD",
+ "42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", null);
+
+ Repository newRepo = createBareRepository();
+ FetchResult fetchResult = fetchFromBundle(newRepo, bundle);
+ Ref advertisedRef = fetchResult.getAdvertisedRef("HEAD");
+
+ assertEquals("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", advertisedRef
+ .getObjectId().name());
+ }
+
+ @Test
+ public void testIncrementalBundle() throws Exception {
byte[] bundle;
// Create a small bundle, an early commit
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleWriter.java
index 4f5cda7abd..d0f005cde8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleWriter.java
@@ -128,7 +128,8 @@ public class BundleWriter {
* object to pack. Multiple refs may point to the same object.
*/
public void include(final String name, final AnyObjectId id) {
- if (!Repository.isValidRefName(name))
+ boolean validRefName = Repository.isValidRefName(name) || Constants.HEAD.equals(name);
+ if (!validRefName)
throw new IllegalArgumentException(MessageFormat.format(JGitText.get().invalidRefName, name));
if (include.containsKey(name))
throw new IllegalStateException(JGitText.get().duplicateRef + name);