From 4ab184198bd7eac67eb767cf2e19423f618a70ae Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 03 Jun 2011 17:44:19 -0400
Subject: [PATCH] GitNotes.  Unit testing.  More correct refs.

---
 tests/com/gitblit/tests/GitBlitSuite.java |   40 ++++++++++++++++++++++++++++++++++------
 1 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/tests/com/gitblit/tests/GitBlitSuite.java b/tests/com/gitblit/tests/GitBlitSuite.java
index 97e46c9..fe201b8 100644
--- a/tests/com/gitblit/tests/GitBlitSuite.java
+++ b/tests/com/gitblit/tests/GitBlitSuite.java
@@ -16,15 +16,19 @@
 package com.gitblit.tests;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 
 import junit.extensions.TestSetup;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import org.eclipse.jgit.api.CloneCommand;
+import org.eclipse.jgit.api.FetchCommand;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.storage.file.FileRepository;
+import org.eclipse.jgit.transport.RefSpec;
 
 import com.gitblit.FileSettings;
 import com.gitblit.GitBlit;
@@ -61,6 +65,14 @@
 		return new FileRepository(new File(REPOSITORIES, "ticgit.git"));
 	}
 
+	public static Repository getJGitRepository() throws Exception {
+		return new FileRepository(new File(REPOSITORIES, "nested/jgit.git"));
+	}
+
+	public static Repository getBluezGnomeRepository() throws Exception {
+		return new FileRepository(new File(REPOSITORIES, "nested/bluez-gnome.git"));
+	}
+
 	@Override
 	protected void setUp() throws Exception {
 		FileSettings settings = new FileSettings("distrib/gitblit.properties");
@@ -71,12 +83,15 @@
 
 		if (REPOSITORIES.exists() || REPOSITORIES.mkdirs()) {
 			cloneOrFetch("helloworld.git", "https://github.com/git/hello-world.git", true);
-			cloneOrFetch("nested/helloworld.git", "https://github.com/git/hello-world.git", true);
 			cloneOrFetch("ticgit.git", "https://github.com/jeffWelling/ticgit.git", true);
+			cloneOrFetch("nested/bluez-gnome.git", "https://git.kernel.org/pub/scm/bluetooth/bluez-gnome.git", true);
+			cloneOrFetch("nested/jgit.git", "https://github.com/eclipse/jgit.git", true);
+			cloneOrFetch("nested/helloworld.git", "https://github.com/git/hello-world.git", true);
 
 			enableTickets("ticgit.git");
 			enableDocs("ticgit.git");
 			showRemoteBranches("ticgit.git");
+			showRemoteBranches("nested/jgit.git");
 		}
 	}
 
@@ -84,22 +99,35 @@
 		File folder = new File(REPOSITORIES, toFolder + (bare ? "" : "/.git"));
 		if (folder.exists()) {
 			System.out.print("Updating " + (bare ? "bare " : " ") + toFolder + "... ");
-			FileRepository repository = new FileRepository(new File(REPOSITORIES, toFolder));
-			Git git = new Git(repository);
-			git.fetch().call();
-			repository.close();
+			fetch(toFolder);
 			System.out.println("done.");
 		} else {
 			System.out.println("Cloning " + (bare ? "bare " : " ") + toFolder + "... ");
 			CloneCommand clone = new CloneCommand();
 			clone.setBare(bare);
-			clone.setCloneAllBranches(true);
+			clone.setCloneAllBranches(true);			
 			clone.setURI(fromUrl);
 			clone.setDirectory(folder);
 			clone.call();
+			// Now we have to fetch because CloneCommand doesn't fetch
+			// Notes nor does it allow manual RefSpec.
+			fetch(toFolder);
 			System.out.println("done.");
 		}
 	}
+	
+	private void fetch(String toFolder) throws Exception {
+		FileRepository repository = new FileRepository(new File(REPOSITORIES, toFolder));
+		Git git = new Git(repository);
+		FetchCommand fetch = git.fetch();
+		List<RefSpec> specs = new ArrayList<RefSpec>();
+		specs.add(new RefSpec("+refs/heads/*:refs/remotes/origin/*"));
+		specs.add(new RefSpec("+refs/tags/*:refs/tags/*"));
+		specs.add(new RefSpec("+refs/notes/*:refs/notes/*"));
+		fetch.setRefSpecs(specs);
+		fetch.call();
+		repository.close();
+	}
 
 	private void enableTickets(String repositoryName) {
 		try {

--
Gitblit v1.9.1