remote.<remote>.vcs causes remote->foreign_vcs to be set on entry to transport_get(). Unfortunately, the code assumed that any such entry is stale from previous round. Resetting after starting the remote helper avoids that case (it isn't likely anyone is using VCS setting and multiple push URLs, as VCS setting is meant for non-URL-based helpers). Signed-off-by: Ilari Liusvaara <ilari.liusvaara@xxxxxxxxxxx> --- transport.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) Tor, does this also fix the segfault for you? This might work without breaking some multiple-URL cases (just commenting out the reset will break them). diff --git a/transport.c b/transport.c index 7714fdb..76b22e5 100644 --- a/transport.c +++ b/transport.c @@ -923,9 +923,6 @@ struct transport *transport_get(struct remote *remote, const char *url) url = remote->url[0]; ret->url = url; - /* In case previous URL had helper forced, reset it. */ - remote->foreign_vcs = NULL; - /* maybe it is a foreign URL? */ if (url) { const char *p = url; @@ -938,6 +935,7 @@ struct transport *transport_get(struct remote *remote, const char *url) if (remote && remote->foreign_vcs) { transport_helper_init(ret, remote->foreign_vcs); + remote->foreign_vcs = NULL; } else if (!prefixcmp(url, "rsync:")) { ret->get_refs_list = get_refs_via_rsync; ret->fetch = fetch_objs_via_rsync; -- 1.7.0.rc0.19.gd681a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html