diff mbox series

[06/11] config: document remote.*.url/pushurl interaction

Message ID 20240614103005.GF222445@coredump.intra.peff.net (mailing list archive)
State Accepted
Commit bd1b88dc7aedb44561559e88cde0dd7bad78e2ae
Headers show
Series allow overriding remote.*.url | expand

Commit Message

Jeff King June 14, 2024, 10:30 a.m. UTC
The documentation for these keys gives a very terse definition and
points you to the fetch/push manpages. But from reading those pages it
was not at all obvious to me that:

  - these are keys that can be defined multiple times with meaningful
    behavior (especially remote.*.url)

  - the way that pushurl overrides url (the git-push page does mention
    that "pushurl defaults to url", but it is not immediately clear what
    a multi-valued url would do in that situation).

Let's try to summarize the current behavior.

Signed-off-by: Jeff King <peff@peff.net>
---
 Documentation/config/remote.txt | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Elijah Newren June 25, 2024, 5:34 p.m. UTC | #1
On Fri, Jun 14, 2024 at 3:43 AM Jeff King <peff@peff.net> wrote:
>
> The documentation for these keys gives a very terse definition and
> points you to the fetch/push manpages. But from reading those pages it
> was not at all obvious to me that:
>
>   - these are keys that can be defined multiple times with meaningful
>     behavior (especially remote.*.url)
>
>   - the way that pushurl overrides url (the git-push page does mention
>     that "pushurl defaults to url", but it is not immediately clear what
>     a multi-valued url would do in that situation).
>
> Let's try to summarize the current behavior.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
>  Documentation/config/remote.txt | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/config/remote.txt b/Documentation/config/remote.txt
> index 0678b4bcfe..eef0bf4f62 100644
> --- a/Documentation/config/remote.txt
> +++ b/Documentation/config/remote.txt
> @@ -5,10 +5,16 @@ remote.pushDefault::
>
>  remote.<name>.url::
>         The URL of a remote repository.  See linkgit:git-fetch[1] or
> -       linkgit:git-push[1].
> +       linkgit:git-push[1]. A configured remote can have multiple URLs;
> +       in this case the first is used for fetching, and all are used
> +       for pushing (assuming no `remote.<name>.pushurl` is defined).
>
>  remote.<name>.pushurl::
>         The push URL of a remote repository.  See linkgit:git-push[1].
> +       If a `pushurl` option is present in a configured remote, it
> +       is used for pushing instead of `remote.<name>.url`. A configured
> +       remote can have multiple push URLs; in this case a push goes to
> +       all of them.
>
>  remote.<name>.proxy::
>         For remotes that require curl (http, https and ftp), the URL to
> --
> 2.45.2.937.g0bcb3c087a

I was unaware of these facts prior to reading this series, and I've
read the documentation multiple times and occasionally even glanced at
nearby code.  So, definitely a welcome documentation addition.
diff mbox series

Patch

diff --git a/Documentation/config/remote.txt b/Documentation/config/remote.txt
index 0678b4bcfe..eef0bf4f62 100644
--- a/Documentation/config/remote.txt
+++ b/Documentation/config/remote.txt
@@ -5,10 +5,16 @@  remote.pushDefault::
 
 remote.<name>.url::
 	The URL of a remote repository.  See linkgit:git-fetch[1] or
-	linkgit:git-push[1].
+	linkgit:git-push[1]. A configured remote can have multiple URLs;
+	in this case the first is used for fetching, and all are used
+	for pushing (assuming no `remote.<name>.pushurl` is defined).
 
 remote.<name>.pushurl::
 	The push URL of a remote repository.  See linkgit:git-push[1].
+	If a `pushurl` option is present in a configured remote, it
+	is used for pushing instead of `remote.<name>.url`. A configured
+	remote can have multiple push URLs; in this case a push goes to
+	all of them.
 
 remote.<name>.proxy::
 	For remotes that require curl (http, https and ftp), the URL to