git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Christian Couder <christian.couder@gmail.com>
Cc: git@vger.kernel.org,  Jeff King <peff@peff.net>,
	 Patrick Steinhardt <ps@pks.im>,  Taylor Blau <me@ttaylorr.com>,
	 Eric Sunshine <sunshine@sunshineco.com>,
	 Karthik Nayak <karthik.188@gmail.com>,
	Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>,
	 "brian m . carlson" <sandals@crustytoothpaste.net>,
	 "Randall S . Becker" <rsbecker@nexbridge.com>,
	 Christian Couder <chriscool@tuxfamily.org>
Subject: Re: [PATCH v3] promisor-remote: fix segfault when remote URL is missing
Date: Thu, 13 Mar 2025 09:40:25 -0700	[thread overview]
Message-ID: <xmqqfrjgq3ye.fsf@gitster.g> (raw)
In-Reply-To: <CAP8UFD0QqUG5Gu-XxKi58sEA7VfSJk4gy9hb_93dCw+2QMABYA@mail.gmail.com> (Christian Couder's message of "Thu, 13 Mar 2025 11:39:58 +0100")

Christian Couder <christian.couder@gmail.com> writes:

> It could happen that the server, the client and the common promisor
> remote are all on the same filesystem. Then it would make sense for
> both the server and the client to rely on just the remote name,
> without any URL configured, to access the promisor remote. So if we
> want things to work in this case, then I think the server should
> advertise the remote name in the "url=" field.

Meaning the server and all the clients share the short-and-sweet
string that is suitable as a remote nickname (i.e. something you the
client driver would type to "git fetch" command) as a pathname that
is relative to the current working directory, and because the server
and these clients must refer to the same repository using this
mechanism, this in turn means that the server and all the clients
share the same current working directory?

It may be possible, but would that make _any_ practical sense?  I
doubt it.  I would understand perfectly well that the local single
machine situation as a good justification to use file:// URL in such
a setting, but not for the r->name fallback.

>> What other uses do the name/url vectors prepared by
>> promisor_info_vecs() have?  Is it that we use them only to advertise
>> with this code, and then match with what they advertise?
>
> Yes, I think so.
> ...
> Other call sites don't use promisor_info_vecs(). It was introduced by
> the lop patch series which doesn't change how other code gets the
> remote names and URLs.

Then it should be simpler to remove r->name entries at the source in
that function, than having to filter it from the strvec whenever the
strvec elements are used.

>> ... would it be so different to pass an empty string as to pass a
>> misspelt URL received from the other end?  Wouldn't the end result
>> the same (i.e., we thought we had a URL usable as a promisor remote,
>> but it turns out that we cannot reach it)?
>
> Perhaps but I think it would be weird if URLs are matching when they
> are empty on both sides. I think it makes more sense and is more
> helpful to warn with a clear error message and just reject the remote
> if any of the URL is empty.

Smells like over-engineering for nonexisting case to me.

>> The 'i' was obtained by calling remote_nick_find(), which uses
>> strcasecmp() to find named remote (which I doubt it is a sensible
>> design by the way).  This code should be consistent with whatever
>> comparison used there.
>
> I think comparing remote names case insensitively is fair. It's likely
> to just make things a bit easier for users.

Meaning it makes it impossible to have two remotes with nicknames
that are different in case?

Because the "[remote "nick"] fetch = ..." configuration variables
have the nickname in the second part, the nicknames are case
insensitive, unlike the first and the third component (i.e.
"remote.origin.fetch" and "Remote.origin.FETCH" are the same thing,
but "remote.Origin.fetch" and "remote.origin.fetch" are different).

  reply	other threads:[~2025-03-13 16:40 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-10  7:40 [PATCH] promisor-remote: fix segfault when remote URL is missing Christian Couder
2025-03-10 16:29 ` Junio C Hamano
2025-03-11 15:24   ` Christian Couder
2025-03-11 16:57     ` Junio C Hamano
2025-03-11 15:24 ` [PATCH v2] " Christian Couder
2025-03-11 16:59   ` Junio C Hamano
2025-03-12 11:48     ` Christian Couder
2025-03-11 20:48   ` Junio C Hamano
2025-03-12 11:47     ` Christian Couder
2025-03-11 23:06   ` Jeff King
2025-03-11 23:36     ` Junio C Hamano
2025-03-12 11:47     ` Christian Couder
2025-03-12 11:46   ` [PATCH v3] " Christian Couder
2025-03-12 17:02     ` Junio C Hamano
2025-03-13 10:39       ` Christian Couder
2025-03-13 16:40         ` Junio C Hamano [this message]
2025-03-14 14:09           ` Christian Couder
2025-03-14 17:28             ` Junio C Hamano
2025-03-13 10:38     ` [PATCH v4] " Christian Couder
2025-03-13 16:28       ` Junio C Hamano
2025-03-13 17:23         ` Junio C Hamano
2025-03-14 14:10         ` Christian Couder
2025-03-14 14:12       ` [PATCH v5 0/3] "promisor-remote" capability fixes Christian Couder
2025-03-14 14:12         ` [PATCH v5 1/3] promisor-remote: fix segfault when remote URL is missing Christian Couder
2025-03-14 18:59           ` Junio C Hamano
2025-03-18 11:03             ` Christian Couder
2025-03-14 14:12         ` [PATCH v5 2/3] promisor-remote: fix possible issue when no URL is advertised Christian Couder
2025-03-14 14:12         ` [PATCH v5 3/3] promisor-remote: compare remote names case sensitively Christian Couder
2025-03-14 17:28           ` Junio C Hamano
2025-03-18 11:04             ` Christian Couder
2025-03-18 11:00         ` [PATCH v6 0/4] "promisor-remote" capability fixes Christian Couder
2025-03-18 11:00           ` [PATCH v6 1/4] t5710: arrange to delete the client before cloning Christian Couder
2025-03-18 11:00           ` [PATCH v6 2/4] promisor-remote: fix segfault when remote URL is missing Christian Couder
2025-03-18 11:00           ` [PATCH v6 3/4] promisor-remote: fix possible issue when no URL is advertised Christian Couder
2025-03-18 11:00           ` [PATCH v6 4/4] promisor-remote: compare remote names case sensitively Christian Couder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqfrjgq3ye.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=chriscool@tuxfamily.org \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=karthik.188@gmail.com \
    --cc=kristofferhaugsbakk@fastmail.com \
    --cc=me@ttaylorr.com \
    --cc=peff@peff.net \
    --cc=ps@pks.im \
    --cc=rsbecker@nexbridge.com \
    --cc=sandals@crustytoothpaste.net \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).