From 2548a7e99ce7c6f5b7379a44ec92be80a0adac3d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 22 Sep 2011 15:37:49 -0400
Subject: [PATCH] Refined mirror federation feature.  Documentation.

---
 src/com/gitblit/utils/JGitUtils.java |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java
index b6b13ab..e61fea2 100644
--- a/src/com/gitblit/utils/JGitUtils.java
+++ b/src/com/gitblit/utils/JGitUtils.java
@@ -37,6 +37,10 @@
 import org.eclipse.jgit.api.CloneCommand;
 import org.eclipse.jgit.api.FetchCommand;
 import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.PullCommand;
+import org.eclipse.jgit.api.PullResult;
+import org.eclipse.jgit.api.ResetCommand;
+import org.eclipse.jgit.api.ResetCommand.ResetType;
 import org.eclipse.jgit.diff.DiffEntry;
 import org.eclipse.jgit.diff.DiffEntry.ChangeType;
 import org.eclipse.jgit.diff.DiffFormatter;
@@ -229,7 +233,28 @@
 			fetch.setCredentialsProvider(credentialsProvider);
 		}
 		fetch.setRefSpecs(specs);
-		FetchResult result = fetch.call();
+		FetchResult fetchRes = fetch.call();
+		return fetchRes;
+	}
+
+	/**
+	 * Reset HEAD to the latest remote tracking commit.
+	 * 
+	 * @param repository
+	 * @param remoteRef
+	 *            the remote tracking reference (e.g. origin/master)
+	 * @return Ref
+	 * @throws Exception
+	 */
+	public static Ref resetHEAD(Repository repository, String remoteRef) throws Exception {
+		if (!remoteRef.startsWith(Constants.R_REMOTES)) {
+			remoteRef = Constants.R_REMOTES + remoteRef;
+		}
+		Git git = new Git(repository);
+		ResetCommand reset = git.reset();
+		reset.setMode(ResetType.SOFT);
+		reset.setRef(remoteRef);
+		Ref result = reset.call();
 		return result;
 	}
 

--
Gitblit v1.9.1