On Wed, 27 Jan 2010, Ilari Liusvaara wrote: > On Wed, Jan 27, 2010 at 11:49:02AM -0500, Daniel Barkalow wrote: > > On Wed, 27 Jan 2010, Ilari Liusvaara wrote: > > > > > On Wed, Jan 27, 2010 at 12:18:35PM +0100, Tor Arvid Lund wrote: > > > > > > > Then, I did 'git fetch', and got a seg fault. I got around it by > > > > commenting out a line: > > > > > > > > diff --git a/transport.c b/transport.c > > > > index 7714fdb..5b404f7 100644 > > > > --- a/transport.c > > > > +++ b/transport.c > > > > @@ -924,7 +924,7 @@ struct transport *transport_get(struct remote > > > > *remote, const char *url) > > > > ret->url = url; > > > > > > > > /* In case previous URL had helper forced, reset it. */ > > > > - remote->foreign_vcs = NULL; > > > > +/* remote->foreign_vcs = NULL;*/ > > > > > > > > /* maybe it is a foreign URL? */ > > > > if (url) { > > > > > > > > > > Hmm... And just commenting out that line will break case if you have > > > push URL using remote helpers and second one for same remote that > > > doesn't. > > > > > > I'll look into that issue. > > > > I think that field should only be used for things like: > > > > [remote "foo"] > > vcs = something > > ... > > > > and the case where the helper is inferred from the URL shouldn't use a > > field on the remote, but be passing the information around in function > > arguments. A field of the struct remote only really makes sense with > > information that applies to the whole remote. > > Why that 'remote->foreign_vcs = NULL;' is there is the following case: > > [remote "origin"] > url = gits::git://[@/tmp/gits]/git-d2 > url = ssh://repo.or.cz/srv/git/git-daemon2.git > > The first URL is handled by 'gits' helper (as it should). But without > resetting the helper, it tries to pass that ssh:// URL to 'gits' helper > too (instead of handling it internally). > > But, that reset didn't take the vcs setting into account. Yes, but the first URL should be directed to the 'gits' helper without setting remote->foreign_vcs. That is, instead of setting remote->foreign_vcs, you should just call transport_helper_init(ret, xstrndup(url, p - url)); -Daniel *This .sig left intentionally blank* -- 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