Re: [PATCH not-for-mainline] Implement git-vcs-p4
- From
Daniel Barkalow <barkalow@iabervon.org>
- Date
- Jan 27, 2010, 17:28 UTC
- Message-ID
- <alpine.LNX.2.00.1001271218360.14365@iabervon.org>
- In-Reply-To
- <20100127171426.GA20820@Knoppix>
On Wed, 27 Jan 2010, Ilari Liusvaara wrote:
Show 52 quoted lines
> 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*