Subject: [PATCHv3 4/5] Teach transport about the gitfile mechanism

From: Phil Hord <[email-masked]>
Date: Wed, 05 Oct 2011 09:35:10 -0400

The transport_get() function assumes that a regular file is a
bundle rather than a local git directory. Check if the file is
actually a gitfile.  If so, do not try to process it as a
bundle, but treat it as a local repository instead.

Signed-off-by: Phil Hord <[email-masked]>

diff --git a/transport.c b/transport.c
index cd49a25..2ff2d68 100644
--- a/transport.c
+++ b/transport.c
@@ -915,7 +915,7 @@ struct transport *transport_get(struct remote *remote, const char *url)
 		ret->fetch = fetch_objs_via_rsync;
 		ret->push = rsync_transport_push;
 		ret->smart_options = NULL;
-	} else if (is_local(url) && is_file(url)) {
+	} else if (is_local(url) && is_file(url) && !is_gitfile(url)) {
 		struct bundle_transport_data *data = xcalloc(1, sizeof(*data));
 		ret->data = data;
 		ret->get_refs_list = get_refs_from_bundle;
-- 
1.7.7.505.ga09f6