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. -Ilari -- 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