Remembering which http remotes require authentication
- From
M Hickford <mirth.hickford@gmail.com>
- Date
- Jun 12, 2023, 06:47 UTC
- Message-ID
- <CAGJzqsnkH_dtv-CGsSFJ8K0kXKBf1+QQqy=MEw-Vq9XaEqr=AQ@mail.gmail.com>
Most http remotes require authentication to push. Private repositories also require authentication to fetch.
If I understand correctly, http_request_reauth [1] first makes an unauthenticated http request. If this fails with error 401 Unauthorized, then Git retries with authentication. This avoids potentially expensive `credential fill` unless necessary. (`credential fill` may be fast, slow or even require user input)
Could Git remember which remotes require authentication for which operations? On high-latency networks such as 3G or satellite connections [2], skipping a doomed unauthenticated request could potentially halve the time taken for some commands.
A complication: if a repository changed from private to public, Git would continue to authenticate when no longer necessary. A solution could be to remember to skip the unauthenticated request for a limited amount of time, or a maximum number of requests, before rechecking.
[1] https://github.com/git/git/blob/fe86abd7511a9a6862d5706c6fa1d9b57a63ba09/http.c#L2123-L2169 [2] https://hpbn.co/primer-on-latency-and-bandwidth/