diff --git a/hggit/__init__.py b/hggit/__init__.py
index d46938925708ca833f37359fa7bfe60883ce7825_aGdnaXQvX19pbml0X18ucHk=..e1117014036c1b19d2b98ebad43142c236e0d1fa_aGdnaXQvX19pbml0X18ucHk= 100644
--- a/hggit/__init__.py
+++ b/hggit/__init__.py
@@ -128,6 +128,26 @@
 
 hg.schemes['file'] = _local
 
+# we need to wrap this so that git-like ssh paths are not prepended with a
+# local filesystem path. ugh.
+def _url(orig, path, **kwargs):
+    # we'll test for 'git@' then use our heuristic method to determine if it's
+    # a git uri
+    if not (path.startswith(os.sep) and ':' in path):
+        return orig(path, **kwargs)
+
+    # the file path will be everything up until the last slash right before the
+    # ':'
+    lastsep = path.rindex(os.sep, None, path.index(':')) + 1
+    gituri = path[lastsep:]
+
+    if util.isgitsshuri(gituri):
+        return orig(gituri, **kwargs)
+    return orig(path, **kwargs)
+
+extensions.wrapfunction(hgutil, 'url', _url)
+
+
 def _httpgitwrapper(orig):
     # we should probably test the connection but for now, we just keep it
     # simple and check for a url ending in '.git'