diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
index c0b2eedc006e639fe783a890314f83272964f81d..2fe3cb93265bf890e862b420d17cbb0dd2f14ce5 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
@@ -318,6 +318,38 @@ private static boolean doesNotExist(final RemoteConfig cfg) {
 		return cfg.getURIs().isEmpty() && cfg.getPushURIs().isEmpty();
 	}
 
+	/**
+	 * Determines whether the transport can handle the given URIish.
+	 *
+	 * @param remote
+	 *            location of the remote repository.
+	 * @return true if the protocol is supported.
+	 */
+	public static boolean canHandleProtocol(final URIish remote) {
+		if (TransportGitSsh.canHandle(remote))
+			return true;
+
+		else if (TransportHttp.canHandle(remote))
+			return true;
+
+		else if (TransportSftp.canHandle(remote))
+			return true;
+
+		else if (TransportGitAnon.canHandle(remote))
+			return true;
+
+		else if (TransportAmazonS3.canHandle(remote))
+			return true;
+
+		else if (TransportBundleFile.canHandle(remote))
+			return true;
+
+		else if (TransportLocal.canHandle(remote))
+			return true;
+
+		return false;
+	}
+
 	/**
 	 * Open a new transport instance to connect two repositories.
 	 *