diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java
index c29f1a0..e208b27 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java
@@ -160,38 +160,6 @@ public void testRacyGitDetection() throws IOException,
 				indexState(SMUDGE|MOD_TIME|LENGTH));
 	}
 
-	/**
-	 * Waits until it is guaranteed that the filesystem timer (used e.g. for
-	 * lastModified) has a value greater than the lastmodified time of the given
-	 * file. This is done by touch a file, reading the lastmodified and sleeping
-	 * attribute sleeping
-	 *
-	 * @param lastFile
-	 * @return return the last measured value of the filesystem timer which is
-	 *         greater than then the lastmodification time of lastfile.
-	 * @throws InterruptedException
-	 * @throws IOException
-	 */
-	public static long fsTick(File lastFile) throws InterruptedException,
-			IOException {
-		long sleepTime = 1;
-		File tmp = File.createTempFile("FileTreeIteratorWithTimeControl", null);
-		try {
-			long startTime = (lastFile == null) ? tmp.lastModified() : lastFile
-					.lastModified();
-			long actTime = tmp.lastModified();
-			while (actTime <= startTime) {
-				Thread.sleep(sleepTime);
-				sleepTime *= 5;
-				tmp.setLastModified(System.currentTimeMillis());
-				actTime = tmp.lastModified();
-			}
-			return actTime;
-		} finally {
-			tmp.delete();
-		}
-	}
-
 	private void addToIndex(TreeSet<Long> modTimes)
 			throws FileNotFoundException, IOException {
 		DirCacheBuilder builder = db.lockDirCache().builder();
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryTestCase.java
index cb1f385..36b28ae 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryTestCase.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryTestCase.java
@@ -232,4 +232,40 @@ public static String lookup(Object l, String nameTemplate,
 		}
 		return name;
 	}
+
+	/**
+	 * Waits until it is guaranteed that a subsequent file modification has a
+	 * younger modification timestamp than the modification timestamp of the
+	 * given file. This is done by touching a temporary file, reading the
+	 * lastmodified attribute and, if needed, sleeping. After sleeping this loop
+	 * starts again until the filesystem timer has advanced enough.
+	 *
+	 * @param lastFile
+	 *            the file on which we want to wait until the filesystem timer
+	 *            has advanced more than the lastmodification timestamp of this
+	 *            file
+	 * @return return the last measured value of the filesystem timer which is
+	 *         greater than then the lastmodification time of lastfile.
+	 * @throws InterruptedException
+	 * @throws IOException
+	 */
+	public static long fsTick(File lastFile) throws InterruptedException,
+			IOException {
+		long sleepTime = 1;
+		File tmp = File.createTempFile("FileTreeIteratorWithTimeControl", null);
+		try {
+			long startTime = (lastFile == null) ? tmp.lastModified() : lastFile
+					.lastModified();
+			long actTime = tmp.lastModified();
+			while (actTime <= startTime) {
+				Thread.sleep(sleepTime);
+				sleepTime *= 5;
+				tmp.setLastModified(System.currentTimeMillis());
+				actTime = tmp.lastModified();
+			}
+			return actTime;
+		} finally {
+			tmp.delete();
+		}
+	}
 }
